diff --git a/DOM.cabal b/DOM.cabal
new file mode 100644
--- /dev/null
+++ b/DOM.cabal
@@ -0,0 +1,152 @@
+-- DOM.cabal is generated automatically: do not edit
+Name: DOM
+Build-Type: Simple
+Version: 2.0.0
+Synopsis: DOM Level 2 bindings for the WebBits package.
+Description:
+   This package provides monadic smart constructors for Javascript syntax representation
+   implemented in the "WebBits" package. Most of this package's code was autogenerated from IDL files
+   available from the Web Consortium. See e. g. 
+   <http://www.w3.org/TR/DOM-Level-2-Core/idl-definitions.html>
+   These constructors help generate WebBits representation of Javascript code that works with
+   methods and attributes of DOM objects in typesafe manner using monadic notation of Haskell.
+   .
+   See documentation for the "Data.DOM" module for more information and a brief usage example.
+   .
+   In the package version number, the version major reflects the level of DOM specification
+   for which bindings are provided.
+License: BSD3
+License-File: LICENSE
+Category: Web
+Maintainer: Dmitry Golubovsky <golubovsky@gmail.com>
+Build-depends: base >= 3, mtl >= 1.1.0.0, WebBits >= 0.11.0
+Exposed-modules:
+   Data.DOM.Css,
+   Data.DOM.CSS2Properties,
+   Data.DOM.CSSCharsetRule,
+   Data.DOM.CSSFontFaceRule,
+   Data.DOM.CSSImportRule,
+   Data.DOM.CSSMediaRule,
+   Data.DOM.CSSPageRule,
+   Data.DOM.CSSPrimitiveValue,
+   Data.DOM.CSSRule,
+   Data.DOM.CSSRuleList,
+   Data.DOM.CSSStyleDeclaration,
+   Data.DOM.CSSStyleRule,
+   Data.DOM.CSSStyleSheet,
+   Data.DOM.CSSValue,
+   Data.DOM.CSSValueList,
+   Data.DOM.Counter,
+   Data.DOM.DOMImplementationCSS,
+   Data.DOM.DocumentCSS,
+   Data.DOM.ElementCSSInlineStyle,
+   Data.DOM.RGBColor,
+   Data.DOM.Rect,
+   Data.DOM.ViewCSS,
+   Data.DOM.Dom,
+   Data.DOM.Attr,
+   Data.DOM.CharacterData,
+   Data.DOM.DOMImplementation,
+   Data.DOM.Document,
+   Data.DOM.DocumentType,
+   Data.DOM.Element,
+   Data.DOM.Entity,
+   Data.DOM.NamedNodeMap,
+   Data.DOM.Node,
+   Data.DOM.NodeList,
+   Data.DOM.Notation,
+   Data.DOM.ProcessingInstruction,
+   Data.DOM.Text,
+   Data.DOM.Events,
+   Data.DOM.DocumentEvent,
+   Data.DOM.Event,
+   Data.DOM.EventListener,
+   Data.DOM.EventTarget,
+   Data.DOM.KeyEvent,
+   Data.DOM.KeyboardEvent,
+   Data.DOM.MouseEvent,
+   Data.DOM.MutationEvent,
+   Data.DOM.UIEvent,
+   Data.DOM.Html2,
+   Data.DOM.HTMLAnchorElement,
+   Data.DOM.HTMLAppletElement,
+   Data.DOM.HTMLAreaElement,
+   Data.DOM.HTMLBRElement,
+   Data.DOM.HTMLBaseElement,
+   Data.DOM.HTMLBaseFontElement,
+   Data.DOM.HTMLBodyElement,
+   Data.DOM.HTMLButtonElement,
+   Data.DOM.HTMLCollection,
+   Data.DOM.HTMLDListElement,
+   Data.DOM.HTMLDirectoryElement,
+   Data.DOM.HTMLDivElement,
+   Data.DOM.HTMLDocument,
+   Data.DOM.HTMLElement,
+   Data.DOM.HTMLFieldSetElement,
+   Data.DOM.HTMLFontElement,
+   Data.DOM.HTMLFormElement,
+   Data.DOM.HTMLFrameElement,
+   Data.DOM.HTMLFrameSetElement,
+   Data.DOM.HTMLHRElement,
+   Data.DOM.HTMLHeadElement,
+   Data.DOM.HTMLHeadingElement,
+   Data.DOM.HTMLHtmlElement,
+   Data.DOM.HTMLIFrameElement,
+   Data.DOM.HTMLImageElement,
+   Data.DOM.HTMLInputElement,
+   Data.DOM.HTMLIsIndexElement,
+   Data.DOM.HTMLLIElement,
+   Data.DOM.HTMLLabelElement,
+   Data.DOM.HTMLLegendElement,
+   Data.DOM.HTMLLinkElement,
+   Data.DOM.HTMLMapElement,
+   Data.DOM.HTMLMenuElement,
+   Data.DOM.HTMLMetaElement,
+   Data.DOM.HTMLModElement,
+   Data.DOM.HTMLOListElement,
+   Data.DOM.HTMLObjectElement,
+   Data.DOM.HTMLOptGroupElement,
+   Data.DOM.HTMLOptionElement,
+   Data.DOM.HTMLOptionsCollection,
+   Data.DOM.HTMLParagraphElement,
+   Data.DOM.HTMLParamElement,
+   Data.DOM.HTMLPreElement,
+   Data.DOM.HTMLQuoteElement,
+   Data.DOM.HTMLScriptElement,
+   Data.DOM.HTMLSelectElement,
+   Data.DOM.HTMLStyleElement,
+   Data.DOM.HTMLTableCaptionElement,
+   Data.DOM.HTMLTableCellElement,
+   Data.DOM.HTMLTableColElement,
+   Data.DOM.HTMLTableElement,
+   Data.DOM.HTMLTableRowElement,
+   Data.DOM.HTMLTableSectionElement,
+   Data.DOM.HTMLTextAreaElement,
+   Data.DOM.HTMLTitleElement,
+   Data.DOM.HTMLUListElement,
+   Data.DOM.Ranges,
+   Data.DOM.DocumentRange,
+   Data.DOM.Range,
+   Data.DOM.Stylesheets,
+   Data.DOM.DocumentStyle,
+   Data.DOM.LinkStyle,
+   Data.DOM.MediaList,
+   Data.DOM.StyleSheet,
+   Data.DOM.StyleSheetList,
+   Data.DOM.Traversal,
+   Data.DOM.DocumentTraversal,
+   Data.DOM.NodeFilter,
+   Data.DOM.NodeIterator,
+   Data.DOM.TreeWalker,
+   Data.DOM.Views,
+   Data.DOM.AbstractView,
+   Data.DOM.DocumentView,
+   Data.DOM.WBTypes,
+   Data.DOM,
+   Data.DOM.WindowObj,
+   Data.DOM.DocumentWindow,
+   Data.DOM.EmbeddingElement,
+   Data.DOM.Location,
+   Data.DOM.Window,
+   Data.DOM.XMLHTTP,
+   Data.DOM.XMLHttpRequest
diff --git a/Data/DOM.hs b/Data/DOM.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM.hs
@@ -0,0 +1,190 @@
+
+------------------------------------------------------------------
+-- |
+-- Module      :  Data.DOM
+-- Copyright   :  (c) Dmitry Golubovsky, 2009
+-- License     :  BSD-style
+-- 
+-- Maintainer  :  golubovsky@gmail.com
+-- Stability   :  experimental
+-- Portability :  portable
+-- 
+-- This module will most likely be imported by any Haskell program that uses DOM.
+-- Other modules from Data.DOM namespace are to be imported as needed, sometimes
+-- qualified because there are some name clashes in attributes and methods across
+-- the DOM interfaces.
+--
+-- Below is an example of Haskell code which generates Javascript to display
+-- traditional @Hello World@. This example shows that even a simplest 
+-- "Control.Monad.Identity" will do. Of course, a more sofisticated Monad
+-- might provide more benefits, such as assigning some of expressions to
+-- Javascript variables to share and prevent repeated evaluation, 
+-- automatic declaration of functions, etc.
+-- 
+-- @
+-- module Main where
+-- import "WebBits.JavaScript"
+-- import "Control.Monad"
+-- import "Control.Monad.Identity"
+-- import "Data.DOM"
+-- import "Data.DOM.Dom"
+-- import "Data.DOM.Node"
+-- import "Data.DOM.HTMLDocument"
+-- main = 'putStrLn' '$' 'show' '$' pp '$' 
+--   'FunctionStmt' undefined ('Id' undefined \"main\") [] 
+--     ('ExprStmt' undefined '$' 'runIdentity' q)
+-- q = do
+--   d <- 'htmlDocument'
+--   t <- 'mkText' ('string' \"Hello World\") d
+--   b <- 'getm'body' d
+--   'addChild' t b
+-- @
+--
+-- Below is Javascript generated by this example. All expressions just nest
+-- where necessary, and method calls may be chained.
+--
+-- @ 
+-- function main()
+-- \{
+-- window.document.body.appendChild(window.document.createTextNode(\"Hello World\"));
+-- \}
+-- @
+------------------------------------------------------------------
+
+module Data.DOM (
+  -- * Module Data.DOM.WBTypes re-exported for convenience
+  module Data.DOM.WBTypes
+  -- * Additional DOM support functions
+ ,window
+ ,document
+ ,htmlDocument
+ ,documentBody
+ ,documentHead
+ ,inlineStyle
+ ,inlineStyleDecl
+ ,mkText
+ ,addChild
+  -- * Functions to construct Javascript values
+ ,string
+ ,number
+ ,bool
+ ,true
+ ,false
+) where
+
+import Control.Monad
+import Data.DOM.WBTypes
+import Data.DOM.WindowObj
+import Data.DOM.Window
+import Data.DOM.Dom
+import Data.DOM.Html2
+import Data.DOM.Css
+import Data.DOM.Node
+import Data.DOM.Document
+import Data.DOM.HTMLDocument
+import WebBits.JavaScript
+
+-- | Access the global Window object.
+
+window :: (Monad m) => m (Expression TWindow)
+
+window = return $ VarRef TWindow (Id TWindow "window")
+
+-- | Access the current document. This indeed should be made through the
+-- Window interface, but current (incomplete) specification does not
+-- provide an easy way for that.
+
+document :: (Monad m) => m (Expression TDocument)
+
+document = return $ VarRef TDocument (Id TDocument "window.document")
+
+-- | Same as above, using the HTMLDocument interface.
+
+htmlDocument :: (Monad m) => m (Expression THTMLDocument)
+
+htmlDocument = return $ VarRef THTMLDocument (Id THTMLDocument "window.document")
+
+-- | A maker function for a TEXT element.
+
+mkText :: (Monad mn, CDocument this) => 
+   Expression String -> Expression this -> mn (Expression TText)
+
+mkText = createTextNode
+
+-- | Same as 'appendChild', but with type signature reflecting that returned
+-- value is the node added.
+
+addChild :: (Monad m, CNode c, CNode p) => Expression c -> Expression p -> m (Expression c)
+
+addChild = appendChild
+
+-- | Access the @<BODY>@ node of the current HTML document. Same as 'get\'body', but with
+-- proper type of the returned value.
+
+documentBody ::  (Monad mn, CHTMLDocument this) => 
+  Expression this -> mn (Expression THTMLBodyElement)
+
+documentBody = get'body
+
+-- | Access the @<HEAD>@ node of the current HTML document.
+
+documentHead ::
+          (Monad mn, CHTMLDocument this) =>
+            Expression this -> mn (Expression THTMLHeadElement)
+documentHead thisp
+  = do let et = undefined :: THTMLHeadElement
+       let r = DotRef et (thisp /\ et) (Id et "head")
+       return r
+
+-- |Obtain an inline style ('TCSS2Properties') interface of an object
+
+inlineStyle ::
+          (Monad mn, CHTMLElement this) =>
+            Expression this -> mn (Expression TCSS2Properties)
+inlineStyle thisp
+  = do let et = undefined :: TCSS2Properties
+       let r = DotRef et (thisp /\ et) (Id et "style")
+       return r
+
+-- |Obtain an inline style ('TCSSStyleDeclaration') interface of an object
+
+inlineStyleDecl ::
+          (Monad mn, CHTMLElement this) =>
+            Expression this -> mn (Expression TCSSStyleDeclaration)
+inlineStyleDecl thisp
+  = do let et = undefined :: TCSSStyleDeclaration
+       let r = DotRef et (thisp /\ et) (Id et "style")
+       return r
+
+
+-- | Create a Javascript string literal out of a string.
+
+string :: String -> Expression String
+
+string s = StringLit s s
+
+-- | Create a Javascript numeric literal out of a numeric value.
+
+number :: (Integral n) => n -> Expression Double
+
+number n = let d = fromIntegral n in NumLit d d
+
+-- | Create a Javascript boolean literal out of a Boolean.
+
+bool :: Bool -> Expression Bool
+
+bool b = BoolLit b b
+
+-- | Javascript True value
+
+true :: Expression Bool
+
+true = bool True
+
+-- | Javascript False value
+
+false :: Expression Bool
+
+false = bool False
+
+
diff --git a/Data/DOM/AbstractView.hs b/Data/DOM/AbstractView.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/AbstractView.hs
@@ -0,0 +1,22 @@
+
+module Data.DOM.AbstractView (get'document, getm'document) where
+import Data.DOM.Views
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+get'document ::
+             (Monad mn, CAbstractView this, CDocumentView zz) =>
+               Expression this -> mn (Expression zz)
+get'document thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "document")
+       return r
+ 
+getm'document ::
+              (Monad mn, CAbstractView this) =>
+                Expression this -> mn (Expression TDocumentView)
+getm'document = get'document
+
diff --git a/Data/DOM/Attr.hs b/Data/DOM/Attr.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/Attr.hs
@@ -0,0 +1,62 @@
+
+module Data.DOM.Attr
+       (get'name, getm'name, get'specified, getm'specified, set'value,
+        get'value, getm'value, get'ownerElement, getm'ownerElement)
+       where
+import Data.DOM.Dom
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Document (createElement)
+ 
+get'name ::
+         (Monad mn, CAttr this) => Expression this -> mn (Expression String)
+get'name thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "name")
+       return r
+ 
+getm'name ::
+          (Monad mn, CAttr this) => Expression this -> mn (Expression String)
+getm'name = get'name
+ 
+get'specified ::
+              (Monad mn, CAttr this) => Expression this -> mn (Expression Bool)
+get'specified thisp
+  = do let et = undefined :: Bool
+       let r = DotRef et (thisp /\ et) (Id et "specified")
+       return r
+ 
+getm'specified ::
+               (Monad mn, CAttr this) => Expression this -> mn (Expression Bool)
+getm'specified = get'specified
+ 
+set'value ::
+          (Monad mn, CAttr zz) =>
+            Expression String -> Expression zz -> mn (Expression zz)
+set'value = setjsProperty "value"
+ 
+get'value ::
+          (Monad mn, CAttr this) => Expression this -> mn (Expression String)
+get'value thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "value")
+       return r
+ 
+getm'value ::
+           (Monad mn, CAttr this) => Expression this -> mn (Expression String)
+getm'value = get'value
+ 
+get'ownerElement ::
+                 (Monad mn, CAttr this, CElement zz) =>
+                   Expression this -> mn (Expression zz)
+get'ownerElement thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "ownerElement")
+       return r
+ 
+getm'ownerElement ::
+                  (Monad mn, CAttr this) =>
+                    Expression this -> mn (Expression TElement)
+getm'ownerElement = get'ownerElement
+
diff --git a/Data/DOM/CSS2Properties.hs b/Data/DOM/CSS2Properties.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/CSS2Properties.hs
@@ -0,0 +1,2310 @@
+
+module Data.DOM.CSS2Properties
+       (set'azimuth, get'azimuth, getm'azimuth, set'background,
+        get'background, getm'background, set'backgroundAttachment,
+        get'backgroundAttachment, getm'backgroundAttachment,
+        set'backgroundColor, get'backgroundColor, getm'backgroundColor,
+        set'backgroundImage, get'backgroundImage, getm'backgroundImage,
+        set'backgroundPosition, get'backgroundPosition,
+        getm'backgroundPosition, set'backgroundRepeat,
+        get'backgroundRepeat, getm'backgroundRepeat, set'border,
+        get'border, getm'border, set'borderCollapse, get'borderCollapse,
+        getm'borderCollapse, set'borderColor, get'borderColor,
+        getm'borderColor, set'borderSpacing, get'borderSpacing,
+        getm'borderSpacing, set'borderStyle, get'borderStyle,
+        getm'borderStyle, set'borderTop, get'borderTop, getm'borderTop,
+        set'borderRight, get'borderRight, getm'borderRight,
+        set'borderBottom, get'borderBottom, getm'borderBottom,
+        set'borderLeft, get'borderLeft, getm'borderLeft,
+        set'borderTopColor, get'borderTopColor, getm'borderTopColor,
+        set'borderRightColor, get'borderRightColor, getm'borderRightColor,
+        set'borderBottomColor, get'borderBottomColor,
+        getm'borderBottomColor, set'borderLeftColor, get'borderLeftColor,
+        getm'borderLeftColor, set'borderTopStyle, get'borderTopStyle,
+        getm'borderTopStyle, set'borderRightStyle, get'borderRightStyle,
+        getm'borderRightStyle, set'borderBottomStyle,
+        get'borderBottomStyle, getm'borderBottomStyle, set'borderLeftStyle,
+        get'borderLeftStyle, getm'borderLeftStyle, set'borderTopWidth,
+        get'borderTopWidth, getm'borderTopWidth, set'borderRightWidth,
+        get'borderRightWidth, getm'borderRightWidth, set'borderBottomWidth,
+        get'borderBottomWidth, getm'borderBottomWidth, set'borderLeftWidth,
+        get'borderLeftWidth, getm'borderLeftWidth, set'borderWidth,
+        get'borderWidth, getm'borderWidth, set'bottom, get'bottom,
+        getm'bottom, set'captionSide, get'captionSide, getm'captionSide,
+        set'clear, get'clear, getm'clear, set'clip, get'clip, getm'clip,
+        set'color, get'color, getm'color, set'content, get'content,
+        getm'content, set'counterIncrement, get'counterIncrement,
+        getm'counterIncrement, set'counterReset, get'counterReset,
+        getm'counterReset, set'cue, get'cue, getm'cue, set'cueAfter,
+        get'cueAfter, getm'cueAfter, set'cueBefore, get'cueBefore,
+        getm'cueBefore, set'cursor, get'cursor, getm'cursor, set'direction,
+        get'direction, getm'direction, set'display, get'display,
+        getm'display, set'elevation, get'elevation, getm'elevation,
+        set'emptyCells, get'emptyCells, getm'emptyCells, set'cssFloat,
+        get'cssFloat, getm'cssFloat, set'font, get'font, getm'font,
+        set'fontFamily, get'fontFamily, getm'fontFamily, set'fontSize,
+        get'fontSize, getm'fontSize, set'fontSizeAdjust,
+        get'fontSizeAdjust, getm'fontSizeAdjust, set'fontStretch,
+        get'fontStretch, getm'fontStretch, set'fontStyle, get'fontStyle,
+        getm'fontStyle, set'fontVariant, get'fontVariant, getm'fontVariant,
+        set'fontWeight, get'fontWeight, getm'fontWeight, set'height,
+        get'height, getm'height, set'left, get'left, getm'left,
+        set'letterSpacing, get'letterSpacing, getm'letterSpacing,
+        set'lineHeight, get'lineHeight, getm'lineHeight, set'listStyle,
+        get'listStyle, getm'listStyle, set'listStyleImage,
+        get'listStyleImage, getm'listStyleImage, set'listStylePosition,
+        get'listStylePosition, getm'listStylePosition, set'listStyleType,
+        get'listStyleType, getm'listStyleType, set'margin, get'margin,
+        getm'margin, set'marginTop, get'marginTop, getm'marginTop,
+        set'marginRight, get'marginRight, getm'marginRight,
+        set'marginBottom, get'marginBottom, getm'marginBottom,
+        set'marginLeft, get'marginLeft, getm'marginLeft, set'markerOffset,
+        get'markerOffset, getm'markerOffset, set'marks, get'marks,
+        getm'marks, set'maxHeight, get'maxHeight, getm'maxHeight,
+        set'maxWidth, get'maxWidth, getm'maxWidth, set'minHeight,
+        get'minHeight, getm'minHeight, set'minWidth, get'minWidth,
+        getm'minWidth, set'orphans, get'orphans, getm'orphans, set'outline,
+        get'outline, getm'outline, set'outlineColor, get'outlineColor,
+        getm'outlineColor, set'outlineStyle, get'outlineStyle,
+        getm'outlineStyle, set'outlineWidth, get'outlineWidth,
+        getm'outlineWidth, set'overflow, get'overflow, getm'overflow,
+        set'padding, get'padding, getm'padding, set'paddingTop,
+        get'paddingTop, getm'paddingTop, set'paddingRight,
+        get'paddingRight, getm'paddingRight, set'paddingBottom,
+        get'paddingBottom, getm'paddingBottom, set'paddingLeft,
+        get'paddingLeft, getm'paddingLeft, set'page, get'page, getm'page,
+        set'pageBreakAfter, get'pageBreakAfter, getm'pageBreakAfter,
+        set'pageBreakBefore, get'pageBreakBefore, getm'pageBreakBefore,
+        set'pageBreakInside, get'pageBreakInside, getm'pageBreakInside,
+        set'pause, get'pause, getm'pause, set'pauseAfter, get'pauseAfter,
+        getm'pauseAfter, set'pauseBefore, get'pauseBefore,
+        getm'pauseBefore, set'pitch, get'pitch, getm'pitch, set'pitchRange,
+        get'pitchRange, getm'pitchRange, set'playDuring, get'playDuring,
+        getm'playDuring, set'position, get'position, getm'position,
+        set'quotes, get'quotes, getm'quotes, set'richness, get'richness,
+        getm'richness, set'right, get'right, getm'right, set'size,
+        get'size, getm'size, set'speak, get'speak, getm'speak,
+        set'speakHeader, get'speakHeader, getm'speakHeader,
+        set'speakNumeral, get'speakNumeral, getm'speakNumeral,
+        set'speakPunctuation, get'speakPunctuation, getm'speakPunctuation,
+        set'speechRate, get'speechRate, getm'speechRate, set'stress,
+        get'stress, getm'stress, set'tableLayout, get'tableLayout,
+        getm'tableLayout, set'textAlign, get'textAlign, getm'textAlign,
+        set'textDecoration, get'textDecoration, getm'textDecoration,
+        set'textIndent, get'textIndent, getm'textIndent, set'textShadow,
+        get'textShadow, getm'textShadow, set'textTransform,
+        get'textTransform, getm'textTransform, set'top, get'top, getm'top,
+        set'unicodeBidi, get'unicodeBidi, getm'unicodeBidi,
+        set'verticalAlign, get'verticalAlign, getm'verticalAlign,
+        set'visibility, get'visibility, getm'visibility, set'voiceFamily,
+        get'voiceFamily, getm'voiceFamily, set'volume, get'volume,
+        getm'volume, set'whiteSpace, get'whiteSpace, getm'whiteSpace,
+        set'widows, get'widows, getm'widows, set'width, get'width,
+        getm'width, set'wordSpacing, get'wordSpacing, getm'wordSpacing,
+        set'zIndex, get'zIndex, getm'zIndex)
+       where
+import Data.DOM.Css
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Views
+import Data.DOM.Stylesheets
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+set'azimuth ::
+            (Monad mn, CCSS2Properties zz) =>
+              Expression String -> Expression zz -> mn (Expression zz)
+set'azimuth = setjsProperty "azimuth"
+ 
+get'azimuth ::
+            (Monad mn, CCSS2Properties this) =>
+              Expression this -> mn (Expression String)
+get'azimuth thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "azimuth")
+       return r
+ 
+getm'azimuth ::
+             (Monad mn, CCSS2Properties this) =>
+               Expression this -> mn (Expression String)
+getm'azimuth = get'azimuth
+ 
+set'background ::
+               (Monad mn, CCSS2Properties zz) =>
+                 Expression String -> Expression zz -> mn (Expression zz)
+set'background = setjsProperty "background"
+ 
+get'background ::
+               (Monad mn, CCSS2Properties this) =>
+                 Expression this -> mn (Expression String)
+get'background thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "background")
+       return r
+ 
+getm'background ::
+                (Monad mn, CCSS2Properties this) =>
+                  Expression this -> mn (Expression String)
+getm'background = get'background
+ 
+set'backgroundAttachment ::
+                         (Monad mn, CCSS2Properties zz) =>
+                           Expression String -> Expression zz -> mn (Expression zz)
+set'backgroundAttachment = setjsProperty "backgroundAttachment"
+ 
+get'backgroundAttachment ::
+                         (Monad mn, CCSS2Properties this) =>
+                           Expression this -> mn (Expression String)
+get'backgroundAttachment thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "backgroundAttachment")
+       return r
+ 
+getm'backgroundAttachment ::
+                          (Monad mn, CCSS2Properties this) =>
+                            Expression this -> mn (Expression String)
+getm'backgroundAttachment = get'backgroundAttachment
+ 
+set'backgroundColor ::
+                    (Monad mn, CCSS2Properties zz) =>
+                      Expression String -> Expression zz -> mn (Expression zz)
+set'backgroundColor = setjsProperty "backgroundColor"
+ 
+get'backgroundColor ::
+                    (Monad mn, CCSS2Properties this) =>
+                      Expression this -> mn (Expression String)
+get'backgroundColor thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "backgroundColor")
+       return r
+ 
+getm'backgroundColor ::
+                     (Monad mn, CCSS2Properties this) =>
+                       Expression this -> mn (Expression String)
+getm'backgroundColor = get'backgroundColor
+ 
+set'backgroundImage ::
+                    (Monad mn, CCSS2Properties zz) =>
+                      Expression String -> Expression zz -> mn (Expression zz)
+set'backgroundImage = setjsProperty "backgroundImage"
+ 
+get'backgroundImage ::
+                    (Monad mn, CCSS2Properties this) =>
+                      Expression this -> mn (Expression String)
+get'backgroundImage thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "backgroundImage")
+       return r
+ 
+getm'backgroundImage ::
+                     (Monad mn, CCSS2Properties this) =>
+                       Expression this -> mn (Expression String)
+getm'backgroundImage = get'backgroundImage
+ 
+set'backgroundPosition ::
+                       (Monad mn, CCSS2Properties zz) =>
+                         Expression String -> Expression zz -> mn (Expression zz)
+set'backgroundPosition = setjsProperty "backgroundPosition"
+ 
+get'backgroundPosition ::
+                       (Monad mn, CCSS2Properties this) =>
+                         Expression this -> mn (Expression String)
+get'backgroundPosition thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "backgroundPosition")
+       return r
+ 
+getm'backgroundPosition ::
+                        (Monad mn, CCSS2Properties this) =>
+                          Expression this -> mn (Expression String)
+getm'backgroundPosition = get'backgroundPosition
+ 
+set'backgroundRepeat ::
+                     (Monad mn, CCSS2Properties zz) =>
+                       Expression String -> Expression zz -> mn (Expression zz)
+set'backgroundRepeat = setjsProperty "backgroundRepeat"
+ 
+get'backgroundRepeat ::
+                     (Monad mn, CCSS2Properties this) =>
+                       Expression this -> mn (Expression String)
+get'backgroundRepeat thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "backgroundRepeat")
+       return r
+ 
+getm'backgroundRepeat ::
+                      (Monad mn, CCSS2Properties this) =>
+                        Expression this -> mn (Expression String)
+getm'backgroundRepeat = get'backgroundRepeat
+ 
+set'border ::
+           (Monad mn, CCSS2Properties zz) =>
+             Expression String -> Expression zz -> mn (Expression zz)
+set'border = setjsProperty "border"
+ 
+get'border ::
+           (Monad mn, CCSS2Properties this) =>
+             Expression this -> mn (Expression String)
+get'border thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "border")
+       return r
+ 
+getm'border ::
+            (Monad mn, CCSS2Properties this) =>
+              Expression this -> mn (Expression String)
+getm'border = get'border
+ 
+set'borderCollapse ::
+                   (Monad mn, CCSS2Properties zz) =>
+                     Expression String -> Expression zz -> mn (Expression zz)
+set'borderCollapse = setjsProperty "borderCollapse"
+ 
+get'borderCollapse ::
+                   (Monad mn, CCSS2Properties this) =>
+                     Expression this -> mn (Expression String)
+get'borderCollapse thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "borderCollapse")
+       return r
+ 
+getm'borderCollapse ::
+                    (Monad mn, CCSS2Properties this) =>
+                      Expression this -> mn (Expression String)
+getm'borderCollapse = get'borderCollapse
+ 
+set'borderColor ::
+                (Monad mn, CCSS2Properties zz) =>
+                  Expression String -> Expression zz -> mn (Expression zz)
+set'borderColor = setjsProperty "borderColor"
+ 
+get'borderColor ::
+                (Monad mn, CCSS2Properties this) =>
+                  Expression this -> mn (Expression String)
+get'borderColor thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "borderColor")
+       return r
+ 
+getm'borderColor ::
+                 (Monad mn, CCSS2Properties this) =>
+                   Expression this -> mn (Expression String)
+getm'borderColor = get'borderColor
+ 
+set'borderSpacing ::
+                  (Monad mn, CCSS2Properties zz) =>
+                    Expression String -> Expression zz -> mn (Expression zz)
+set'borderSpacing = setjsProperty "borderSpacing"
+ 
+get'borderSpacing ::
+                  (Monad mn, CCSS2Properties this) =>
+                    Expression this -> mn (Expression String)
+get'borderSpacing thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "borderSpacing")
+       return r
+ 
+getm'borderSpacing ::
+                   (Monad mn, CCSS2Properties this) =>
+                     Expression this -> mn (Expression String)
+getm'borderSpacing = get'borderSpacing
+ 
+set'borderStyle ::
+                (Monad mn, CCSS2Properties zz) =>
+                  Expression String -> Expression zz -> mn (Expression zz)
+set'borderStyle = setjsProperty "borderStyle"
+ 
+get'borderStyle ::
+                (Monad mn, CCSS2Properties this) =>
+                  Expression this -> mn (Expression String)
+get'borderStyle thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "borderStyle")
+       return r
+ 
+getm'borderStyle ::
+                 (Monad mn, CCSS2Properties this) =>
+                   Expression this -> mn (Expression String)
+getm'borderStyle = get'borderStyle
+ 
+set'borderTop ::
+              (Monad mn, CCSS2Properties zz) =>
+                Expression String -> Expression zz -> mn (Expression zz)
+set'borderTop = setjsProperty "borderTop"
+ 
+get'borderTop ::
+              (Monad mn, CCSS2Properties this) =>
+                Expression this -> mn (Expression String)
+get'borderTop thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "borderTop")
+       return r
+ 
+getm'borderTop ::
+               (Monad mn, CCSS2Properties this) =>
+                 Expression this -> mn (Expression String)
+getm'borderTop = get'borderTop
+ 
+set'borderRight ::
+                (Monad mn, CCSS2Properties zz) =>
+                  Expression String -> Expression zz -> mn (Expression zz)
+set'borderRight = setjsProperty "borderRight"
+ 
+get'borderRight ::
+                (Monad mn, CCSS2Properties this) =>
+                  Expression this -> mn (Expression String)
+get'borderRight thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "borderRight")
+       return r
+ 
+getm'borderRight ::
+                 (Monad mn, CCSS2Properties this) =>
+                   Expression this -> mn (Expression String)
+getm'borderRight = get'borderRight
+ 
+set'borderBottom ::
+                 (Monad mn, CCSS2Properties zz) =>
+                   Expression String -> Expression zz -> mn (Expression zz)
+set'borderBottom = setjsProperty "borderBottom"
+ 
+get'borderBottom ::
+                 (Monad mn, CCSS2Properties this) =>
+                   Expression this -> mn (Expression String)
+get'borderBottom thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "borderBottom")
+       return r
+ 
+getm'borderBottom ::
+                  (Monad mn, CCSS2Properties this) =>
+                    Expression this -> mn (Expression String)
+getm'borderBottom = get'borderBottom
+ 
+set'borderLeft ::
+               (Monad mn, CCSS2Properties zz) =>
+                 Expression String -> Expression zz -> mn (Expression zz)
+set'borderLeft = setjsProperty "borderLeft"
+ 
+get'borderLeft ::
+               (Monad mn, CCSS2Properties this) =>
+                 Expression this -> mn (Expression String)
+get'borderLeft thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "borderLeft")
+       return r
+ 
+getm'borderLeft ::
+                (Monad mn, CCSS2Properties this) =>
+                  Expression this -> mn (Expression String)
+getm'borderLeft = get'borderLeft
+ 
+set'borderTopColor ::
+                   (Monad mn, CCSS2Properties zz) =>
+                     Expression String -> Expression zz -> mn (Expression zz)
+set'borderTopColor = setjsProperty "borderTopColor"
+ 
+get'borderTopColor ::
+                   (Monad mn, CCSS2Properties this) =>
+                     Expression this -> mn (Expression String)
+get'borderTopColor thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "borderTopColor")
+       return r
+ 
+getm'borderTopColor ::
+                    (Monad mn, CCSS2Properties this) =>
+                      Expression this -> mn (Expression String)
+getm'borderTopColor = get'borderTopColor
+ 
+set'borderRightColor ::
+                     (Monad mn, CCSS2Properties zz) =>
+                       Expression String -> Expression zz -> mn (Expression zz)
+set'borderRightColor = setjsProperty "borderRightColor"
+ 
+get'borderRightColor ::
+                     (Monad mn, CCSS2Properties this) =>
+                       Expression this -> mn (Expression String)
+get'borderRightColor thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "borderRightColor")
+       return r
+ 
+getm'borderRightColor ::
+                      (Monad mn, CCSS2Properties this) =>
+                        Expression this -> mn (Expression String)
+getm'borderRightColor = get'borderRightColor
+ 
+set'borderBottomColor ::
+                      (Monad mn, CCSS2Properties zz) =>
+                        Expression String -> Expression zz -> mn (Expression zz)
+set'borderBottomColor = setjsProperty "borderBottomColor"
+ 
+get'borderBottomColor ::
+                      (Monad mn, CCSS2Properties this) =>
+                        Expression this -> mn (Expression String)
+get'borderBottomColor thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "borderBottomColor")
+       return r
+ 
+getm'borderBottomColor ::
+                       (Monad mn, CCSS2Properties this) =>
+                         Expression this -> mn (Expression String)
+getm'borderBottomColor = get'borderBottomColor
+ 
+set'borderLeftColor ::
+                    (Monad mn, CCSS2Properties zz) =>
+                      Expression String -> Expression zz -> mn (Expression zz)
+set'borderLeftColor = setjsProperty "borderLeftColor"
+ 
+get'borderLeftColor ::
+                    (Monad mn, CCSS2Properties this) =>
+                      Expression this -> mn (Expression String)
+get'borderLeftColor thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "borderLeftColor")
+       return r
+ 
+getm'borderLeftColor ::
+                     (Monad mn, CCSS2Properties this) =>
+                       Expression this -> mn (Expression String)
+getm'borderLeftColor = get'borderLeftColor
+ 
+set'borderTopStyle ::
+                   (Monad mn, CCSS2Properties zz) =>
+                     Expression String -> Expression zz -> mn (Expression zz)
+set'borderTopStyle = setjsProperty "borderTopStyle"
+ 
+get'borderTopStyle ::
+                   (Monad mn, CCSS2Properties this) =>
+                     Expression this -> mn (Expression String)
+get'borderTopStyle thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "borderTopStyle")
+       return r
+ 
+getm'borderTopStyle ::
+                    (Monad mn, CCSS2Properties this) =>
+                      Expression this -> mn (Expression String)
+getm'borderTopStyle = get'borderTopStyle
+ 
+set'borderRightStyle ::
+                     (Monad mn, CCSS2Properties zz) =>
+                       Expression String -> Expression zz -> mn (Expression zz)
+set'borderRightStyle = setjsProperty "borderRightStyle"
+ 
+get'borderRightStyle ::
+                     (Monad mn, CCSS2Properties this) =>
+                       Expression this -> mn (Expression String)
+get'borderRightStyle thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "borderRightStyle")
+       return r
+ 
+getm'borderRightStyle ::
+                      (Monad mn, CCSS2Properties this) =>
+                        Expression this -> mn (Expression String)
+getm'borderRightStyle = get'borderRightStyle
+ 
+set'borderBottomStyle ::
+                      (Monad mn, CCSS2Properties zz) =>
+                        Expression String -> Expression zz -> mn (Expression zz)
+set'borderBottomStyle = setjsProperty "borderBottomStyle"
+ 
+get'borderBottomStyle ::
+                      (Monad mn, CCSS2Properties this) =>
+                        Expression this -> mn (Expression String)
+get'borderBottomStyle thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "borderBottomStyle")
+       return r
+ 
+getm'borderBottomStyle ::
+                       (Monad mn, CCSS2Properties this) =>
+                         Expression this -> mn (Expression String)
+getm'borderBottomStyle = get'borderBottomStyle
+ 
+set'borderLeftStyle ::
+                    (Monad mn, CCSS2Properties zz) =>
+                      Expression String -> Expression zz -> mn (Expression zz)
+set'borderLeftStyle = setjsProperty "borderLeftStyle"
+ 
+get'borderLeftStyle ::
+                    (Monad mn, CCSS2Properties this) =>
+                      Expression this -> mn (Expression String)
+get'borderLeftStyle thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "borderLeftStyle")
+       return r
+ 
+getm'borderLeftStyle ::
+                     (Monad mn, CCSS2Properties this) =>
+                       Expression this -> mn (Expression String)
+getm'borderLeftStyle = get'borderLeftStyle
+ 
+set'borderTopWidth ::
+                   (Monad mn, CCSS2Properties zz) =>
+                     Expression String -> Expression zz -> mn (Expression zz)
+set'borderTopWidth = setjsProperty "borderTopWidth"
+ 
+get'borderTopWidth ::
+                   (Monad mn, CCSS2Properties this) =>
+                     Expression this -> mn (Expression String)
+get'borderTopWidth thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "borderTopWidth")
+       return r
+ 
+getm'borderTopWidth ::
+                    (Monad mn, CCSS2Properties this) =>
+                      Expression this -> mn (Expression String)
+getm'borderTopWidth = get'borderTopWidth
+ 
+set'borderRightWidth ::
+                     (Monad mn, CCSS2Properties zz) =>
+                       Expression String -> Expression zz -> mn (Expression zz)
+set'borderRightWidth = setjsProperty "borderRightWidth"
+ 
+get'borderRightWidth ::
+                     (Monad mn, CCSS2Properties this) =>
+                       Expression this -> mn (Expression String)
+get'borderRightWidth thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "borderRightWidth")
+       return r
+ 
+getm'borderRightWidth ::
+                      (Monad mn, CCSS2Properties this) =>
+                        Expression this -> mn (Expression String)
+getm'borderRightWidth = get'borderRightWidth
+ 
+set'borderBottomWidth ::
+                      (Monad mn, CCSS2Properties zz) =>
+                        Expression String -> Expression zz -> mn (Expression zz)
+set'borderBottomWidth = setjsProperty "borderBottomWidth"
+ 
+get'borderBottomWidth ::
+                      (Monad mn, CCSS2Properties this) =>
+                        Expression this -> mn (Expression String)
+get'borderBottomWidth thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "borderBottomWidth")
+       return r
+ 
+getm'borderBottomWidth ::
+                       (Monad mn, CCSS2Properties this) =>
+                         Expression this -> mn (Expression String)
+getm'borderBottomWidth = get'borderBottomWidth
+ 
+set'borderLeftWidth ::
+                    (Monad mn, CCSS2Properties zz) =>
+                      Expression String -> Expression zz -> mn (Expression zz)
+set'borderLeftWidth = setjsProperty "borderLeftWidth"
+ 
+get'borderLeftWidth ::
+                    (Monad mn, CCSS2Properties this) =>
+                      Expression this -> mn (Expression String)
+get'borderLeftWidth thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "borderLeftWidth")
+       return r
+ 
+getm'borderLeftWidth ::
+                     (Monad mn, CCSS2Properties this) =>
+                       Expression this -> mn (Expression String)
+getm'borderLeftWidth = get'borderLeftWidth
+ 
+set'borderWidth ::
+                (Monad mn, CCSS2Properties zz) =>
+                  Expression String -> Expression zz -> mn (Expression zz)
+set'borderWidth = setjsProperty "borderWidth"
+ 
+get'borderWidth ::
+                (Monad mn, CCSS2Properties this) =>
+                  Expression this -> mn (Expression String)
+get'borderWidth thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "borderWidth")
+       return r
+ 
+getm'borderWidth ::
+                 (Monad mn, CCSS2Properties this) =>
+                   Expression this -> mn (Expression String)
+getm'borderWidth = get'borderWidth
+ 
+set'bottom ::
+           (Monad mn, CCSS2Properties zz) =>
+             Expression String -> Expression zz -> mn (Expression zz)
+set'bottom = setjsProperty "bottom"
+ 
+get'bottom ::
+           (Monad mn, CCSS2Properties this) =>
+             Expression this -> mn (Expression String)
+get'bottom thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "bottom")
+       return r
+ 
+getm'bottom ::
+            (Monad mn, CCSS2Properties this) =>
+              Expression this -> mn (Expression String)
+getm'bottom = get'bottom
+ 
+set'captionSide ::
+                (Monad mn, CCSS2Properties zz) =>
+                  Expression String -> Expression zz -> mn (Expression zz)
+set'captionSide = setjsProperty "captionSide"
+ 
+get'captionSide ::
+                (Monad mn, CCSS2Properties this) =>
+                  Expression this -> mn (Expression String)
+get'captionSide thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "captionSide")
+       return r
+ 
+getm'captionSide ::
+                 (Monad mn, CCSS2Properties this) =>
+                   Expression this -> mn (Expression String)
+getm'captionSide = get'captionSide
+ 
+set'clear ::
+          (Monad mn, CCSS2Properties zz) =>
+            Expression String -> Expression zz -> mn (Expression zz)
+set'clear = setjsProperty "clear"
+ 
+get'clear ::
+          (Monad mn, CCSS2Properties this) =>
+            Expression this -> mn (Expression String)
+get'clear thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "clear")
+       return r
+ 
+getm'clear ::
+           (Monad mn, CCSS2Properties this) =>
+             Expression this -> mn (Expression String)
+getm'clear = get'clear
+ 
+set'clip ::
+         (Monad mn, CCSS2Properties zz) =>
+           Expression String -> Expression zz -> mn (Expression zz)
+set'clip = setjsProperty "clip"
+ 
+get'clip ::
+         (Monad mn, CCSS2Properties this) =>
+           Expression this -> mn (Expression String)
+get'clip thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "clip")
+       return r
+ 
+getm'clip ::
+          (Monad mn, CCSS2Properties this) =>
+            Expression this -> mn (Expression String)
+getm'clip = get'clip
+ 
+set'color ::
+          (Monad mn, CCSS2Properties zz) =>
+            Expression String -> Expression zz -> mn (Expression zz)
+set'color = setjsProperty "color"
+ 
+get'color ::
+          (Monad mn, CCSS2Properties this) =>
+            Expression this -> mn (Expression String)
+get'color thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "color")
+       return r
+ 
+getm'color ::
+           (Monad mn, CCSS2Properties this) =>
+             Expression this -> mn (Expression String)
+getm'color = get'color
+ 
+set'content ::
+            (Monad mn, CCSS2Properties zz) =>
+              Expression String -> Expression zz -> mn (Expression zz)
+set'content = setjsProperty "content"
+ 
+get'content ::
+            (Monad mn, CCSS2Properties this) =>
+              Expression this -> mn (Expression String)
+get'content thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "content")
+       return r
+ 
+getm'content ::
+             (Monad mn, CCSS2Properties this) =>
+               Expression this -> mn (Expression String)
+getm'content = get'content
+ 
+set'counterIncrement ::
+                     (Monad mn, CCSS2Properties zz) =>
+                       Expression String -> Expression zz -> mn (Expression zz)
+set'counterIncrement = setjsProperty "counterIncrement"
+ 
+get'counterIncrement ::
+                     (Monad mn, CCSS2Properties this) =>
+                       Expression this -> mn (Expression String)
+get'counterIncrement thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "counterIncrement")
+       return r
+ 
+getm'counterIncrement ::
+                      (Monad mn, CCSS2Properties this) =>
+                        Expression this -> mn (Expression String)
+getm'counterIncrement = get'counterIncrement
+ 
+set'counterReset ::
+                 (Monad mn, CCSS2Properties zz) =>
+                   Expression String -> Expression zz -> mn (Expression zz)
+set'counterReset = setjsProperty "counterReset"
+ 
+get'counterReset ::
+                 (Monad mn, CCSS2Properties this) =>
+                   Expression this -> mn (Expression String)
+get'counterReset thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "counterReset")
+       return r
+ 
+getm'counterReset ::
+                  (Monad mn, CCSS2Properties this) =>
+                    Expression this -> mn (Expression String)
+getm'counterReset = get'counterReset
+ 
+set'cue ::
+        (Monad mn, CCSS2Properties zz) =>
+          Expression String -> Expression zz -> mn (Expression zz)
+set'cue = setjsProperty "cue"
+ 
+get'cue ::
+        (Monad mn, CCSS2Properties this) =>
+          Expression this -> mn (Expression String)
+get'cue thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "cue")
+       return r
+ 
+getm'cue ::
+         (Monad mn, CCSS2Properties this) =>
+           Expression this -> mn (Expression String)
+getm'cue = get'cue
+ 
+set'cueAfter ::
+             (Monad mn, CCSS2Properties zz) =>
+               Expression String -> Expression zz -> mn (Expression zz)
+set'cueAfter = setjsProperty "cueAfter"
+ 
+get'cueAfter ::
+             (Monad mn, CCSS2Properties this) =>
+               Expression this -> mn (Expression String)
+get'cueAfter thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "cueAfter")
+       return r
+ 
+getm'cueAfter ::
+              (Monad mn, CCSS2Properties this) =>
+                Expression this -> mn (Expression String)
+getm'cueAfter = get'cueAfter
+ 
+set'cueBefore ::
+              (Monad mn, CCSS2Properties zz) =>
+                Expression String -> Expression zz -> mn (Expression zz)
+set'cueBefore = setjsProperty "cueBefore"
+ 
+get'cueBefore ::
+              (Monad mn, CCSS2Properties this) =>
+                Expression this -> mn (Expression String)
+get'cueBefore thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "cueBefore")
+       return r
+ 
+getm'cueBefore ::
+               (Monad mn, CCSS2Properties this) =>
+                 Expression this -> mn (Expression String)
+getm'cueBefore = get'cueBefore
+ 
+set'cursor ::
+           (Monad mn, CCSS2Properties zz) =>
+             Expression String -> Expression zz -> mn (Expression zz)
+set'cursor = setjsProperty "cursor"
+ 
+get'cursor ::
+           (Monad mn, CCSS2Properties this) =>
+             Expression this -> mn (Expression String)
+get'cursor thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "cursor")
+       return r
+ 
+getm'cursor ::
+            (Monad mn, CCSS2Properties this) =>
+              Expression this -> mn (Expression String)
+getm'cursor = get'cursor
+ 
+set'direction ::
+              (Monad mn, CCSS2Properties zz) =>
+                Expression String -> Expression zz -> mn (Expression zz)
+set'direction = setjsProperty "direction"
+ 
+get'direction ::
+              (Monad mn, CCSS2Properties this) =>
+                Expression this -> mn (Expression String)
+get'direction thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "direction")
+       return r
+ 
+getm'direction ::
+               (Monad mn, CCSS2Properties this) =>
+                 Expression this -> mn (Expression String)
+getm'direction = get'direction
+ 
+set'display ::
+            (Monad mn, CCSS2Properties zz) =>
+              Expression String -> Expression zz -> mn (Expression zz)
+set'display = setjsProperty "display"
+ 
+get'display ::
+            (Monad mn, CCSS2Properties this) =>
+              Expression this -> mn (Expression String)
+get'display thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "display")
+       return r
+ 
+getm'display ::
+             (Monad mn, CCSS2Properties this) =>
+               Expression this -> mn (Expression String)
+getm'display = get'display
+ 
+set'elevation ::
+              (Monad mn, CCSS2Properties zz) =>
+                Expression String -> Expression zz -> mn (Expression zz)
+set'elevation = setjsProperty "elevation"
+ 
+get'elevation ::
+              (Monad mn, CCSS2Properties this) =>
+                Expression this -> mn (Expression String)
+get'elevation thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "elevation")
+       return r
+ 
+getm'elevation ::
+               (Monad mn, CCSS2Properties this) =>
+                 Expression this -> mn (Expression String)
+getm'elevation = get'elevation
+ 
+set'emptyCells ::
+               (Monad mn, CCSS2Properties zz) =>
+                 Expression String -> Expression zz -> mn (Expression zz)
+set'emptyCells = setjsProperty "emptyCells"
+ 
+get'emptyCells ::
+               (Monad mn, CCSS2Properties this) =>
+                 Expression this -> mn (Expression String)
+get'emptyCells thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "emptyCells")
+       return r
+ 
+getm'emptyCells ::
+                (Monad mn, CCSS2Properties this) =>
+                  Expression this -> mn (Expression String)
+getm'emptyCells = get'emptyCells
+ 
+set'cssFloat ::
+             (Monad mn, CCSS2Properties zz) =>
+               Expression String -> Expression zz -> mn (Expression zz)
+set'cssFloat = setjsProperty "cssFloat"
+ 
+get'cssFloat ::
+             (Monad mn, CCSS2Properties this) =>
+               Expression this -> mn (Expression String)
+get'cssFloat thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "cssFloat")
+       return r
+ 
+getm'cssFloat ::
+              (Monad mn, CCSS2Properties this) =>
+                Expression this -> mn (Expression String)
+getm'cssFloat = get'cssFloat
+ 
+set'font ::
+         (Monad mn, CCSS2Properties zz) =>
+           Expression String -> Expression zz -> mn (Expression zz)
+set'font = setjsProperty "font"
+ 
+get'font ::
+         (Monad mn, CCSS2Properties this) =>
+           Expression this -> mn (Expression String)
+get'font thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "font")
+       return r
+ 
+getm'font ::
+          (Monad mn, CCSS2Properties this) =>
+            Expression this -> mn (Expression String)
+getm'font = get'font
+ 
+set'fontFamily ::
+               (Monad mn, CCSS2Properties zz) =>
+                 Expression String -> Expression zz -> mn (Expression zz)
+set'fontFamily = setjsProperty "fontFamily"
+ 
+get'fontFamily ::
+               (Monad mn, CCSS2Properties this) =>
+                 Expression this -> mn (Expression String)
+get'fontFamily thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "fontFamily")
+       return r
+ 
+getm'fontFamily ::
+                (Monad mn, CCSS2Properties this) =>
+                  Expression this -> mn (Expression String)
+getm'fontFamily = get'fontFamily
+ 
+set'fontSize ::
+             (Monad mn, CCSS2Properties zz) =>
+               Expression String -> Expression zz -> mn (Expression zz)
+set'fontSize = setjsProperty "fontSize"
+ 
+get'fontSize ::
+             (Monad mn, CCSS2Properties this) =>
+               Expression this -> mn (Expression String)
+get'fontSize thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "fontSize")
+       return r
+ 
+getm'fontSize ::
+              (Monad mn, CCSS2Properties this) =>
+                Expression this -> mn (Expression String)
+getm'fontSize = get'fontSize
+ 
+set'fontSizeAdjust ::
+                   (Monad mn, CCSS2Properties zz) =>
+                     Expression String -> Expression zz -> mn (Expression zz)
+set'fontSizeAdjust = setjsProperty "fontSizeAdjust"
+ 
+get'fontSizeAdjust ::
+                   (Monad mn, CCSS2Properties this) =>
+                     Expression this -> mn (Expression String)
+get'fontSizeAdjust thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "fontSizeAdjust")
+       return r
+ 
+getm'fontSizeAdjust ::
+                    (Monad mn, CCSS2Properties this) =>
+                      Expression this -> mn (Expression String)
+getm'fontSizeAdjust = get'fontSizeAdjust
+ 
+set'fontStretch ::
+                (Monad mn, CCSS2Properties zz) =>
+                  Expression String -> Expression zz -> mn (Expression zz)
+set'fontStretch = setjsProperty "fontStretch"
+ 
+get'fontStretch ::
+                (Monad mn, CCSS2Properties this) =>
+                  Expression this -> mn (Expression String)
+get'fontStretch thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "fontStretch")
+       return r
+ 
+getm'fontStretch ::
+                 (Monad mn, CCSS2Properties this) =>
+                   Expression this -> mn (Expression String)
+getm'fontStretch = get'fontStretch
+ 
+set'fontStyle ::
+              (Monad mn, CCSS2Properties zz) =>
+                Expression String -> Expression zz -> mn (Expression zz)
+set'fontStyle = setjsProperty "fontStyle"
+ 
+get'fontStyle ::
+              (Monad mn, CCSS2Properties this) =>
+                Expression this -> mn (Expression String)
+get'fontStyle thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "fontStyle")
+       return r
+ 
+getm'fontStyle ::
+               (Monad mn, CCSS2Properties this) =>
+                 Expression this -> mn (Expression String)
+getm'fontStyle = get'fontStyle
+ 
+set'fontVariant ::
+                (Monad mn, CCSS2Properties zz) =>
+                  Expression String -> Expression zz -> mn (Expression zz)
+set'fontVariant = setjsProperty "fontVariant"
+ 
+get'fontVariant ::
+                (Monad mn, CCSS2Properties this) =>
+                  Expression this -> mn (Expression String)
+get'fontVariant thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "fontVariant")
+       return r
+ 
+getm'fontVariant ::
+                 (Monad mn, CCSS2Properties this) =>
+                   Expression this -> mn (Expression String)
+getm'fontVariant = get'fontVariant
+ 
+set'fontWeight ::
+               (Monad mn, CCSS2Properties zz) =>
+                 Expression String -> Expression zz -> mn (Expression zz)
+set'fontWeight = setjsProperty "fontWeight"
+ 
+get'fontWeight ::
+               (Monad mn, CCSS2Properties this) =>
+                 Expression this -> mn (Expression String)
+get'fontWeight thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "fontWeight")
+       return r
+ 
+getm'fontWeight ::
+                (Monad mn, CCSS2Properties this) =>
+                  Expression this -> mn (Expression String)
+getm'fontWeight = get'fontWeight
+ 
+set'height ::
+           (Monad mn, CCSS2Properties zz) =>
+             Expression String -> Expression zz -> mn (Expression zz)
+set'height = setjsProperty "height"
+ 
+get'height ::
+           (Monad mn, CCSS2Properties this) =>
+             Expression this -> mn (Expression String)
+get'height thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "height")
+       return r
+ 
+getm'height ::
+            (Monad mn, CCSS2Properties this) =>
+              Expression this -> mn (Expression String)
+getm'height = get'height
+ 
+set'left ::
+         (Monad mn, CCSS2Properties zz) =>
+           Expression String -> Expression zz -> mn (Expression zz)
+set'left = setjsProperty "left"
+ 
+get'left ::
+         (Monad mn, CCSS2Properties this) =>
+           Expression this -> mn (Expression String)
+get'left thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "left")
+       return r
+ 
+getm'left ::
+          (Monad mn, CCSS2Properties this) =>
+            Expression this -> mn (Expression String)
+getm'left = get'left
+ 
+set'letterSpacing ::
+                  (Monad mn, CCSS2Properties zz) =>
+                    Expression String -> Expression zz -> mn (Expression zz)
+set'letterSpacing = setjsProperty "letterSpacing"
+ 
+get'letterSpacing ::
+                  (Monad mn, CCSS2Properties this) =>
+                    Expression this -> mn (Expression String)
+get'letterSpacing thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "letterSpacing")
+       return r
+ 
+getm'letterSpacing ::
+                   (Monad mn, CCSS2Properties this) =>
+                     Expression this -> mn (Expression String)
+getm'letterSpacing = get'letterSpacing
+ 
+set'lineHeight ::
+               (Monad mn, CCSS2Properties zz) =>
+                 Expression String -> Expression zz -> mn (Expression zz)
+set'lineHeight = setjsProperty "lineHeight"
+ 
+get'lineHeight ::
+               (Monad mn, CCSS2Properties this) =>
+                 Expression this -> mn (Expression String)
+get'lineHeight thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "lineHeight")
+       return r
+ 
+getm'lineHeight ::
+                (Monad mn, CCSS2Properties this) =>
+                  Expression this -> mn (Expression String)
+getm'lineHeight = get'lineHeight
+ 
+set'listStyle ::
+              (Monad mn, CCSS2Properties zz) =>
+                Expression String -> Expression zz -> mn (Expression zz)
+set'listStyle = setjsProperty "listStyle"
+ 
+get'listStyle ::
+              (Monad mn, CCSS2Properties this) =>
+                Expression this -> mn (Expression String)
+get'listStyle thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "listStyle")
+       return r
+ 
+getm'listStyle ::
+               (Monad mn, CCSS2Properties this) =>
+                 Expression this -> mn (Expression String)
+getm'listStyle = get'listStyle
+ 
+set'listStyleImage ::
+                   (Monad mn, CCSS2Properties zz) =>
+                     Expression String -> Expression zz -> mn (Expression zz)
+set'listStyleImage = setjsProperty "listStyleImage"
+ 
+get'listStyleImage ::
+                   (Monad mn, CCSS2Properties this) =>
+                     Expression this -> mn (Expression String)
+get'listStyleImage thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "listStyleImage")
+       return r
+ 
+getm'listStyleImage ::
+                    (Monad mn, CCSS2Properties this) =>
+                      Expression this -> mn (Expression String)
+getm'listStyleImage = get'listStyleImage
+ 
+set'listStylePosition ::
+                      (Monad mn, CCSS2Properties zz) =>
+                        Expression String -> Expression zz -> mn (Expression zz)
+set'listStylePosition = setjsProperty "listStylePosition"
+ 
+get'listStylePosition ::
+                      (Monad mn, CCSS2Properties this) =>
+                        Expression this -> mn (Expression String)
+get'listStylePosition thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "listStylePosition")
+       return r
+ 
+getm'listStylePosition ::
+                       (Monad mn, CCSS2Properties this) =>
+                         Expression this -> mn (Expression String)
+getm'listStylePosition = get'listStylePosition
+ 
+set'listStyleType ::
+                  (Monad mn, CCSS2Properties zz) =>
+                    Expression String -> Expression zz -> mn (Expression zz)
+set'listStyleType = setjsProperty "listStyleType"
+ 
+get'listStyleType ::
+                  (Monad mn, CCSS2Properties this) =>
+                    Expression this -> mn (Expression String)
+get'listStyleType thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "listStyleType")
+       return r
+ 
+getm'listStyleType ::
+                   (Monad mn, CCSS2Properties this) =>
+                     Expression this -> mn (Expression String)
+getm'listStyleType = get'listStyleType
+ 
+set'margin ::
+           (Monad mn, CCSS2Properties zz) =>
+             Expression String -> Expression zz -> mn (Expression zz)
+set'margin = setjsProperty "margin"
+ 
+get'margin ::
+           (Monad mn, CCSS2Properties this) =>
+             Expression this -> mn (Expression String)
+get'margin thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "margin")
+       return r
+ 
+getm'margin ::
+            (Monad mn, CCSS2Properties this) =>
+              Expression this -> mn (Expression String)
+getm'margin = get'margin
+ 
+set'marginTop ::
+              (Monad mn, CCSS2Properties zz) =>
+                Expression String -> Expression zz -> mn (Expression zz)
+set'marginTop = setjsProperty "marginTop"
+ 
+get'marginTop ::
+              (Monad mn, CCSS2Properties this) =>
+                Expression this -> mn (Expression String)
+get'marginTop thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "marginTop")
+       return r
+ 
+getm'marginTop ::
+               (Monad mn, CCSS2Properties this) =>
+                 Expression this -> mn (Expression String)
+getm'marginTop = get'marginTop
+ 
+set'marginRight ::
+                (Monad mn, CCSS2Properties zz) =>
+                  Expression String -> Expression zz -> mn (Expression zz)
+set'marginRight = setjsProperty "marginRight"
+ 
+get'marginRight ::
+                (Monad mn, CCSS2Properties this) =>
+                  Expression this -> mn (Expression String)
+get'marginRight thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "marginRight")
+       return r
+ 
+getm'marginRight ::
+                 (Monad mn, CCSS2Properties this) =>
+                   Expression this -> mn (Expression String)
+getm'marginRight = get'marginRight
+ 
+set'marginBottom ::
+                 (Monad mn, CCSS2Properties zz) =>
+                   Expression String -> Expression zz -> mn (Expression zz)
+set'marginBottom = setjsProperty "marginBottom"
+ 
+get'marginBottom ::
+                 (Monad mn, CCSS2Properties this) =>
+                   Expression this -> mn (Expression String)
+get'marginBottom thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "marginBottom")
+       return r
+ 
+getm'marginBottom ::
+                  (Monad mn, CCSS2Properties this) =>
+                    Expression this -> mn (Expression String)
+getm'marginBottom = get'marginBottom
+ 
+set'marginLeft ::
+               (Monad mn, CCSS2Properties zz) =>
+                 Expression String -> Expression zz -> mn (Expression zz)
+set'marginLeft = setjsProperty "marginLeft"
+ 
+get'marginLeft ::
+               (Monad mn, CCSS2Properties this) =>
+                 Expression this -> mn (Expression String)
+get'marginLeft thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "marginLeft")
+       return r
+ 
+getm'marginLeft ::
+                (Monad mn, CCSS2Properties this) =>
+                  Expression this -> mn (Expression String)
+getm'marginLeft = get'marginLeft
+ 
+set'markerOffset ::
+                 (Monad mn, CCSS2Properties zz) =>
+                   Expression String -> Expression zz -> mn (Expression zz)
+set'markerOffset = setjsProperty "markerOffset"
+ 
+get'markerOffset ::
+                 (Monad mn, CCSS2Properties this) =>
+                   Expression this -> mn (Expression String)
+get'markerOffset thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "markerOffset")
+       return r
+ 
+getm'markerOffset ::
+                  (Monad mn, CCSS2Properties this) =>
+                    Expression this -> mn (Expression String)
+getm'markerOffset = get'markerOffset
+ 
+set'marks ::
+          (Monad mn, CCSS2Properties zz) =>
+            Expression String -> Expression zz -> mn (Expression zz)
+set'marks = setjsProperty "marks"
+ 
+get'marks ::
+          (Monad mn, CCSS2Properties this) =>
+            Expression this -> mn (Expression String)
+get'marks thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "marks")
+       return r
+ 
+getm'marks ::
+           (Monad mn, CCSS2Properties this) =>
+             Expression this -> mn (Expression String)
+getm'marks = get'marks
+ 
+set'maxHeight ::
+              (Monad mn, CCSS2Properties zz) =>
+                Expression String -> Expression zz -> mn (Expression zz)
+set'maxHeight = setjsProperty "maxHeight"
+ 
+get'maxHeight ::
+              (Monad mn, CCSS2Properties this) =>
+                Expression this -> mn (Expression String)
+get'maxHeight thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "maxHeight")
+       return r
+ 
+getm'maxHeight ::
+               (Monad mn, CCSS2Properties this) =>
+                 Expression this -> mn (Expression String)
+getm'maxHeight = get'maxHeight
+ 
+set'maxWidth ::
+             (Monad mn, CCSS2Properties zz) =>
+               Expression String -> Expression zz -> mn (Expression zz)
+set'maxWidth = setjsProperty "maxWidth"
+ 
+get'maxWidth ::
+             (Monad mn, CCSS2Properties this) =>
+               Expression this -> mn (Expression String)
+get'maxWidth thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "maxWidth")
+       return r
+ 
+getm'maxWidth ::
+              (Monad mn, CCSS2Properties this) =>
+                Expression this -> mn (Expression String)
+getm'maxWidth = get'maxWidth
+ 
+set'minHeight ::
+              (Monad mn, CCSS2Properties zz) =>
+                Expression String -> Expression zz -> mn (Expression zz)
+set'minHeight = setjsProperty "minHeight"
+ 
+get'minHeight ::
+              (Monad mn, CCSS2Properties this) =>
+                Expression this -> mn (Expression String)
+get'minHeight thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "minHeight")
+       return r
+ 
+getm'minHeight ::
+               (Monad mn, CCSS2Properties this) =>
+                 Expression this -> mn (Expression String)
+getm'minHeight = get'minHeight
+ 
+set'minWidth ::
+             (Monad mn, CCSS2Properties zz) =>
+               Expression String -> Expression zz -> mn (Expression zz)
+set'minWidth = setjsProperty "minWidth"
+ 
+get'minWidth ::
+             (Monad mn, CCSS2Properties this) =>
+               Expression this -> mn (Expression String)
+get'minWidth thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "minWidth")
+       return r
+ 
+getm'minWidth ::
+              (Monad mn, CCSS2Properties this) =>
+                Expression this -> mn (Expression String)
+getm'minWidth = get'minWidth
+ 
+set'orphans ::
+            (Monad mn, CCSS2Properties zz) =>
+              Expression String -> Expression zz -> mn (Expression zz)
+set'orphans = setjsProperty "orphans"
+ 
+get'orphans ::
+            (Monad mn, CCSS2Properties this) =>
+              Expression this -> mn (Expression String)
+get'orphans thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "orphans")
+       return r
+ 
+getm'orphans ::
+             (Monad mn, CCSS2Properties this) =>
+               Expression this -> mn (Expression String)
+getm'orphans = get'orphans
+ 
+set'outline ::
+            (Monad mn, CCSS2Properties zz) =>
+              Expression String -> Expression zz -> mn (Expression zz)
+set'outline = setjsProperty "outline"
+ 
+get'outline ::
+            (Monad mn, CCSS2Properties this) =>
+              Expression this -> mn (Expression String)
+get'outline thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "outline")
+       return r
+ 
+getm'outline ::
+             (Monad mn, CCSS2Properties this) =>
+               Expression this -> mn (Expression String)
+getm'outline = get'outline
+ 
+set'outlineColor ::
+                 (Monad mn, CCSS2Properties zz) =>
+                   Expression String -> Expression zz -> mn (Expression zz)
+set'outlineColor = setjsProperty "outlineColor"
+ 
+get'outlineColor ::
+                 (Monad mn, CCSS2Properties this) =>
+                   Expression this -> mn (Expression String)
+get'outlineColor thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "outlineColor")
+       return r
+ 
+getm'outlineColor ::
+                  (Monad mn, CCSS2Properties this) =>
+                    Expression this -> mn (Expression String)
+getm'outlineColor = get'outlineColor
+ 
+set'outlineStyle ::
+                 (Monad mn, CCSS2Properties zz) =>
+                   Expression String -> Expression zz -> mn (Expression zz)
+set'outlineStyle = setjsProperty "outlineStyle"
+ 
+get'outlineStyle ::
+                 (Monad mn, CCSS2Properties this) =>
+                   Expression this -> mn (Expression String)
+get'outlineStyle thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "outlineStyle")
+       return r
+ 
+getm'outlineStyle ::
+                  (Monad mn, CCSS2Properties this) =>
+                    Expression this -> mn (Expression String)
+getm'outlineStyle = get'outlineStyle
+ 
+set'outlineWidth ::
+                 (Monad mn, CCSS2Properties zz) =>
+                   Expression String -> Expression zz -> mn (Expression zz)
+set'outlineWidth = setjsProperty "outlineWidth"
+ 
+get'outlineWidth ::
+                 (Monad mn, CCSS2Properties this) =>
+                   Expression this -> mn (Expression String)
+get'outlineWidth thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "outlineWidth")
+       return r
+ 
+getm'outlineWidth ::
+                  (Monad mn, CCSS2Properties this) =>
+                    Expression this -> mn (Expression String)
+getm'outlineWidth = get'outlineWidth
+ 
+set'overflow ::
+             (Monad mn, CCSS2Properties zz) =>
+               Expression String -> Expression zz -> mn (Expression zz)
+set'overflow = setjsProperty "overflow"
+ 
+get'overflow ::
+             (Monad mn, CCSS2Properties this) =>
+               Expression this -> mn (Expression String)
+get'overflow thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "overflow")
+       return r
+ 
+getm'overflow ::
+              (Monad mn, CCSS2Properties this) =>
+                Expression this -> mn (Expression String)
+getm'overflow = get'overflow
+ 
+set'padding ::
+            (Monad mn, CCSS2Properties zz) =>
+              Expression String -> Expression zz -> mn (Expression zz)
+set'padding = setjsProperty "padding"
+ 
+get'padding ::
+            (Monad mn, CCSS2Properties this) =>
+              Expression this -> mn (Expression String)
+get'padding thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "padding")
+       return r
+ 
+getm'padding ::
+             (Monad mn, CCSS2Properties this) =>
+               Expression this -> mn (Expression String)
+getm'padding = get'padding
+ 
+set'paddingTop ::
+               (Monad mn, CCSS2Properties zz) =>
+                 Expression String -> Expression zz -> mn (Expression zz)
+set'paddingTop = setjsProperty "paddingTop"
+ 
+get'paddingTop ::
+               (Monad mn, CCSS2Properties this) =>
+                 Expression this -> mn (Expression String)
+get'paddingTop thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "paddingTop")
+       return r
+ 
+getm'paddingTop ::
+                (Monad mn, CCSS2Properties this) =>
+                  Expression this -> mn (Expression String)
+getm'paddingTop = get'paddingTop
+ 
+set'paddingRight ::
+                 (Monad mn, CCSS2Properties zz) =>
+                   Expression String -> Expression zz -> mn (Expression zz)
+set'paddingRight = setjsProperty "paddingRight"
+ 
+get'paddingRight ::
+                 (Monad mn, CCSS2Properties this) =>
+                   Expression this -> mn (Expression String)
+get'paddingRight thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "paddingRight")
+       return r
+ 
+getm'paddingRight ::
+                  (Monad mn, CCSS2Properties this) =>
+                    Expression this -> mn (Expression String)
+getm'paddingRight = get'paddingRight
+ 
+set'paddingBottom ::
+                  (Monad mn, CCSS2Properties zz) =>
+                    Expression String -> Expression zz -> mn (Expression zz)
+set'paddingBottom = setjsProperty "paddingBottom"
+ 
+get'paddingBottom ::
+                  (Monad mn, CCSS2Properties this) =>
+                    Expression this -> mn (Expression String)
+get'paddingBottom thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "paddingBottom")
+       return r
+ 
+getm'paddingBottom ::
+                   (Monad mn, CCSS2Properties this) =>
+                     Expression this -> mn (Expression String)
+getm'paddingBottom = get'paddingBottom
+ 
+set'paddingLeft ::
+                (Monad mn, CCSS2Properties zz) =>
+                  Expression String -> Expression zz -> mn (Expression zz)
+set'paddingLeft = setjsProperty "paddingLeft"
+ 
+get'paddingLeft ::
+                (Monad mn, CCSS2Properties this) =>
+                  Expression this -> mn (Expression String)
+get'paddingLeft thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "paddingLeft")
+       return r
+ 
+getm'paddingLeft ::
+                 (Monad mn, CCSS2Properties this) =>
+                   Expression this -> mn (Expression String)
+getm'paddingLeft = get'paddingLeft
+ 
+set'page ::
+         (Monad mn, CCSS2Properties zz) =>
+           Expression String -> Expression zz -> mn (Expression zz)
+set'page = setjsProperty "page"
+ 
+get'page ::
+         (Monad mn, CCSS2Properties this) =>
+           Expression this -> mn (Expression String)
+get'page thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "page")
+       return r
+ 
+getm'page ::
+          (Monad mn, CCSS2Properties this) =>
+            Expression this -> mn (Expression String)
+getm'page = get'page
+ 
+set'pageBreakAfter ::
+                   (Monad mn, CCSS2Properties zz) =>
+                     Expression String -> Expression zz -> mn (Expression zz)
+set'pageBreakAfter = setjsProperty "pageBreakAfter"
+ 
+get'pageBreakAfter ::
+                   (Monad mn, CCSS2Properties this) =>
+                     Expression this -> mn (Expression String)
+get'pageBreakAfter thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "pageBreakAfter")
+       return r
+ 
+getm'pageBreakAfter ::
+                    (Monad mn, CCSS2Properties this) =>
+                      Expression this -> mn (Expression String)
+getm'pageBreakAfter = get'pageBreakAfter
+ 
+set'pageBreakBefore ::
+                    (Monad mn, CCSS2Properties zz) =>
+                      Expression String -> Expression zz -> mn (Expression zz)
+set'pageBreakBefore = setjsProperty "pageBreakBefore"
+ 
+get'pageBreakBefore ::
+                    (Monad mn, CCSS2Properties this) =>
+                      Expression this -> mn (Expression String)
+get'pageBreakBefore thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "pageBreakBefore")
+       return r
+ 
+getm'pageBreakBefore ::
+                     (Monad mn, CCSS2Properties this) =>
+                       Expression this -> mn (Expression String)
+getm'pageBreakBefore = get'pageBreakBefore
+ 
+set'pageBreakInside ::
+                    (Monad mn, CCSS2Properties zz) =>
+                      Expression String -> Expression zz -> mn (Expression zz)
+set'pageBreakInside = setjsProperty "pageBreakInside"
+ 
+get'pageBreakInside ::
+                    (Monad mn, CCSS2Properties this) =>
+                      Expression this -> mn (Expression String)
+get'pageBreakInside thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "pageBreakInside")
+       return r
+ 
+getm'pageBreakInside ::
+                     (Monad mn, CCSS2Properties this) =>
+                       Expression this -> mn (Expression String)
+getm'pageBreakInside = get'pageBreakInside
+ 
+set'pause ::
+          (Monad mn, CCSS2Properties zz) =>
+            Expression String -> Expression zz -> mn (Expression zz)
+set'pause = setjsProperty "pause"
+ 
+get'pause ::
+          (Monad mn, CCSS2Properties this) =>
+            Expression this -> mn (Expression String)
+get'pause thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "pause")
+       return r
+ 
+getm'pause ::
+           (Monad mn, CCSS2Properties this) =>
+             Expression this -> mn (Expression String)
+getm'pause = get'pause
+ 
+set'pauseAfter ::
+               (Monad mn, CCSS2Properties zz) =>
+                 Expression String -> Expression zz -> mn (Expression zz)
+set'pauseAfter = setjsProperty "pauseAfter"
+ 
+get'pauseAfter ::
+               (Monad mn, CCSS2Properties this) =>
+                 Expression this -> mn (Expression String)
+get'pauseAfter thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "pauseAfter")
+       return r
+ 
+getm'pauseAfter ::
+                (Monad mn, CCSS2Properties this) =>
+                  Expression this -> mn (Expression String)
+getm'pauseAfter = get'pauseAfter
+ 
+set'pauseBefore ::
+                (Monad mn, CCSS2Properties zz) =>
+                  Expression String -> Expression zz -> mn (Expression zz)
+set'pauseBefore = setjsProperty "pauseBefore"
+ 
+get'pauseBefore ::
+                (Monad mn, CCSS2Properties this) =>
+                  Expression this -> mn (Expression String)
+get'pauseBefore thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "pauseBefore")
+       return r
+ 
+getm'pauseBefore ::
+                 (Monad mn, CCSS2Properties this) =>
+                   Expression this -> mn (Expression String)
+getm'pauseBefore = get'pauseBefore
+ 
+set'pitch ::
+          (Monad mn, CCSS2Properties zz) =>
+            Expression String -> Expression zz -> mn (Expression zz)
+set'pitch = setjsProperty "pitch"
+ 
+get'pitch ::
+          (Monad mn, CCSS2Properties this) =>
+            Expression this -> mn (Expression String)
+get'pitch thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "pitch")
+       return r
+ 
+getm'pitch ::
+           (Monad mn, CCSS2Properties this) =>
+             Expression this -> mn (Expression String)
+getm'pitch = get'pitch
+ 
+set'pitchRange ::
+               (Monad mn, CCSS2Properties zz) =>
+                 Expression String -> Expression zz -> mn (Expression zz)
+set'pitchRange = setjsProperty "pitchRange"
+ 
+get'pitchRange ::
+               (Monad mn, CCSS2Properties this) =>
+                 Expression this -> mn (Expression String)
+get'pitchRange thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "pitchRange")
+       return r
+ 
+getm'pitchRange ::
+                (Monad mn, CCSS2Properties this) =>
+                  Expression this -> mn (Expression String)
+getm'pitchRange = get'pitchRange
+ 
+set'playDuring ::
+               (Monad mn, CCSS2Properties zz) =>
+                 Expression String -> Expression zz -> mn (Expression zz)
+set'playDuring = setjsProperty "playDuring"
+ 
+get'playDuring ::
+               (Monad mn, CCSS2Properties this) =>
+                 Expression this -> mn (Expression String)
+get'playDuring thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "playDuring")
+       return r
+ 
+getm'playDuring ::
+                (Monad mn, CCSS2Properties this) =>
+                  Expression this -> mn (Expression String)
+getm'playDuring = get'playDuring
+ 
+set'position ::
+             (Monad mn, CCSS2Properties zz) =>
+               Expression String -> Expression zz -> mn (Expression zz)
+set'position = setjsProperty "position"
+ 
+get'position ::
+             (Monad mn, CCSS2Properties this) =>
+               Expression this -> mn (Expression String)
+get'position thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "position")
+       return r
+ 
+getm'position ::
+              (Monad mn, CCSS2Properties this) =>
+                Expression this -> mn (Expression String)
+getm'position = get'position
+ 
+set'quotes ::
+           (Monad mn, CCSS2Properties zz) =>
+             Expression String -> Expression zz -> mn (Expression zz)
+set'quotes = setjsProperty "quotes"
+ 
+get'quotes ::
+           (Monad mn, CCSS2Properties this) =>
+             Expression this -> mn (Expression String)
+get'quotes thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "quotes")
+       return r
+ 
+getm'quotes ::
+            (Monad mn, CCSS2Properties this) =>
+              Expression this -> mn (Expression String)
+getm'quotes = get'quotes
+ 
+set'richness ::
+             (Monad mn, CCSS2Properties zz) =>
+               Expression String -> Expression zz -> mn (Expression zz)
+set'richness = setjsProperty "richness"
+ 
+get'richness ::
+             (Monad mn, CCSS2Properties this) =>
+               Expression this -> mn (Expression String)
+get'richness thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "richness")
+       return r
+ 
+getm'richness ::
+              (Monad mn, CCSS2Properties this) =>
+                Expression this -> mn (Expression String)
+getm'richness = get'richness
+ 
+set'right ::
+          (Monad mn, CCSS2Properties zz) =>
+            Expression String -> Expression zz -> mn (Expression zz)
+set'right = setjsProperty "right"
+ 
+get'right ::
+          (Monad mn, CCSS2Properties this) =>
+            Expression this -> mn (Expression String)
+get'right thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "right")
+       return r
+ 
+getm'right ::
+           (Monad mn, CCSS2Properties this) =>
+             Expression this -> mn (Expression String)
+getm'right = get'right
+ 
+set'size ::
+         (Monad mn, CCSS2Properties zz) =>
+           Expression String -> Expression zz -> mn (Expression zz)
+set'size = setjsProperty "size"
+ 
+get'size ::
+         (Monad mn, CCSS2Properties this) =>
+           Expression this -> mn (Expression String)
+get'size thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "size")
+       return r
+ 
+getm'size ::
+          (Monad mn, CCSS2Properties this) =>
+            Expression this -> mn (Expression String)
+getm'size = get'size
+ 
+set'speak ::
+          (Monad mn, CCSS2Properties zz) =>
+            Expression String -> Expression zz -> mn (Expression zz)
+set'speak = setjsProperty "speak"
+ 
+get'speak ::
+          (Monad mn, CCSS2Properties this) =>
+            Expression this -> mn (Expression String)
+get'speak thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "speak")
+       return r
+ 
+getm'speak ::
+           (Monad mn, CCSS2Properties this) =>
+             Expression this -> mn (Expression String)
+getm'speak = get'speak
+ 
+set'speakHeader ::
+                (Monad mn, CCSS2Properties zz) =>
+                  Expression String -> Expression zz -> mn (Expression zz)
+set'speakHeader = setjsProperty "speakHeader"
+ 
+get'speakHeader ::
+                (Monad mn, CCSS2Properties this) =>
+                  Expression this -> mn (Expression String)
+get'speakHeader thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "speakHeader")
+       return r
+ 
+getm'speakHeader ::
+                 (Monad mn, CCSS2Properties this) =>
+                   Expression this -> mn (Expression String)
+getm'speakHeader = get'speakHeader
+ 
+set'speakNumeral ::
+                 (Monad mn, CCSS2Properties zz) =>
+                   Expression String -> Expression zz -> mn (Expression zz)
+set'speakNumeral = setjsProperty "speakNumeral"
+ 
+get'speakNumeral ::
+                 (Monad mn, CCSS2Properties this) =>
+                   Expression this -> mn (Expression String)
+get'speakNumeral thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "speakNumeral")
+       return r
+ 
+getm'speakNumeral ::
+                  (Monad mn, CCSS2Properties this) =>
+                    Expression this -> mn (Expression String)
+getm'speakNumeral = get'speakNumeral
+ 
+set'speakPunctuation ::
+                     (Monad mn, CCSS2Properties zz) =>
+                       Expression String -> Expression zz -> mn (Expression zz)
+set'speakPunctuation = setjsProperty "speakPunctuation"
+ 
+get'speakPunctuation ::
+                     (Monad mn, CCSS2Properties this) =>
+                       Expression this -> mn (Expression String)
+get'speakPunctuation thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "speakPunctuation")
+       return r
+ 
+getm'speakPunctuation ::
+                      (Monad mn, CCSS2Properties this) =>
+                        Expression this -> mn (Expression String)
+getm'speakPunctuation = get'speakPunctuation
+ 
+set'speechRate ::
+               (Monad mn, CCSS2Properties zz) =>
+                 Expression String -> Expression zz -> mn (Expression zz)
+set'speechRate = setjsProperty "speechRate"
+ 
+get'speechRate ::
+               (Monad mn, CCSS2Properties this) =>
+                 Expression this -> mn (Expression String)
+get'speechRate thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "speechRate")
+       return r
+ 
+getm'speechRate ::
+                (Monad mn, CCSS2Properties this) =>
+                  Expression this -> mn (Expression String)
+getm'speechRate = get'speechRate
+ 
+set'stress ::
+           (Monad mn, CCSS2Properties zz) =>
+             Expression String -> Expression zz -> mn (Expression zz)
+set'stress = setjsProperty "stress"
+ 
+get'stress ::
+           (Monad mn, CCSS2Properties this) =>
+             Expression this -> mn (Expression String)
+get'stress thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "stress")
+       return r
+ 
+getm'stress ::
+            (Monad mn, CCSS2Properties this) =>
+              Expression this -> mn (Expression String)
+getm'stress = get'stress
+ 
+set'tableLayout ::
+                (Monad mn, CCSS2Properties zz) =>
+                  Expression String -> Expression zz -> mn (Expression zz)
+set'tableLayout = setjsProperty "tableLayout"
+ 
+get'tableLayout ::
+                (Monad mn, CCSS2Properties this) =>
+                  Expression this -> mn (Expression String)
+get'tableLayout thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "tableLayout")
+       return r
+ 
+getm'tableLayout ::
+                 (Monad mn, CCSS2Properties this) =>
+                   Expression this -> mn (Expression String)
+getm'tableLayout = get'tableLayout
+ 
+set'textAlign ::
+              (Monad mn, CCSS2Properties zz) =>
+                Expression String -> Expression zz -> mn (Expression zz)
+set'textAlign = setjsProperty "textAlign"
+ 
+get'textAlign ::
+              (Monad mn, CCSS2Properties this) =>
+                Expression this -> mn (Expression String)
+get'textAlign thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "textAlign")
+       return r
+ 
+getm'textAlign ::
+               (Monad mn, CCSS2Properties this) =>
+                 Expression this -> mn (Expression String)
+getm'textAlign = get'textAlign
+ 
+set'textDecoration ::
+                   (Monad mn, CCSS2Properties zz) =>
+                     Expression String -> Expression zz -> mn (Expression zz)
+set'textDecoration = setjsProperty "textDecoration"
+ 
+get'textDecoration ::
+                   (Monad mn, CCSS2Properties this) =>
+                     Expression this -> mn (Expression String)
+get'textDecoration thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "textDecoration")
+       return r
+ 
+getm'textDecoration ::
+                    (Monad mn, CCSS2Properties this) =>
+                      Expression this -> mn (Expression String)
+getm'textDecoration = get'textDecoration
+ 
+set'textIndent ::
+               (Monad mn, CCSS2Properties zz) =>
+                 Expression String -> Expression zz -> mn (Expression zz)
+set'textIndent = setjsProperty "textIndent"
+ 
+get'textIndent ::
+               (Monad mn, CCSS2Properties this) =>
+                 Expression this -> mn (Expression String)
+get'textIndent thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "textIndent")
+       return r
+ 
+getm'textIndent ::
+                (Monad mn, CCSS2Properties this) =>
+                  Expression this -> mn (Expression String)
+getm'textIndent = get'textIndent
+ 
+set'textShadow ::
+               (Monad mn, CCSS2Properties zz) =>
+                 Expression String -> Expression zz -> mn (Expression zz)
+set'textShadow = setjsProperty "textShadow"
+ 
+get'textShadow ::
+               (Monad mn, CCSS2Properties this) =>
+                 Expression this -> mn (Expression String)
+get'textShadow thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "textShadow")
+       return r
+ 
+getm'textShadow ::
+                (Monad mn, CCSS2Properties this) =>
+                  Expression this -> mn (Expression String)
+getm'textShadow = get'textShadow
+ 
+set'textTransform ::
+                  (Monad mn, CCSS2Properties zz) =>
+                    Expression String -> Expression zz -> mn (Expression zz)
+set'textTransform = setjsProperty "textTransform"
+ 
+get'textTransform ::
+                  (Monad mn, CCSS2Properties this) =>
+                    Expression this -> mn (Expression String)
+get'textTransform thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "textTransform")
+       return r
+ 
+getm'textTransform ::
+                   (Monad mn, CCSS2Properties this) =>
+                     Expression this -> mn (Expression String)
+getm'textTransform = get'textTransform
+ 
+set'top ::
+        (Monad mn, CCSS2Properties zz) =>
+          Expression String -> Expression zz -> mn (Expression zz)
+set'top = setjsProperty "top"
+ 
+get'top ::
+        (Monad mn, CCSS2Properties this) =>
+          Expression this -> mn (Expression String)
+get'top thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "top")
+       return r
+ 
+getm'top ::
+         (Monad mn, CCSS2Properties this) =>
+           Expression this -> mn (Expression String)
+getm'top = get'top
+ 
+set'unicodeBidi ::
+                (Monad mn, CCSS2Properties zz) =>
+                  Expression String -> Expression zz -> mn (Expression zz)
+set'unicodeBidi = setjsProperty "unicodeBidi"
+ 
+get'unicodeBidi ::
+                (Monad mn, CCSS2Properties this) =>
+                  Expression this -> mn (Expression String)
+get'unicodeBidi thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "unicodeBidi")
+       return r
+ 
+getm'unicodeBidi ::
+                 (Monad mn, CCSS2Properties this) =>
+                   Expression this -> mn (Expression String)
+getm'unicodeBidi = get'unicodeBidi
+ 
+set'verticalAlign ::
+                  (Monad mn, CCSS2Properties zz) =>
+                    Expression String -> Expression zz -> mn (Expression zz)
+set'verticalAlign = setjsProperty "verticalAlign"
+ 
+get'verticalAlign ::
+                  (Monad mn, CCSS2Properties this) =>
+                    Expression this -> mn (Expression String)
+get'verticalAlign thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "verticalAlign")
+       return r
+ 
+getm'verticalAlign ::
+                   (Monad mn, CCSS2Properties this) =>
+                     Expression this -> mn (Expression String)
+getm'verticalAlign = get'verticalAlign
+ 
+set'visibility ::
+               (Monad mn, CCSS2Properties zz) =>
+                 Expression String -> Expression zz -> mn (Expression zz)
+set'visibility = setjsProperty "visibility"
+ 
+get'visibility ::
+               (Monad mn, CCSS2Properties this) =>
+                 Expression this -> mn (Expression String)
+get'visibility thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "visibility")
+       return r
+ 
+getm'visibility ::
+                (Monad mn, CCSS2Properties this) =>
+                  Expression this -> mn (Expression String)
+getm'visibility = get'visibility
+ 
+set'voiceFamily ::
+                (Monad mn, CCSS2Properties zz) =>
+                  Expression String -> Expression zz -> mn (Expression zz)
+set'voiceFamily = setjsProperty "voiceFamily"
+ 
+get'voiceFamily ::
+                (Monad mn, CCSS2Properties this) =>
+                  Expression this -> mn (Expression String)
+get'voiceFamily thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "voiceFamily")
+       return r
+ 
+getm'voiceFamily ::
+                 (Monad mn, CCSS2Properties this) =>
+                   Expression this -> mn (Expression String)
+getm'voiceFamily = get'voiceFamily
+ 
+set'volume ::
+           (Monad mn, CCSS2Properties zz) =>
+             Expression String -> Expression zz -> mn (Expression zz)
+set'volume = setjsProperty "volume"
+ 
+get'volume ::
+           (Monad mn, CCSS2Properties this) =>
+             Expression this -> mn (Expression String)
+get'volume thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "volume")
+       return r
+ 
+getm'volume ::
+            (Monad mn, CCSS2Properties this) =>
+              Expression this -> mn (Expression String)
+getm'volume = get'volume
+ 
+set'whiteSpace ::
+               (Monad mn, CCSS2Properties zz) =>
+                 Expression String -> Expression zz -> mn (Expression zz)
+set'whiteSpace = setjsProperty "whiteSpace"
+ 
+get'whiteSpace ::
+               (Monad mn, CCSS2Properties this) =>
+                 Expression this -> mn (Expression String)
+get'whiteSpace thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "whiteSpace")
+       return r
+ 
+getm'whiteSpace ::
+                (Monad mn, CCSS2Properties this) =>
+                  Expression this -> mn (Expression String)
+getm'whiteSpace = get'whiteSpace
+ 
+set'widows ::
+           (Monad mn, CCSS2Properties zz) =>
+             Expression String -> Expression zz -> mn (Expression zz)
+set'widows = setjsProperty "widows"
+ 
+get'widows ::
+           (Monad mn, CCSS2Properties this) =>
+             Expression this -> mn (Expression String)
+get'widows thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "widows")
+       return r
+ 
+getm'widows ::
+            (Monad mn, CCSS2Properties this) =>
+              Expression this -> mn (Expression String)
+getm'widows = get'widows
+ 
+set'width ::
+          (Monad mn, CCSS2Properties zz) =>
+            Expression String -> Expression zz -> mn (Expression zz)
+set'width = setjsProperty "width"
+ 
+get'width ::
+          (Monad mn, CCSS2Properties this) =>
+            Expression this -> mn (Expression String)
+get'width thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "width")
+       return r
+ 
+getm'width ::
+           (Monad mn, CCSS2Properties this) =>
+             Expression this -> mn (Expression String)
+getm'width = get'width
+ 
+set'wordSpacing ::
+                (Monad mn, CCSS2Properties zz) =>
+                  Expression String -> Expression zz -> mn (Expression zz)
+set'wordSpacing = setjsProperty "wordSpacing"
+ 
+get'wordSpacing ::
+                (Monad mn, CCSS2Properties this) =>
+                  Expression this -> mn (Expression String)
+get'wordSpacing thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "wordSpacing")
+       return r
+ 
+getm'wordSpacing ::
+                 (Monad mn, CCSS2Properties this) =>
+                   Expression this -> mn (Expression String)
+getm'wordSpacing = get'wordSpacing
+ 
+set'zIndex ::
+           (Monad mn, CCSS2Properties zz) =>
+             Expression String -> Expression zz -> mn (Expression zz)
+set'zIndex = setjsProperty "zIndex"
+ 
+get'zIndex ::
+           (Monad mn, CCSS2Properties this) =>
+             Expression this -> mn (Expression String)
+get'zIndex thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "zIndex")
+       return r
+ 
+getm'zIndex ::
+            (Monad mn, CCSS2Properties this) =>
+              Expression this -> mn (Expression String)
+getm'zIndex = get'zIndex
+
diff --git a/Data/DOM/CSSCharsetRule.hs b/Data/DOM/CSSCharsetRule.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/CSSCharsetRule.hs
@@ -0,0 +1,30 @@
+
+module Data.DOM.CSSCharsetRule
+       (set'encoding, get'encoding, getm'encoding) where
+import Data.DOM.Css
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Views
+import Data.DOM.Stylesheets
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+set'encoding ::
+             (Monad mn, CCSSCharsetRule zz) =>
+               Expression String -> Expression zz -> mn (Expression zz)
+set'encoding = setjsProperty "encoding"
+ 
+get'encoding ::
+             (Monad mn, CCSSCharsetRule this) =>
+               Expression this -> mn (Expression String)
+get'encoding thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "encoding")
+       return r
+ 
+getm'encoding ::
+              (Monad mn, CCSSCharsetRule this) =>
+                Expression this -> mn (Expression String)
+getm'encoding = get'encoding
+
diff --git a/Data/DOM/CSSFontFaceRule.hs b/Data/DOM/CSSFontFaceRule.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/CSSFontFaceRule.hs
@@ -0,0 +1,24 @@
+
+module Data.DOM.CSSFontFaceRule (get'style, getm'style) where
+import Data.DOM.Css
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Views
+import Data.DOM.Stylesheets
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+get'style ::
+          (Monad mn, CCSSFontFaceRule this, CCSSStyleDeclaration zz) =>
+            Expression this -> mn (Expression zz)
+get'style thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "style")
+       return r
+ 
+getm'style ::
+           (Monad mn, CCSSFontFaceRule this) =>
+             Expression this -> mn (Expression TCSSStyleDeclaration)
+getm'style = get'style
+
diff --git a/Data/DOM/CSSImportRule.hs b/Data/DOM/CSSImportRule.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/CSSImportRule.hs
@@ -0,0 +1,53 @@
+
+module Data.DOM.CSSImportRule
+       (get'href, getm'href, get'media, getm'media, get'styleSheet,
+        getm'styleSheet)
+       where
+import Data.DOM.Css
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Views
+import Data.DOM.Stylesheets
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+get'href ::
+         (Monad mn, CCSSImportRule this) =>
+           Expression this -> mn (Expression String)
+get'href thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "href")
+       return r
+ 
+getm'href ::
+          (Monad mn, CCSSImportRule this) =>
+            Expression this -> mn (Expression String)
+getm'href = get'href
+ 
+get'media ::
+          (Monad mn, CCSSImportRule this, CMediaList zz) =>
+            Expression this -> mn (Expression zz)
+get'media thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "media")
+       return r
+ 
+getm'media ::
+           (Monad mn, CCSSImportRule this) =>
+             Expression this -> mn (Expression TMediaList)
+getm'media = get'media
+ 
+get'styleSheet ::
+               (Monad mn, CCSSImportRule this, CCSSStyleSheet zz) =>
+                 Expression this -> mn (Expression zz)
+get'styleSheet thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "styleSheet")
+       return r
+ 
+getm'styleSheet ::
+                (Monad mn, CCSSImportRule this) =>
+                  Expression this -> mn (Expression TCSSStyleSheet)
+getm'styleSheet = get'styleSheet
+
diff --git a/Data/DOM/CSSMediaRule.hs b/Data/DOM/CSSMediaRule.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/CSSMediaRule.hs
@@ -0,0 +1,57 @@
+
+module Data.DOM.CSSMediaRule
+       (insertRule, deleteRule, get'media, getm'media, get'cssRules,
+        getm'cssRules)
+       where
+import Data.DOM.Css
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Views
+import Data.DOM.Stylesheets
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+insertRule ::
+           (Monad mn, CCSSMediaRule this) =>
+             Expression String ->
+               Expression Double -> Expression this -> mn (Expression Double)
+insertRule a b thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "insertRule")
+       return (CallExpr et r [a /\ et, b /\ et])
+ 
+deleteRule ::
+           (Monad mn, CCSSMediaRule this) =>
+             Expression Double -> Expression this -> mn (Expression ())
+deleteRule a thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "deleteRule")
+       return (CallExpr et r [a /\ et])
+ 
+get'media ::
+          (Monad mn, CCSSMediaRule this, CMediaList zz) =>
+            Expression this -> mn (Expression zz)
+get'media thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "media")
+       return r
+ 
+getm'media ::
+           (Monad mn, CCSSMediaRule this) =>
+             Expression this -> mn (Expression TMediaList)
+getm'media = get'media
+ 
+get'cssRules ::
+             (Monad mn, CCSSMediaRule this, CCSSRuleList zz) =>
+               Expression this -> mn (Expression zz)
+get'cssRules thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "cssRules")
+       return r
+ 
+getm'cssRules ::
+              (Monad mn, CCSSMediaRule this) =>
+                Expression this -> mn (Expression TCSSRuleList)
+getm'cssRules = get'cssRules
+
diff --git a/Data/DOM/CSSPageRule.hs b/Data/DOM/CSSPageRule.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/CSSPageRule.hs
@@ -0,0 +1,45 @@
+
+module Data.DOM.CSSPageRule
+       (set'selectorText, get'selectorText, getm'selectorText, get'style,
+        getm'style)
+       where
+import Data.DOM.Css
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Views
+import Data.DOM.Stylesheets
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+set'selectorText ::
+                 (Monad mn, CCSSPageRule zz) =>
+                   Expression String -> Expression zz -> mn (Expression zz)
+set'selectorText = setjsProperty "selectorText"
+ 
+get'selectorText ::
+                 (Monad mn, CCSSPageRule this) =>
+                   Expression this -> mn (Expression String)
+get'selectorText thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "selectorText")
+       return r
+ 
+getm'selectorText ::
+                  (Monad mn, CCSSPageRule this) =>
+                    Expression this -> mn (Expression String)
+getm'selectorText = get'selectorText
+ 
+get'style ::
+          (Monad mn, CCSSPageRule this, CCSSStyleDeclaration zz) =>
+            Expression this -> mn (Expression zz)
+get'style thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "style")
+       return r
+ 
+getm'style ::
+           (Monad mn, CCSSPageRule this) =>
+             Expression this -> mn (Expression TCSSStyleDeclaration)
+getm'style = get'style
+
diff --git a/Data/DOM/CSSPrimitiveValue.hs b/Data/DOM/CSSPrimitiveValue.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/CSSPrimitiveValue.hs
@@ -0,0 +1,116 @@
+
+module Data.DOM.CSSPrimitiveValue
+       (setFloatValue, getFloatValue, setStringValue, getStringValue,
+        getCounterValue, getRectValue, getRGBColorValue, cCSS_UNKNOWN,
+        cCSS_NUMBER, cCSS_PERCENTAGE, cCSS_EMS, cCSS_EXS, cCSS_PX, cCSS_CM,
+        cCSS_MM, cCSS_IN, cCSS_PT, cCSS_PC, cCSS_DEG, cCSS_RAD, cCSS_GRAD,
+        cCSS_MS, cCSS_S, cCSS_HZ, cCSS_KHZ, cCSS_DIMENSION, cCSS_STRING,
+        cCSS_URI, cCSS_IDENT, cCSS_ATTR, cCSS_COUNTER, cCSS_RECT,
+        cCSS_RGBCOLOR, get'primitiveType, getm'primitiveType)
+       where
+import Data.DOM.Css
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Views
+import Data.DOM.Stylesheets
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+setFloatValue ::
+              (Monad mn, CCSSPrimitiveValue this) =>
+                Expression Double ->
+                  Expression Double -> Expression this -> mn (Expression ())
+setFloatValue a b thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "setFloatValue")
+       return (CallExpr et r [a /\ et, b /\ et])
+ 
+getFloatValue ::
+              (Monad mn, CCSSPrimitiveValue this) =>
+                Expression Double -> Expression this -> mn (Expression Double)
+getFloatValue a thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "getFloatValue")
+       return (CallExpr et r [a /\ et])
+ 
+setStringValue ::
+               (Monad mn, CCSSPrimitiveValue this) =>
+                 Expression Double ->
+                   Expression String -> Expression this -> mn (Expression ())
+setStringValue a b thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "setStringValue")
+       return (CallExpr et r [a /\ et, b /\ et])
+ 
+getStringValue ::
+               (Monad mn, CCSSPrimitiveValue this) =>
+                 Expression this -> mn (Expression String)
+getStringValue thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "getStringValue")
+       return (CallExpr et r [])
+ 
+getCounterValue ::
+                (Monad mn, CCSSPrimitiveValue this, CCounter zz) =>
+                  Expression this -> mn (Expression zz)
+getCounterValue thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "getCounterValue")
+       return (CallExpr et r [])
+ 
+getRectValue ::
+             (Monad mn, CCSSPrimitiveValue this, CRect zz) =>
+               Expression this -> mn (Expression zz)
+getRectValue thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "getRectValue")
+       return (CallExpr et r [])
+ 
+getRGBColorValue ::
+                 (Monad mn, CCSSPrimitiveValue this, CRGBColor zz) =>
+                   Expression this -> mn (Expression zz)
+getRGBColorValue thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "getRGBColorValue")
+       return (CallExpr et r [])
+cCSS_UNKNOWN = 0
+cCSS_NUMBER = 1
+cCSS_PERCENTAGE = 2
+cCSS_EMS = 3
+cCSS_EXS = 4
+cCSS_PX = 5
+cCSS_CM = 6
+cCSS_MM = 7
+cCSS_IN = 8
+cCSS_PT = 9
+cCSS_PC = 10
+cCSS_DEG = 11
+cCSS_RAD = 12
+cCSS_GRAD = 13
+cCSS_MS = 14
+cCSS_S = 15
+cCSS_HZ = 16
+cCSS_KHZ = 17
+cCSS_DIMENSION = 18
+cCSS_STRING = 19
+cCSS_URI = 20
+cCSS_IDENT = 21
+cCSS_ATTR = 22
+cCSS_COUNTER = 23
+cCSS_RECT = 24
+cCSS_RGBCOLOR = 25
+ 
+get'primitiveType ::
+                  (Monad mn, CCSSPrimitiveValue this) =>
+                    Expression this -> mn (Expression Double)
+get'primitiveType thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "primitiveType")
+       return r
+ 
+getm'primitiveType ::
+                   (Monad mn, CCSSPrimitiveValue this) =>
+                     Expression this -> mn (Expression Double)
+getm'primitiveType = get'primitiveType
+
diff --git a/Data/DOM/CSSRule.hs b/Data/DOM/CSSRule.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/CSSRule.hs
@@ -0,0 +1,80 @@
+
+module Data.DOM.CSSRule
+       (cUNKNOWN_RULE, cSTYLE_RULE, cCHARSET_RULE, cIMPORT_RULE,
+        cMEDIA_RULE, cFONT_FACE_RULE, cPAGE_RULE, get'type, getm'type,
+        set'cssText, get'cssText, getm'cssText, get'parentStyleSheet,
+        getm'parentStyleSheet, get'parentRule, getm'parentRule)
+       where
+import Data.DOM.Css
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Views
+import Data.DOM.Stylesheets
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+cUNKNOWN_RULE = 0
+cSTYLE_RULE = 1
+cCHARSET_RULE = 2
+cIMPORT_RULE = 3
+cMEDIA_RULE = 4
+cFONT_FACE_RULE = 5
+cPAGE_RULE = 6
+ 
+get'type ::
+         (Monad mn, CCSSRule this) =>
+           Expression this -> mn (Expression Double)
+get'type thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "type")
+       return r
+ 
+getm'type ::
+          (Monad mn, CCSSRule this) =>
+            Expression this -> mn (Expression Double)
+getm'type = get'type
+ 
+set'cssText ::
+            (Monad mn, CCSSRule zz) =>
+              Expression String -> Expression zz -> mn (Expression zz)
+set'cssText = setjsProperty "cssText"
+ 
+get'cssText ::
+            (Monad mn, CCSSRule this) =>
+              Expression this -> mn (Expression String)
+get'cssText thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "cssText")
+       return r
+ 
+getm'cssText ::
+             (Monad mn, CCSSRule this) =>
+               Expression this -> mn (Expression String)
+getm'cssText = get'cssText
+ 
+get'parentStyleSheet ::
+                     (Monad mn, CCSSRule this, CCSSStyleSheet zz) =>
+                       Expression this -> mn (Expression zz)
+get'parentStyleSheet thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "parentStyleSheet")
+       return r
+ 
+getm'parentStyleSheet ::
+                      (Monad mn, CCSSRule this) =>
+                        Expression this -> mn (Expression TCSSStyleSheet)
+getm'parentStyleSheet = get'parentStyleSheet
+ 
+get'parentRule ::
+               (Monad mn, CCSSRule this, CCSSRule zz) =>
+                 Expression this -> mn (Expression zz)
+get'parentRule thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "parentRule")
+       return r
+ 
+getm'parentRule ::
+                (Monad mn, CCSSRule this) =>
+                  Expression this -> mn (Expression TCSSRule)
+getm'parentRule = get'parentRule
+
diff --git a/Data/DOM/CSSRuleList.hs b/Data/DOM/CSSRuleList.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/CSSRuleList.hs
@@ -0,0 +1,32 @@
+
+module Data.DOM.CSSRuleList (item, get'length, getm'length) where
+import Data.DOM.Css
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Views
+import Data.DOM.Stylesheets
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+item ::
+     (Monad mn, CCSSRuleList this, CCSSRule zz) =>
+       Expression Double -> Expression this -> mn (Expression zz)
+item a thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "item")
+       return (CallExpr et r [a /\ et])
+ 
+get'length ::
+           (Monad mn, CCSSRuleList this) =>
+             Expression this -> mn (Expression Double)
+get'length thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "length")
+       return r
+ 
+getm'length ::
+            (Monad mn, CCSSRuleList this) =>
+              Expression this -> mn (Expression Double)
+getm'length = get'length
+
diff --git a/Data/DOM/CSSStyleDeclaration.hs b/Data/DOM/CSSStyleDeclaration.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/CSSStyleDeclaration.hs
@@ -0,0 +1,110 @@
+
+module Data.DOM.CSSStyleDeclaration
+       (getPropertyValue, getPropertyCSSValue, removeProperty,
+        getPropertyPriority, setProperty, item, set'cssText, get'cssText,
+        getm'cssText, get'length, getm'length, get'parentRule,
+        getm'parentRule)
+       where
+import Data.DOM.Css
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Views
+import Data.DOM.Stylesheets
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+getPropertyValue ::
+                 (Monad mn, CCSSStyleDeclaration this) =>
+                   Expression String -> Expression this -> mn (Expression String)
+getPropertyValue a thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "getPropertyValue")
+       return (CallExpr et r [a /\ et])
+ 
+getPropertyCSSValue ::
+                    (Monad mn, CCSSStyleDeclaration this, CCSSValue zz) =>
+                      Expression String -> Expression this -> mn (Expression zz)
+getPropertyCSSValue a thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "getPropertyCSSValue")
+       return (CallExpr et r [a /\ et])
+ 
+removeProperty ::
+               (Monad mn, CCSSStyleDeclaration this) =>
+                 Expression String -> Expression this -> mn (Expression String)
+removeProperty a thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "removeProperty")
+       return (CallExpr et r [a /\ et])
+ 
+getPropertyPriority ::
+                    (Monad mn, CCSSStyleDeclaration this) =>
+                      Expression String -> Expression this -> mn (Expression String)
+getPropertyPriority a thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "getPropertyPriority")
+       return (CallExpr et r [a /\ et])
+ 
+setProperty ::
+            (Monad mn, CCSSStyleDeclaration this) =>
+              Expression String ->
+                Expression String ->
+                  Expression String -> Expression this -> mn (Expression ())
+setProperty a b c thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "setProperty")
+       return (CallExpr et r [a /\ et, b /\ et, c /\ et])
+ 
+item ::
+     (Monad mn, CCSSStyleDeclaration this) =>
+       Expression Double -> Expression this -> mn (Expression String)
+item a thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "item")
+       return (CallExpr et r [a /\ et])
+ 
+set'cssText ::
+            (Monad mn, CCSSStyleDeclaration zz) =>
+              Expression String -> Expression zz -> mn (Expression zz)
+set'cssText = setjsProperty "cssText"
+ 
+get'cssText ::
+            (Monad mn, CCSSStyleDeclaration this) =>
+              Expression this -> mn (Expression String)
+get'cssText thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "cssText")
+       return r
+ 
+getm'cssText ::
+             (Monad mn, CCSSStyleDeclaration this) =>
+               Expression this -> mn (Expression String)
+getm'cssText = get'cssText
+ 
+get'length ::
+           (Monad mn, CCSSStyleDeclaration this) =>
+             Expression this -> mn (Expression Double)
+get'length thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "length")
+       return r
+ 
+getm'length ::
+            (Monad mn, CCSSStyleDeclaration this) =>
+              Expression this -> mn (Expression Double)
+getm'length = get'length
+ 
+get'parentRule ::
+               (Monad mn, CCSSStyleDeclaration this, CCSSRule zz) =>
+                 Expression this -> mn (Expression zz)
+get'parentRule thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "parentRule")
+       return r
+ 
+getm'parentRule ::
+                (Monad mn, CCSSStyleDeclaration this) =>
+                  Expression this -> mn (Expression TCSSRule)
+getm'parentRule = get'parentRule
+
diff --git a/Data/DOM/CSSStyleRule.hs b/Data/DOM/CSSStyleRule.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/CSSStyleRule.hs
@@ -0,0 +1,45 @@
+
+module Data.DOM.CSSStyleRule
+       (set'selectorText, get'selectorText, getm'selectorText, get'style,
+        getm'style)
+       where
+import Data.DOM.Css
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Views
+import Data.DOM.Stylesheets
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+set'selectorText ::
+                 (Monad mn, CCSSStyleRule zz) =>
+                   Expression String -> Expression zz -> mn (Expression zz)
+set'selectorText = setjsProperty "selectorText"
+ 
+get'selectorText ::
+                 (Monad mn, CCSSStyleRule this) =>
+                   Expression this -> mn (Expression String)
+get'selectorText thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "selectorText")
+       return r
+ 
+getm'selectorText ::
+                  (Monad mn, CCSSStyleRule this) =>
+                    Expression this -> mn (Expression String)
+getm'selectorText = get'selectorText
+ 
+get'style ::
+          (Monad mn, CCSSStyleRule this, CCSSStyleDeclaration zz) =>
+            Expression this -> mn (Expression zz)
+get'style thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "style")
+       return r
+ 
+getm'style ::
+           (Monad mn, CCSSStyleRule this) =>
+             Expression this -> mn (Expression TCSSStyleDeclaration)
+getm'style = get'style
+
diff --git a/Data/DOM/CSSStyleSheet.hs b/Data/DOM/CSSStyleSheet.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/CSSStyleSheet.hs
@@ -0,0 +1,57 @@
+
+module Data.DOM.CSSStyleSheet
+       (insertRule, deleteRule, get'ownerRule, getm'ownerRule,
+        get'cssRules, getm'cssRules)
+       where
+import Data.DOM.Css
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Views
+import Data.DOM.Stylesheets
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+insertRule ::
+           (Monad mn, CCSSStyleSheet this) =>
+             Expression String ->
+               Expression Double -> Expression this -> mn (Expression Double)
+insertRule a b thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "insertRule")
+       return (CallExpr et r [a /\ et, b /\ et])
+ 
+deleteRule ::
+           (Monad mn, CCSSStyleSheet this) =>
+             Expression Double -> Expression this -> mn (Expression ())
+deleteRule a thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "deleteRule")
+       return (CallExpr et r [a /\ et])
+ 
+get'ownerRule ::
+              (Monad mn, CCSSStyleSheet this, CCSSRule zz) =>
+                Expression this -> mn (Expression zz)
+get'ownerRule thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "ownerRule")
+       return r
+ 
+getm'ownerRule ::
+               (Monad mn, CCSSStyleSheet this) =>
+                 Expression this -> mn (Expression TCSSRule)
+getm'ownerRule = get'ownerRule
+ 
+get'cssRules ::
+             (Monad mn, CCSSStyleSheet this, CCSSRuleList zz) =>
+               Expression this -> mn (Expression zz)
+get'cssRules thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "cssRules")
+       return r
+ 
+getm'cssRules ::
+              (Monad mn, CCSSStyleSheet this) =>
+                Expression this -> mn (Expression TCSSRuleList)
+getm'cssRules = get'cssRules
+
diff --git a/Data/DOM/CSSValue.hs b/Data/DOM/CSSValue.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/CSSValue.hs
@@ -0,0 +1,50 @@
+
+module Data.DOM.CSSValue
+       (cCSS_INHERIT, cCSS_PRIMITIVE_VALUE, cCSS_VALUE_LIST, cCSS_CUSTOM,
+        set'cssText, get'cssText, getm'cssText, get'cssValueType,
+        getm'cssValueType)
+       where
+import Data.DOM.Css
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Views
+import Data.DOM.Stylesheets
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+cCSS_INHERIT = 0
+cCSS_PRIMITIVE_VALUE = 1
+cCSS_VALUE_LIST = 2
+cCSS_CUSTOM = 3
+ 
+set'cssText ::
+            (Monad mn, CCSSValue zz) =>
+              Expression String -> Expression zz -> mn (Expression zz)
+set'cssText = setjsProperty "cssText"
+ 
+get'cssText ::
+            (Monad mn, CCSSValue this) =>
+              Expression this -> mn (Expression String)
+get'cssText thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "cssText")
+       return r
+ 
+getm'cssText ::
+             (Monad mn, CCSSValue this) =>
+               Expression this -> mn (Expression String)
+getm'cssText = get'cssText
+ 
+get'cssValueType ::
+                 (Monad mn, CCSSValue this) =>
+                   Expression this -> mn (Expression Double)
+get'cssValueType thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "cssValueType")
+       return r
+ 
+getm'cssValueType ::
+                  (Monad mn, CCSSValue this) =>
+                    Expression this -> mn (Expression Double)
+getm'cssValueType = get'cssValueType
+
diff --git a/Data/DOM/CSSValueList.hs b/Data/DOM/CSSValueList.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/CSSValueList.hs
@@ -0,0 +1,32 @@
+
+module Data.DOM.CSSValueList (item, get'length, getm'length) where
+import Data.DOM.Css
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Views
+import Data.DOM.Stylesheets
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+item ::
+     (Monad mn, CCSSValueList this, CCSSValue zz) =>
+       Expression Double -> Expression this -> mn (Expression zz)
+item a thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "item")
+       return (CallExpr et r [a /\ et])
+ 
+get'length ::
+           (Monad mn, CCSSValueList this) =>
+             Expression this -> mn (Expression Double)
+get'length thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "length")
+       return r
+ 
+getm'length ::
+            (Monad mn, CCSSValueList this) =>
+              Expression this -> mn (Expression Double)
+getm'length = get'length
+
diff --git a/Data/DOM/CharacterData.hs b/Data/DOM/CharacterData.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/CharacterData.hs
@@ -0,0 +1,87 @@
+
+module Data.DOM.CharacterData
+       (substringData, appendData, insertData, deleteData, replaceData,
+        set'data, get'data, getm'data, get'length, getm'length)
+       where
+import Data.DOM.Dom
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Document (createElement)
+ 
+substringData ::
+              (Monad mn, CCharacterData this) =>
+                Expression Double ->
+                  Expression Double -> Expression this -> mn (Expression String)
+substringData a b thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "substringData")
+       return (CallExpr et r [a /\ et, b /\ et])
+ 
+appendData ::
+           (Monad mn, CCharacterData this) =>
+             Expression String -> Expression this -> mn (Expression ())
+appendData a thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "appendData")
+       return (CallExpr et r [a /\ et])
+ 
+insertData ::
+           (Monad mn, CCharacterData this) =>
+             Expression Double ->
+               Expression String -> Expression this -> mn (Expression ())
+insertData a b thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "insertData")
+       return (CallExpr et r [a /\ et, b /\ et])
+ 
+deleteData ::
+           (Monad mn, CCharacterData this) =>
+             Expression Double ->
+               Expression Double -> Expression this -> mn (Expression ())
+deleteData a b thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "deleteData")
+       return (CallExpr et r [a /\ et, b /\ et])
+ 
+replaceData ::
+            (Monad mn, CCharacterData this) =>
+              Expression Double ->
+                Expression Double ->
+                  Expression String -> Expression this -> mn (Expression ())
+replaceData a b c thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "replaceData")
+       return (CallExpr et r [a /\ et, b /\ et, c /\ et])
+ 
+set'data ::
+         (Monad mn, CCharacterData zz) =>
+           Expression String -> Expression zz -> mn (Expression zz)
+set'data = setjsProperty "data"
+ 
+get'data ::
+         (Monad mn, CCharacterData this) =>
+           Expression this -> mn (Expression String)
+get'data thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "data")
+       return r
+ 
+getm'data ::
+          (Monad mn, CCharacterData this) =>
+            Expression this -> mn (Expression String)
+getm'data = get'data
+ 
+get'length ::
+           (Monad mn, CCharacterData this) =>
+             Expression this -> mn (Expression Double)
+get'length thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "length")
+       return r
+ 
+getm'length ::
+            (Monad mn, CCharacterData this) =>
+              Expression this -> mn (Expression Double)
+getm'length = get'length
+
diff --git a/Data/DOM/Counter.hs b/Data/DOM/Counter.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/Counter.hs
@@ -0,0 +1,53 @@
+
+module Data.DOM.Counter
+       (get'identifier, getm'identifier, get'listStyle, getm'listStyle,
+        get'separator, getm'separator)
+       where
+import Data.DOM.Css
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Views
+import Data.DOM.Stylesheets
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+get'identifier ::
+               (Monad mn, CCounter this) =>
+                 Expression this -> mn (Expression String)
+get'identifier thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "identifier")
+       return r
+ 
+getm'identifier ::
+                (Monad mn, CCounter this) =>
+                  Expression this -> mn (Expression String)
+getm'identifier = get'identifier
+ 
+get'listStyle ::
+              (Monad mn, CCounter this) =>
+                Expression this -> mn (Expression String)
+get'listStyle thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "listStyle")
+       return r
+ 
+getm'listStyle ::
+               (Monad mn, CCounter this) =>
+                 Expression this -> mn (Expression String)
+getm'listStyle = get'listStyle
+ 
+get'separator ::
+              (Monad mn, CCounter this) =>
+                Expression this -> mn (Expression String)
+get'separator thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "separator")
+       return r
+ 
+getm'separator ::
+               (Monad mn, CCounter this) =>
+                 Expression this -> mn (Expression String)
+getm'separator = get'separator
+
diff --git a/Data/DOM/Css.hs b/Data/DOM/Css.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/Css.hs
@@ -0,0 +1,181 @@
+
+module Data.DOM.Css
+       (TCSSRuleList(..), TCSSRule(..), TCSSStyleRule(..),
+        TCSSMediaRule(..), TCSSFontFaceRule(..), TCSSPageRule(..),
+        TCSSImportRule(..), TCSSCharsetRule(..), TCSSUnknownRule(..),
+        TCSSStyleDeclaration(..), TCSSValue(..), TCSSPrimitiveValue(..),
+        TCSSValueList(..), TRGBColor(..), TRect(..), TCounter(..),
+        TElementCSSInlineStyle(..), TCSS2Properties(..),
+        TCSSStyleSheet(..), TViewCSS(..), TDocumentCSS(..),
+        TDOMImplementationCSS(..), CCSSRuleList, CCSSRule, CCSSStyleRule,
+        CCSSMediaRule, CCSSFontFaceRule, CCSSPageRule, CCSSImportRule,
+        CCSSCharsetRule, CCSSUnknownRule, CCSSStyleDeclaration, CCSSValue,
+        CCSSPrimitiveValue, CCSSValueList, CRGBColor, CRect, CCounter,
+        CElementCSSInlineStyle, CCSS2Properties, CCSSStyleSheet, CViewCSS,
+        CDocumentCSS, CDOMImplementationCSS)
+       where
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Views
+import Data.DOM.Stylesheets
+import Data.DOM.Dom
+ 
+data TCSSRuleList = TCSSRuleList
+ 
+data TCSSRule = TCSSRule
+ 
+data TCSSStyleRule = TCSSStyleRule
+ 
+data TCSSMediaRule = TCSSMediaRule
+ 
+data TCSSFontFaceRule = TCSSFontFaceRule
+ 
+data TCSSPageRule = TCSSPageRule
+ 
+data TCSSImportRule = TCSSImportRule
+ 
+data TCSSCharsetRule = TCSSCharsetRule
+ 
+data TCSSUnknownRule = TCSSUnknownRule
+ 
+data TCSSStyleDeclaration = TCSSStyleDeclaration
+ 
+data TCSSValue = TCSSValue
+ 
+data TCSSPrimitiveValue = TCSSPrimitiveValue
+ 
+data TCSSValueList = TCSSValueList
+ 
+data TRGBColor = TRGBColor
+ 
+data TRect = TRect
+ 
+data TCounter = TCounter
+ 
+data TElementCSSInlineStyle = TElementCSSInlineStyle
+ 
+data TCSS2Properties = TCSS2Properties
+ 
+data TCSSStyleSheet = TCSSStyleSheet
+ 
+data TViewCSS = TViewCSS
+ 
+data TDocumentCSS = TDocumentCSS
+ 
+data TDOMImplementationCSS = TDOMImplementationCSS
+ 
+class CCSSRuleList a
+ 
+class CCSSRule a
+ 
+class (CCSSRule a) => CCSSStyleRule a
+ 
+class (CCSSRule a) => CCSSMediaRule a
+ 
+class (CCSSRule a) => CCSSFontFaceRule a
+ 
+class (CCSSRule a) => CCSSPageRule a
+ 
+class (CCSSRule a) => CCSSImportRule a
+ 
+class (CCSSRule a) => CCSSCharsetRule a
+ 
+class (CCSSRule a) => CCSSUnknownRule a
+ 
+class CCSSStyleDeclaration a
+ 
+class CCSSValue a
+ 
+class (CCSSValue a) => CCSSPrimitiveValue a
+ 
+class (CCSSValue a) => CCSSValueList a
+ 
+class CRGBColor a
+ 
+class CRect a
+ 
+class CCounter a
+ 
+class CElementCSSInlineStyle a
+ 
+class CCSS2Properties a
+ 
+class (CStyleSheet a) => CCSSStyleSheet a
+ 
+class (CAbstractView a) => CViewCSS a
+ 
+class (CDocumentStyle a) => CDocumentCSS a
+ 
+class (CDOMImplementation a) => CDOMImplementationCSS a
+ 
+instance CCSSRuleList TCSSRuleList
+ 
+instance CCSSRule TCSSRule
+ 
+instance CCSSStyleRule TCSSStyleRule
+ 
+instance CCSSRule TCSSStyleRule
+ 
+instance CCSSMediaRule TCSSMediaRule
+ 
+instance CCSSRule TCSSMediaRule
+ 
+instance CCSSFontFaceRule TCSSFontFaceRule
+ 
+instance CCSSRule TCSSFontFaceRule
+ 
+instance CCSSPageRule TCSSPageRule
+ 
+instance CCSSRule TCSSPageRule
+ 
+instance CCSSImportRule TCSSImportRule
+ 
+instance CCSSRule TCSSImportRule
+ 
+instance CCSSCharsetRule TCSSCharsetRule
+ 
+instance CCSSRule TCSSCharsetRule
+ 
+instance CCSSUnknownRule TCSSUnknownRule
+ 
+instance CCSSRule TCSSUnknownRule
+ 
+instance CCSSStyleDeclaration TCSSStyleDeclaration
+ 
+instance CCSSValue TCSSValue
+ 
+instance CCSSPrimitiveValue TCSSPrimitiveValue
+ 
+instance CCSSValue TCSSPrimitiveValue
+ 
+instance CCSSValueList TCSSValueList
+ 
+instance CCSSValue TCSSValueList
+ 
+instance CRGBColor TRGBColor
+ 
+instance CRect TRect
+ 
+instance CCounter TCounter
+ 
+instance CElementCSSInlineStyle TElementCSSInlineStyle
+ 
+instance CCSS2Properties TCSS2Properties
+ 
+instance CCSSStyleSheet TCSSStyleSheet
+ 
+instance CStyleSheet TCSSStyleSheet
+ 
+instance CViewCSS TViewCSS
+ 
+instance CAbstractView TViewCSS
+ 
+instance CDocumentCSS TDocumentCSS
+ 
+instance CDocumentStyle TDocumentCSS
+ 
+instance CDOMImplementationCSS TDOMImplementationCSS
+ 
+instance CDOMImplementation TDOMImplementationCSS
+
diff --git a/Data/DOM/DOMImplementation.hs b/Data/DOM/DOMImplementation.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/DOMImplementation.hs
@@ -0,0 +1,39 @@
+
+module Data.DOM.DOMImplementation
+       (hasFeature, createDocumentType, createDocument) where
+import Data.DOM.Dom
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Document (createElement)
+ 
+hasFeature ::
+           (Monad mn, CDOMImplementation this) =>
+             Expression String ->
+               Expression String -> Expression this -> mn (Expression Bool)
+hasFeature a b thisp
+  = do let et = undefined :: Bool
+       let r = DotRef et (thisp /\ et) (Id et "hasFeature")
+       return (CallExpr et r [a /\ et, b /\ et])
+ 
+createDocumentType ::
+                   (Monad mn, CDOMImplementation this, CDocumentType zz) =>
+                     Expression String ->
+                       Expression String ->
+                         Expression String -> Expression this -> mn (Expression zz)
+createDocumentType a b c thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "createDocumentType")
+       return (CallExpr et r [a /\ et, b /\ et, c /\ et])
+ 
+createDocument ::
+               (Monad mn, CDOMImplementation this, CDocumentType doctype,
+                CDocument zz) =>
+                 Expression String ->
+                   Expression String ->
+                     Expression doctype -> Expression this -> mn (Expression zz)
+createDocument a b c thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "createDocument")
+       return (CallExpr et r [a /\ et, b /\ et, c /\ et])
+
diff --git a/Data/DOM/DOMImplementationCSS.hs b/Data/DOM/DOMImplementationCSS.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/DOMImplementationCSS.hs
@@ -0,0 +1,20 @@
+
+module Data.DOM.DOMImplementationCSS (createCSSStyleSheet) where
+import Data.DOM.Css
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Views
+import Data.DOM.Stylesheets
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+createCSSStyleSheet ::
+                    (Monad mn, CDOMImplementationCSS this, CCSSStyleSheet zz) =>
+                      Expression String ->
+                        Expression String -> Expression this -> mn (Expression zz)
+createCSSStyleSheet a b thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "createCSSStyleSheet")
+       return (CallExpr et r [a /\ et, b /\ et])
+
diff --git a/Data/DOM/Document.hs b/Data/DOM/Document.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/Document.hs
@@ -0,0 +1,172 @@
+
+module Data.DOM.Document
+       (createElement, createDocumentFragment, createTextNode,
+        createComment, createCDATASection, createProcessingInstruction,
+        createAttribute, createEntityReference, getElementsByTagName,
+        importNode, createElementNS, createAttributeNS,
+        getElementsByTagNameNS, getElementById, get'doctype, getm'doctype,
+        get'implementation, getm'implementation, get'documentElement,
+        getm'documentElement)
+       where
+import Data.DOM.Dom
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+ 
+createElement ::
+              (Monad mn, CDocument this, CElement zz) =>
+                Expression String -> Expression this -> mn (Expression zz)
+createElement a thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "createElement")
+       return (CallExpr et r [a /\ et])
+ 
+createDocumentFragment ::
+                       (Monad mn, CDocument this, CDocumentFragment zz) =>
+                         Expression this -> mn (Expression zz)
+createDocumentFragment thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "createDocumentFragment")
+       return (CallExpr et r [])
+ 
+createTextNode ::
+               (Monad mn, CDocument this, CText zz) =>
+                 Expression String -> Expression this -> mn (Expression zz)
+createTextNode a thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "createTextNode")
+       return (CallExpr et r [a /\ et])
+ 
+createComment ::
+              (Monad mn, CDocument this, CComment zz) =>
+                Expression String -> Expression this -> mn (Expression zz)
+createComment a thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "createComment")
+       return (CallExpr et r [a /\ et])
+ 
+createCDATASection ::
+                   (Monad mn, CDocument this, CCDATASection zz) =>
+                     Expression String -> Expression this -> mn (Expression zz)
+createCDATASection a thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "createCDATASection")
+       return (CallExpr et r [a /\ et])
+ 
+createProcessingInstruction ::
+                            (Monad mn, CDocument this, CProcessingInstruction zz) =>
+                              Expression String ->
+                                Expression String -> Expression this -> mn (Expression zz)
+createProcessingInstruction a b thisp
+  = do let et = undefined :: zz
+       let r
+             = DotRef et (thisp /\ et) (Id et "createProcessingInstruction")
+       return (CallExpr et r [a /\ et, b /\ et])
+ 
+createAttribute ::
+                (Monad mn, CDocument this, CAttr zz) =>
+                  Expression String -> Expression this -> mn (Expression zz)
+createAttribute a thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "createAttribute")
+       return (CallExpr et r [a /\ et])
+ 
+createEntityReference ::
+                      (Monad mn, CDocument this, CEntityReference zz) =>
+                        Expression String -> Expression this -> mn (Expression zz)
+createEntityReference a thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "createEntityReference")
+       return (CallExpr et r [a /\ et])
+ 
+getElementsByTagName ::
+                     (Monad mn, CDocument this, CNodeList zz) =>
+                       Expression String -> Expression this -> mn (Expression zz)
+getElementsByTagName a thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "getElementsByTagName")
+       return (CallExpr et r [a /\ et])
+ 
+importNode ::
+           (Monad mn, CDocument this, CNode importedNode, CNode zz) =>
+             Expression importedNode ->
+               Expression Bool -> Expression this -> mn (Expression zz)
+importNode a b thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "importNode")
+       return (CallExpr et r [a /\ et, b /\ et])
+ 
+createElementNS ::
+                (Monad mn, CDocument this, CElement zz) =>
+                  Expression String ->
+                    Expression String -> Expression this -> mn (Expression zz)
+createElementNS a b thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "createElementNS")
+       return (CallExpr et r [a /\ et, b /\ et])
+ 
+createAttributeNS ::
+                  (Monad mn, CDocument this, CAttr zz) =>
+                    Expression String ->
+                      Expression String -> Expression this -> mn (Expression zz)
+createAttributeNS a b thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "createAttributeNS")
+       return (CallExpr et r [a /\ et, b /\ et])
+ 
+getElementsByTagNameNS ::
+                       (Monad mn, CDocument this, CNodeList zz) =>
+                         Expression String ->
+                           Expression String -> Expression this -> mn (Expression zz)
+getElementsByTagNameNS a b thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "getElementsByTagNameNS")
+       return (CallExpr et r [a /\ et, b /\ et])
+ 
+getElementById ::
+               (Monad mn, CDocument this, CElement zz) =>
+                 Expression String -> Expression this -> mn (Expression zz)
+getElementById a thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "getElementById")
+       return (CallExpr et r [a /\ et])
+ 
+get'doctype ::
+            (Monad mn, CDocument this, CDocumentType zz) =>
+              Expression this -> mn (Expression zz)
+get'doctype thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "doctype")
+       return r
+ 
+getm'doctype ::
+             (Monad mn, CDocument this) =>
+               Expression this -> mn (Expression TDocumentType)
+getm'doctype = get'doctype
+ 
+get'implementation ::
+                   (Monad mn, CDocument this, CDOMImplementation zz) =>
+                     Expression this -> mn (Expression zz)
+get'implementation thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "implementation")
+       return r
+ 
+getm'implementation ::
+                    (Monad mn, CDocument this) =>
+                      Expression this -> mn (Expression TDOMImplementation)
+getm'implementation = get'implementation
+ 
+get'documentElement ::
+                    (Monad mn, CDocument this, CElement zz) =>
+                      Expression this -> mn (Expression zz)
+get'documentElement thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "documentElement")
+       return r
+ 
+getm'documentElement ::
+                     (Monad mn, CDocument this) =>
+                       Expression this -> mn (Expression TElement)
+getm'documentElement = get'documentElement
+
diff --git a/Data/DOM/DocumentCSS.hs b/Data/DOM/DocumentCSS.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/DocumentCSS.hs
@@ -0,0 +1,21 @@
+
+module Data.DOM.DocumentCSS (getOverrideStyle) where
+import Data.DOM.Css
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Views
+import Data.DOM.Stylesheets
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+getOverrideStyle ::
+                 (Monad mn, CDocumentCSS this, CElement elt,
+                  CCSSStyleDeclaration zz) =>
+                   Expression elt ->
+                     Expression String -> Expression this -> mn (Expression zz)
+getOverrideStyle a b thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "getOverrideStyle")
+       return (CallExpr et r [a /\ et, b /\ et])
+
diff --git a/Data/DOM/DocumentEvent.hs b/Data/DOM/DocumentEvent.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/DocumentEvent.hs
@@ -0,0 +1,18 @@
+
+module Data.DOM.DocumentEvent (createEvent) where
+import Data.DOM.Events
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Views
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+createEvent ::
+            (Monad mn, CDocumentEvent this, CEvent zz) =>
+              Expression String -> Expression this -> mn (Expression zz)
+createEvent a thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "createEvent")
+       return (CallExpr et r [a /\ et])
+
diff --git a/Data/DOM/DocumentRange.hs b/Data/DOM/DocumentRange.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/DocumentRange.hs
@@ -0,0 +1,17 @@
+
+module Data.DOM.DocumentRange (createRange) where
+import Data.DOM.Ranges
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+createRange ::
+            (Monad mn, CDocumentRange this, CRange zz) =>
+              Expression this -> mn (Expression zz)
+createRange thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "createRange")
+       return (CallExpr et r [])
+
diff --git a/Data/DOM/DocumentStyle.hs b/Data/DOM/DocumentStyle.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/DocumentStyle.hs
@@ -0,0 +1,23 @@
+
+module Data.DOM.DocumentStyle (get'styleSheets, getm'styleSheets)
+       where
+import Data.DOM.Stylesheets
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+get'styleSheets ::
+                (Monad mn, CDocumentStyle this, CStyleSheetList zz) =>
+                  Expression this -> mn (Expression zz)
+get'styleSheets thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "styleSheets")
+       return r
+ 
+getm'styleSheets ::
+                 (Monad mn, CDocumentStyle this) =>
+                   Expression this -> mn (Expression TStyleSheetList)
+getm'styleSheets = get'styleSheets
+
diff --git a/Data/DOM/DocumentTraversal.hs b/Data/DOM/DocumentTraversal.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/DocumentTraversal.hs
@@ -0,0 +1,34 @@
+
+module Data.DOM.DocumentTraversal
+       (createNodeIterator, createTreeWalker) where
+import Data.DOM.Traversal
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+createNodeIterator ::
+                   (Monad mn, CDocumentTraversal this, CNode root, CNodeFilter filter,
+                    CNodeIterator zz) =>
+                     Expression root ->
+                       Expression Double ->
+                         Expression filter ->
+                           Expression Bool -> Expression this -> mn (Expression zz)
+createNodeIterator a b c d thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "createNodeIterator")
+       return (CallExpr et r [a /\ et, b /\ et, c /\ et, d /\ et])
+ 
+createTreeWalker ::
+                 (Monad mn, CDocumentTraversal this, CNode root, CNodeFilter filter,
+                  CTreeWalker zz) =>
+                   Expression root ->
+                     Expression Double ->
+                       Expression filter ->
+                         Expression Bool -> Expression this -> mn (Expression zz)
+createTreeWalker a b c d thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "createTreeWalker")
+       return (CallExpr et r [a /\ et, b /\ et, c /\ et, d /\ et])
+
diff --git a/Data/DOM/DocumentType.hs b/Data/DOM/DocumentType.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/DocumentType.hs
@@ -0,0 +1,90 @@
+
+module Data.DOM.DocumentType
+       (get'name, getm'name, get'entities, getm'entities, get'notations,
+        getm'notations, get'publicId, getm'publicId, get'systemId,
+        getm'systemId, get'internalSubset, getm'internalSubset)
+       where
+import Data.DOM.Dom
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Document (createElement)
+ 
+get'name ::
+         (Monad mn, CDocumentType this) =>
+           Expression this -> mn (Expression String)
+get'name thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "name")
+       return r
+ 
+getm'name ::
+          (Monad mn, CDocumentType this) =>
+            Expression this -> mn (Expression String)
+getm'name = get'name
+ 
+get'entities ::
+             (Monad mn, CDocumentType this, CNamedNodeMap zz) =>
+               Expression this -> mn (Expression zz)
+get'entities thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "entities")
+       return r
+ 
+getm'entities ::
+              (Monad mn, CDocumentType this) =>
+                Expression this -> mn (Expression TNamedNodeMap)
+getm'entities = get'entities
+ 
+get'notations ::
+              (Monad mn, CDocumentType this, CNamedNodeMap zz) =>
+                Expression this -> mn (Expression zz)
+get'notations thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "notations")
+       return r
+ 
+getm'notations ::
+               (Monad mn, CDocumentType this) =>
+                 Expression this -> mn (Expression TNamedNodeMap)
+getm'notations = get'notations
+ 
+get'publicId ::
+             (Monad mn, CDocumentType this) =>
+               Expression this -> mn (Expression String)
+get'publicId thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "publicId")
+       return r
+ 
+getm'publicId ::
+              (Monad mn, CDocumentType this) =>
+                Expression this -> mn (Expression String)
+getm'publicId = get'publicId
+ 
+get'systemId ::
+             (Monad mn, CDocumentType this) =>
+               Expression this -> mn (Expression String)
+get'systemId thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "systemId")
+       return r
+ 
+getm'systemId ::
+              (Monad mn, CDocumentType this) =>
+                Expression this -> mn (Expression String)
+getm'systemId = get'systemId
+ 
+get'internalSubset ::
+                   (Monad mn, CDocumentType this) =>
+                     Expression this -> mn (Expression String)
+get'internalSubset thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "internalSubset")
+       return r
+ 
+getm'internalSubset ::
+                    (Monad mn, CDocumentType this) =>
+                      Expression this -> mn (Expression String)
+getm'internalSubset = get'internalSubset
+
diff --git a/Data/DOM/DocumentView.hs b/Data/DOM/DocumentView.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/DocumentView.hs
@@ -0,0 +1,23 @@
+
+module Data.DOM.DocumentView (get'defaultView, getm'defaultView)
+       where
+import Data.DOM.Views
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+get'defaultView ::
+                (Monad mn, CDocumentView this, CAbstractView zz) =>
+                  Expression this -> mn (Expression zz)
+get'defaultView thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "defaultView")
+       return r
+ 
+getm'defaultView ::
+                 (Monad mn, CDocumentView this) =>
+                   Expression this -> mn (Expression TAbstractView)
+getm'defaultView = get'defaultView
+
diff --git a/Data/DOM/DocumentWindow.hs b/Data/DOM/DocumentWindow.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/DocumentWindow.hs
@@ -0,0 +1,23 @@
+
+module Data.DOM.DocumentWindow (get'location, getm'location) where
+import Data.DOM.WindowObj
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Views
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+get'location ::
+             (Monad mn, CDocumentWindow this, CLocation zz) =>
+               Expression this -> mn (Expression zz)
+get'location thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "location")
+       return r
+ 
+getm'location ::
+              (Monad mn, CDocumentWindow this) =>
+                Expression this -> mn (Expression TLocation)
+getm'location = get'location
+
diff --git a/Data/DOM/Dom.hs b/Data/DOM/Dom.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/Dom.hs
@@ -0,0 +1,152 @@
+
+module Data.DOM.Dom
+       (TDOMImplementation(..), TNode(..), TNodeList(..),
+        TNamedNodeMap(..), TCharacterData(..), TAttr(..), TElement(..),
+        TText(..), TComment(..), TCDATASection(..), TDocumentType(..),
+        TNotation(..), TEntity(..), TEntityReference(..),
+        TProcessingInstruction(..), TDocumentFragment(..), TDocument(..),
+        CDOMImplementation, CNode, CNodeList, CNamedNodeMap,
+        CCharacterData, CAttr, CElement, CText, CComment, CCDATASection,
+        CDocumentType, CNotation, CEntity, CEntityReference,
+        CProcessingInstruction, CDocumentFragment, CDocument)
+       where
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+ 
+data TDOMImplementation = TDOMImplementation
+ 
+data TNode = TNode
+ 
+data TNodeList = TNodeList
+ 
+data TNamedNodeMap = TNamedNodeMap
+ 
+data TCharacterData = TCharacterData
+ 
+data TAttr = TAttr
+ 
+data TElement = TElement
+ 
+data TText = TText
+ 
+data TComment = TComment
+ 
+data TCDATASection = TCDATASection
+ 
+data TDocumentType = TDocumentType
+ 
+data TNotation = TNotation
+ 
+data TEntity = TEntity
+ 
+data TEntityReference = TEntityReference
+ 
+data TProcessingInstruction = TProcessingInstruction
+ 
+data TDocumentFragment = TDocumentFragment
+ 
+data TDocument = TDocument
+ 
+class CDOMImplementation a
+ 
+class CNode a
+ 
+class CNodeList a
+ 
+class CNamedNodeMap a
+ 
+class (CNode a) => CCharacterData a
+ 
+class (CNode a) => CAttr a
+ 
+class (CNode a) => CElement a
+ 
+class (CCharacterData a) => CText a
+ 
+class (CCharacterData a) => CComment a
+ 
+class (CText a) => CCDATASection a
+ 
+class (CNode a) => CDocumentType a
+ 
+class (CNode a) => CNotation a
+ 
+class (CNode a) => CEntity a
+ 
+class (CNode a) => CEntityReference a
+ 
+class (CNode a) => CProcessingInstruction a
+ 
+class (CNode a) => CDocumentFragment a
+ 
+class (CNode a) => CDocument a
+ 
+instance CDOMImplementation TDOMImplementation
+ 
+instance CNode TNode
+ 
+instance CNodeList TNodeList
+ 
+instance CNamedNodeMap TNamedNodeMap
+ 
+instance CCharacterData TCharacterData
+ 
+instance CNode TCharacterData
+ 
+instance CAttr TAttr
+ 
+instance CNode TAttr
+ 
+instance CElement TElement
+ 
+instance CNode TElement
+ 
+instance CText TText
+ 
+instance CCharacterData TText
+ 
+instance CNode TText
+ 
+instance CComment TComment
+ 
+instance CCharacterData TComment
+ 
+instance CNode TComment
+ 
+instance CCDATASection TCDATASection
+ 
+instance CText TCDATASection
+ 
+instance CCharacterData TCDATASection
+ 
+instance CNode TCDATASection
+ 
+instance CDocumentType TDocumentType
+ 
+instance CNode TDocumentType
+ 
+instance CNotation TNotation
+ 
+instance CNode TNotation
+ 
+instance CEntity TEntity
+ 
+instance CNode TEntity
+ 
+instance CEntityReference TEntityReference
+ 
+instance CNode TEntityReference
+ 
+instance CProcessingInstruction TProcessingInstruction
+ 
+instance CNode TProcessingInstruction
+ 
+instance CDocumentFragment TDocumentFragment
+ 
+instance CNode TDocumentFragment
+ 
+instance CDocument TDocument
+ 
+instance CNode TDocument
+
diff --git a/Data/DOM/Element.hs b/Data/DOM/Element.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/Element.hs
@@ -0,0 +1,155 @@
+
+module Data.DOM.Element
+       (getAttribute, setAttribute, removeAttribute, getAttributeNode,
+        setAttributeNode, removeAttributeNode, getElementsByTagName,
+        getAttributeNS, setAttributeNS, removeAttributeNS,
+        getAttributeNodeNS, setAttributeNodeNS, getElementsByTagNameNS,
+        hasAttribute, hasAttributeNS, get'tagName, getm'tagName)
+       where
+import Data.DOM.Dom
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Document (createElement)
+ 
+getAttribute ::
+             (Monad mn, CElement this) =>
+               Expression String -> Expression this -> mn (Expression String)
+getAttribute a thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "getAttribute")
+       return (CallExpr et r [a /\ et])
+ 
+setAttribute ::
+             (Monad mn, CElement this) =>
+               Expression String ->
+                 Expression String -> Expression this -> mn (Expression ())
+setAttribute a b thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "setAttribute")
+       return (CallExpr et r [a /\ et, b /\ et])
+ 
+removeAttribute ::
+                (Monad mn, CElement this) =>
+                  Expression String -> Expression this -> mn (Expression ())
+removeAttribute a thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "removeAttribute")
+       return (CallExpr et r [a /\ et])
+ 
+getAttributeNode ::
+                 (Monad mn, CElement this, CAttr zz) =>
+                   Expression String -> Expression this -> mn (Expression zz)
+getAttributeNode a thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "getAttributeNode")
+       return (CallExpr et r [a /\ et])
+ 
+setAttributeNode ::
+                 (Monad mn, CElement this, CAttr newAttr, CAttr zz) =>
+                   Expression newAttr -> Expression this -> mn (Expression zz)
+setAttributeNode a thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "setAttributeNode")
+       return (CallExpr et r [a /\ et])
+ 
+removeAttributeNode ::
+                    (Monad mn, CElement this, CAttr oldAttr, CAttr zz) =>
+                      Expression oldAttr -> Expression this -> mn (Expression zz)
+removeAttributeNode a thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "removeAttributeNode")
+       return (CallExpr et r [a /\ et])
+ 
+getElementsByTagName ::
+                     (Monad mn, CElement this, CNodeList zz) =>
+                       Expression String -> Expression this -> mn (Expression zz)
+getElementsByTagName a thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "getElementsByTagName")
+       return (CallExpr et r [a /\ et])
+ 
+getAttributeNS ::
+               (Monad mn, CElement this) =>
+                 Expression String ->
+                   Expression String -> Expression this -> mn (Expression String)
+getAttributeNS a b thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "getAttributeNS")
+       return (CallExpr et r [a /\ et, b /\ et])
+ 
+setAttributeNS ::
+               (Monad mn, CElement this) =>
+                 Expression String ->
+                   Expression String ->
+                     Expression String -> Expression this -> mn (Expression ())
+setAttributeNS a b c thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "setAttributeNS")
+       return (CallExpr et r [a /\ et, b /\ et, c /\ et])
+ 
+removeAttributeNS ::
+                  (Monad mn, CElement this) =>
+                    Expression String ->
+                      Expression String -> Expression this -> mn (Expression ())
+removeAttributeNS a b thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "removeAttributeNS")
+       return (CallExpr et r [a /\ et, b /\ et])
+ 
+getAttributeNodeNS ::
+                   (Monad mn, CElement this, CAttr zz) =>
+                     Expression String ->
+                       Expression String -> Expression this -> mn (Expression zz)
+getAttributeNodeNS a b thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "getAttributeNodeNS")
+       return (CallExpr et r [a /\ et, b /\ et])
+ 
+setAttributeNodeNS ::
+                   (Monad mn, CElement this, CAttr newAttr, CAttr zz) =>
+                     Expression newAttr -> Expression this -> mn (Expression zz)
+setAttributeNodeNS a thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "setAttributeNodeNS")
+       return (CallExpr et r [a /\ et])
+ 
+getElementsByTagNameNS ::
+                       (Monad mn, CElement this, CNodeList zz) =>
+                         Expression String ->
+                           Expression String -> Expression this -> mn (Expression zz)
+getElementsByTagNameNS a b thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "getElementsByTagNameNS")
+       return (CallExpr et r [a /\ et, b /\ et])
+ 
+hasAttribute ::
+             (Monad mn, CElement this) =>
+               Expression String -> Expression this -> mn (Expression Bool)
+hasAttribute a thisp
+  = do let et = undefined :: Bool
+       let r = DotRef et (thisp /\ et) (Id et "hasAttribute")
+       return (CallExpr et r [a /\ et])
+ 
+hasAttributeNS ::
+               (Monad mn, CElement this) =>
+                 Expression String ->
+                   Expression String -> Expression this -> mn (Expression Bool)
+hasAttributeNS a b thisp
+  = do let et = undefined :: Bool
+       let r = DotRef et (thisp /\ et) (Id et "hasAttributeNS")
+       return (CallExpr et r [a /\ et, b /\ et])
+ 
+get'tagName ::
+            (Monad mn, CElement this) =>
+              Expression this -> mn (Expression String)
+get'tagName thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "tagName")
+       return r
+ 
+getm'tagName ::
+             (Monad mn, CElement this) =>
+               Expression this -> mn (Expression String)
+getm'tagName = get'tagName
+
diff --git a/Data/DOM/ElementCSSInlineStyle.hs b/Data/DOM/ElementCSSInlineStyle.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/ElementCSSInlineStyle.hs
@@ -0,0 +1,24 @@
+
+module Data.DOM.ElementCSSInlineStyle (get'style, getm'style) where
+import Data.DOM.Css
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Views
+import Data.DOM.Stylesheets
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+get'style ::
+          (Monad mn, CElementCSSInlineStyle this, CCSSStyleDeclaration zz) =>
+            Expression this -> mn (Expression zz)
+get'style thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "style")
+       return r
+ 
+getm'style ::
+           (Monad mn, CElementCSSInlineStyle this) =>
+             Expression this -> mn (Expression TCSSStyleDeclaration)
+getm'style = get'style
+
diff --git a/Data/DOM/EmbeddingElement.hs b/Data/DOM/EmbeddingElement.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/EmbeddingElement.hs
@@ -0,0 +1,39 @@
+
+module Data.DOM.EmbeddingElement
+       (get'contentDocument, getm'contentDocument, get'contentWindow,
+        getm'contentWindow)
+       where
+import Data.DOM.WindowObj
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Views
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+get'contentDocument ::
+                    (Monad mn, CEmbeddingElement this, CDocument zz) =>
+                      Expression this -> mn (Expression zz)
+get'contentDocument thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "contentDocument")
+       return r
+ 
+getm'contentDocument ::
+                     (Monad mn, CEmbeddingElement this) =>
+                       Expression this -> mn (Expression TDocument)
+getm'contentDocument = get'contentDocument
+ 
+get'contentWindow ::
+                  (Monad mn, CEmbeddingElement this, CWindow zz) =>
+                    Expression this -> mn (Expression zz)
+get'contentWindow thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "contentWindow")
+       return r
+ 
+getm'contentWindow ::
+                   (Monad mn, CEmbeddingElement this) =>
+                     Expression this -> mn (Expression TWindow)
+getm'contentWindow = get'contentWindow
+
diff --git a/Data/DOM/Entity.hs b/Data/DOM/Entity.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/Entity.hs
@@ -0,0 +1,50 @@
+
+module Data.DOM.Entity
+       (get'publicId, getm'publicId, get'systemId, getm'systemId,
+        get'notationName, getm'notationName)
+       where
+import Data.DOM.Dom
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Document (createElement)
+ 
+get'publicId ::
+             (Monad mn, CEntity this) =>
+               Expression this -> mn (Expression String)
+get'publicId thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "publicId")
+       return r
+ 
+getm'publicId ::
+              (Monad mn, CEntity this) =>
+                Expression this -> mn (Expression String)
+getm'publicId = get'publicId
+ 
+get'systemId ::
+             (Monad mn, CEntity this) =>
+               Expression this -> mn (Expression String)
+get'systemId thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "systemId")
+       return r
+ 
+getm'systemId ::
+              (Monad mn, CEntity this) =>
+                Expression this -> mn (Expression String)
+getm'systemId = get'systemId
+ 
+get'notationName ::
+                 (Monad mn, CEntity this) =>
+                   Expression this -> mn (Expression String)
+get'notationName thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "notationName")
+       return r
+ 
+getm'notationName ::
+                  (Monad mn, CEntity this) =>
+                    Expression this -> mn (Expression String)
+getm'notationName = get'notationName
+
diff --git a/Data/DOM/Event.hs b/Data/DOM/Event.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/Event.hs
@@ -0,0 +1,130 @@
+
+module Data.DOM.Event
+       (stopPropagation, preventDefault, initEvent, cCAPTURING_PHASE,
+        cAT_TARGET, cBUBBLING_PHASE, get'type, getm'type, get'target,
+        getm'target, get'currentTarget, getm'currentTarget, get'eventPhase,
+        getm'eventPhase, get'bubbles, getm'bubbles, get'cancelable,
+        getm'cancelable, get'timeStamp, getm'timeStamp)
+       where
+import Data.DOM.Events
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Views
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+stopPropagation ::
+                (Monad mn, CEvent this) => Expression this -> mn (Expression ())
+stopPropagation thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "stopPropagation")
+       return (CallExpr et r [])
+ 
+preventDefault ::
+               (Monad mn, CEvent this) => Expression this -> mn (Expression ())
+preventDefault thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "preventDefault")
+       return (CallExpr et r [])
+ 
+initEvent ::
+          (Monad mn, CEvent this) =>
+            Expression String ->
+              Expression Bool ->
+                Expression Bool -> Expression this -> mn (Expression ())
+initEvent a b c thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "initEvent")
+       return (CallExpr et r [a /\ et, b /\ et, c /\ et])
+cCAPTURING_PHASE = 1
+cAT_TARGET = 2
+cBUBBLING_PHASE = 3
+ 
+get'type ::
+         (Monad mn, CEvent this) =>
+           Expression this -> mn (Expression String)
+get'type thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "type")
+       return r
+ 
+getm'type ::
+          (Monad mn, CEvent this) =>
+            Expression this -> mn (Expression String)
+getm'type = get'type
+ 
+get'target ::
+           (Monad mn, CEvent this, CEventTarget zz) =>
+             Expression this -> mn (Expression zz)
+get'target thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "target")
+       return r
+ 
+getm'target ::
+            (Monad mn, CEvent this) =>
+              Expression this -> mn (Expression TEventTarget)
+getm'target = get'target
+ 
+get'currentTarget ::
+                  (Monad mn, CEvent this, CEventTarget zz) =>
+                    Expression this -> mn (Expression zz)
+get'currentTarget thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "currentTarget")
+       return r
+ 
+getm'currentTarget ::
+                   (Monad mn, CEvent this) =>
+                     Expression this -> mn (Expression TEventTarget)
+getm'currentTarget = get'currentTarget
+ 
+get'eventPhase ::
+               (Monad mn, CEvent this) =>
+                 Expression this -> mn (Expression Double)
+get'eventPhase thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "eventPhase")
+       return r
+ 
+getm'eventPhase ::
+                (Monad mn, CEvent this) =>
+                  Expression this -> mn (Expression Double)
+getm'eventPhase = get'eventPhase
+ 
+get'bubbles ::
+            (Monad mn, CEvent this) => Expression this -> mn (Expression Bool)
+get'bubbles thisp
+  = do let et = undefined :: Bool
+       let r = DotRef et (thisp /\ et) (Id et "bubbles")
+       return r
+ 
+getm'bubbles ::
+             (Monad mn, CEvent this) => Expression this -> mn (Expression Bool)
+getm'bubbles = get'bubbles
+ 
+get'cancelable ::
+               (Monad mn, CEvent this) => Expression this -> mn (Expression Bool)
+get'cancelable thisp
+  = do let et = undefined :: Bool
+       let r = DotRef et (thisp /\ et) (Id et "cancelable")
+       return r
+ 
+getm'cancelable ::
+                (Monad mn, CEvent this) => Expression this -> mn (Expression Bool)
+getm'cancelable = get'cancelable
+ 
+get'timeStamp ::
+              (Monad mn, CEvent this) =>
+                Expression this -> mn (Expression Double)
+get'timeStamp thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "timeStamp")
+       return r
+ 
+getm'timeStamp ::
+               (Monad mn, CEvent this) =>
+                 Expression this -> mn (Expression Double)
+getm'timeStamp = get'timeStamp
+
diff --git a/Data/DOM/EventListener.hs b/Data/DOM/EventListener.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/EventListener.hs
@@ -0,0 +1,18 @@
+
+module Data.DOM.EventListener (handleEvent) where
+import Data.DOM.Events
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Views
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+handleEvent ::
+            (Monad mn, CEventListener this, CEvent evt) =>
+              Expression evt -> Expression this -> mn (Expression ())
+handleEvent a thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "handleEvent")
+       return (CallExpr et r [a /\ et])
+
diff --git a/Data/DOM/EventTarget.hs b/Data/DOM/EventTarget.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/EventTarget.hs
@@ -0,0 +1,39 @@
+
+module Data.DOM.EventTarget
+       (addEventListener, removeEventListener, dispatchEvent) where
+import Data.DOM.Events
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Views
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+addEventListener ::
+                 (Monad mn, CEventTarget this, CEventListener listener) =>
+                   Expression String ->
+                     Expression listener ->
+                       Expression Bool -> Expression this -> mn (Expression ())
+addEventListener a b c thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "addEventListener")
+       return (CallExpr et r [a /\ et, b /\ et, c /\ et])
+ 
+removeEventListener ::
+                    (Monad mn, CEventTarget this, CEventListener listener) =>
+                      Expression String ->
+                        Expression listener ->
+                          Expression Bool -> Expression this -> mn (Expression ())
+removeEventListener a b c thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "removeEventListener")
+       return (CallExpr et r [a /\ et, b /\ et, c /\ et])
+ 
+dispatchEvent ::
+              (Monad mn, CEventTarget this, CEvent evt) =>
+                Expression evt -> Expression this -> mn (Expression Bool)
+dispatchEvent a thisp
+  = do let et = undefined :: Bool
+       let r = DotRef et (thisp /\ et) (Id et "dispatchEvent")
+       return (CallExpr et r [a /\ et])
+
diff --git a/Data/DOM/Events.hs b/Data/DOM/Events.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/Events.hs
@@ -0,0 +1,84 @@
+
+module Data.DOM.Events
+       (TEventTarget(..), TEventListener(..), TEvent(..),
+        TDocumentEvent(..), TUIEvent(..), TMouseEvent(..),
+        TMutationEvent(..), TKeyboardEvent(..), TKeyEvent(..),
+        CEventTarget, CEventListener, CEvent, CDocumentEvent, CUIEvent,
+        CMouseEvent, CMutationEvent, CKeyboardEvent, CKeyEvent)
+       where
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Views
+import Data.DOM.Dom
+ 
+data TEventTarget = TEventTarget
+ 
+data TEventListener = TEventListener
+ 
+data TEvent = TEvent
+ 
+data TDocumentEvent = TDocumentEvent
+ 
+data TUIEvent = TUIEvent
+ 
+data TMouseEvent = TMouseEvent
+ 
+data TMutationEvent = TMutationEvent
+ 
+data TKeyboardEvent = TKeyboardEvent
+ 
+data TKeyEvent = TKeyEvent
+ 
+class CEventTarget a
+ 
+class CEventListener a
+ 
+class CEvent a
+ 
+class CDocumentEvent a
+ 
+class (CEvent a) => CUIEvent a
+ 
+class (CUIEvent a) => CMouseEvent a
+ 
+class (CEvent a) => CMutationEvent a
+ 
+class (CUIEvent a) => CKeyboardEvent a
+ 
+class (CUIEvent a) => CKeyEvent a
+ 
+instance CEventTarget TEventTarget
+ 
+instance CEventListener TEventListener
+ 
+instance CEvent TEvent
+ 
+instance CDocumentEvent TDocumentEvent
+ 
+instance CUIEvent TUIEvent
+ 
+instance CEvent TUIEvent
+ 
+instance CMouseEvent TMouseEvent
+ 
+instance CUIEvent TMouseEvent
+ 
+instance CEvent TMouseEvent
+ 
+instance CMutationEvent TMutationEvent
+ 
+instance CEvent TMutationEvent
+ 
+instance CKeyboardEvent TKeyboardEvent
+ 
+instance CUIEvent TKeyboardEvent
+ 
+instance CEvent TKeyboardEvent
+ 
+instance CKeyEvent TKeyEvent
+ 
+instance CUIEvent TKeyEvent
+ 
+instance CEvent TKeyEvent
+
diff --git a/Data/DOM/HTMLAnchorElement.hs b/Data/DOM/HTMLAnchorElement.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/HTMLAnchorElement.hs
@@ -0,0 +1,249 @@
+
+module Data.DOM.HTMLAnchorElement
+       (blur, focus, set'accessKey, get'accessKey, getm'accessKey,
+        set'charset, get'charset, getm'charset, set'coords, get'coords,
+        getm'coords, set'href, get'href, getm'href, set'hreflang,
+        get'hreflang, getm'hreflang, set'name, get'name, getm'name,
+        set'rel, get'rel, getm'rel, set'rev, get'rev, getm'rev, set'shape,
+        get'shape, getm'shape, set'tabIndex, get'tabIndex, getm'tabIndex,
+        set'target, get'target, getm'target, set'type, get'type, getm'type)
+       where
+import Data.DOM.Html2
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+blur ::
+     (Monad mn, CHTMLAnchorElement this) =>
+       Expression this -> mn (Expression ())
+blur thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "blur")
+       return (CallExpr et r [])
+ 
+focus ::
+      (Monad mn, CHTMLAnchorElement this) =>
+        Expression this -> mn (Expression ())
+focus thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "focus")
+       return (CallExpr et r [])
+ 
+set'accessKey ::
+              (Monad mn, CHTMLAnchorElement zz) =>
+                Expression String -> Expression zz -> mn (Expression zz)
+set'accessKey = setjsProperty "accessKey"
+ 
+get'accessKey ::
+              (Monad mn, CHTMLAnchorElement this) =>
+                Expression this -> mn (Expression String)
+get'accessKey thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "accessKey")
+       return r
+ 
+getm'accessKey ::
+               (Monad mn, CHTMLAnchorElement this) =>
+                 Expression this -> mn (Expression String)
+getm'accessKey = get'accessKey
+ 
+set'charset ::
+            (Monad mn, CHTMLAnchorElement zz) =>
+              Expression String -> Expression zz -> mn (Expression zz)
+set'charset = setjsProperty "charset"
+ 
+get'charset ::
+            (Monad mn, CHTMLAnchorElement this) =>
+              Expression this -> mn (Expression String)
+get'charset thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "charset")
+       return r
+ 
+getm'charset ::
+             (Monad mn, CHTMLAnchorElement this) =>
+               Expression this -> mn (Expression String)
+getm'charset = get'charset
+ 
+set'coords ::
+           (Monad mn, CHTMLAnchorElement zz) =>
+             Expression String -> Expression zz -> mn (Expression zz)
+set'coords = setjsProperty "coords"
+ 
+get'coords ::
+           (Monad mn, CHTMLAnchorElement this) =>
+             Expression this -> mn (Expression String)
+get'coords thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "coords")
+       return r
+ 
+getm'coords ::
+            (Monad mn, CHTMLAnchorElement this) =>
+              Expression this -> mn (Expression String)
+getm'coords = get'coords
+ 
+set'href ::
+         (Monad mn, CHTMLAnchorElement zz) =>
+           Expression String -> Expression zz -> mn (Expression zz)
+set'href = setjsProperty "href"
+ 
+get'href ::
+         (Monad mn, CHTMLAnchorElement this) =>
+           Expression this -> mn (Expression String)
+get'href thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "href")
+       return r
+ 
+getm'href ::
+          (Monad mn, CHTMLAnchorElement this) =>
+            Expression this -> mn (Expression String)
+getm'href = get'href
+ 
+set'hreflang ::
+             (Monad mn, CHTMLAnchorElement zz) =>
+               Expression String -> Expression zz -> mn (Expression zz)
+set'hreflang = setjsProperty "hreflang"
+ 
+get'hreflang ::
+             (Monad mn, CHTMLAnchorElement this) =>
+               Expression this -> mn (Expression String)
+get'hreflang thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "hreflang")
+       return r
+ 
+getm'hreflang ::
+              (Monad mn, CHTMLAnchorElement this) =>
+                Expression this -> mn (Expression String)
+getm'hreflang = get'hreflang
+ 
+set'name ::
+         (Monad mn, CHTMLAnchorElement zz) =>
+           Expression String -> Expression zz -> mn (Expression zz)
+set'name = setjsProperty "name"
+ 
+get'name ::
+         (Monad mn, CHTMLAnchorElement this) =>
+           Expression this -> mn (Expression String)
+get'name thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "name")
+       return r
+ 
+getm'name ::
+          (Monad mn, CHTMLAnchorElement this) =>
+            Expression this -> mn (Expression String)
+getm'name = get'name
+ 
+set'rel ::
+        (Monad mn, CHTMLAnchorElement zz) =>
+          Expression String -> Expression zz -> mn (Expression zz)
+set'rel = setjsProperty "rel"
+ 
+get'rel ::
+        (Monad mn, CHTMLAnchorElement this) =>
+          Expression this -> mn (Expression String)
+get'rel thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "rel")
+       return r
+ 
+getm'rel ::
+         (Monad mn, CHTMLAnchorElement this) =>
+           Expression this -> mn (Expression String)
+getm'rel = get'rel
+ 
+set'rev ::
+        (Monad mn, CHTMLAnchorElement zz) =>
+          Expression String -> Expression zz -> mn (Expression zz)
+set'rev = setjsProperty "rev"
+ 
+get'rev ::
+        (Monad mn, CHTMLAnchorElement this) =>
+          Expression this -> mn (Expression String)
+get'rev thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "rev")
+       return r
+ 
+getm'rev ::
+         (Monad mn, CHTMLAnchorElement this) =>
+           Expression this -> mn (Expression String)
+getm'rev = get'rev
+ 
+set'shape ::
+          (Monad mn, CHTMLAnchorElement zz) =>
+            Expression String -> Expression zz -> mn (Expression zz)
+set'shape = setjsProperty "shape"
+ 
+get'shape ::
+          (Monad mn, CHTMLAnchorElement this) =>
+            Expression this -> mn (Expression String)
+get'shape thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "shape")
+       return r
+ 
+getm'shape ::
+           (Monad mn, CHTMLAnchorElement this) =>
+             Expression this -> mn (Expression String)
+getm'shape = get'shape
+ 
+set'tabIndex ::
+             (Monad mn, CHTMLAnchorElement zz) =>
+               Expression Double -> Expression zz -> mn (Expression zz)
+set'tabIndex = setjsProperty "tabIndex"
+ 
+get'tabIndex ::
+             (Monad mn, CHTMLAnchorElement this) =>
+               Expression this -> mn (Expression Double)
+get'tabIndex thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "tabIndex")
+       return r
+ 
+getm'tabIndex ::
+              (Monad mn, CHTMLAnchorElement this) =>
+                Expression this -> mn (Expression Double)
+getm'tabIndex = get'tabIndex
+ 
+set'target ::
+           (Monad mn, CHTMLAnchorElement zz) =>
+             Expression String -> Expression zz -> mn (Expression zz)
+set'target = setjsProperty "target"
+ 
+get'target ::
+           (Monad mn, CHTMLAnchorElement this) =>
+             Expression this -> mn (Expression String)
+get'target thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "target")
+       return r
+ 
+getm'target ::
+            (Monad mn, CHTMLAnchorElement this) =>
+              Expression this -> mn (Expression String)
+getm'target = get'target
+ 
+set'type ::
+         (Monad mn, CHTMLAnchorElement zz) =>
+           Expression String -> Expression zz -> mn (Expression zz)
+set'type = setjsProperty "type"
+ 
+get'type ::
+         (Monad mn, CHTMLAnchorElement this) =>
+           Expression this -> mn (Expression String)
+get'type thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "type")
+       return r
+ 
+getm'type ::
+          (Monad mn, CHTMLAnchorElement this) =>
+            Expression this -> mn (Expression String)
+getm'type = get'type
+
diff --git a/Data/DOM/HTMLAppletElement.hs b/Data/DOM/HTMLAppletElement.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/HTMLAppletElement.hs
@@ -0,0 +1,220 @@
+
+module Data.DOM.HTMLAppletElement
+       (set'align, get'align, getm'align, set'alt, get'alt, getm'alt,
+        set'archive, get'archive, getm'archive, set'code, get'code,
+        getm'code, set'codeBase, get'codeBase, getm'codeBase, set'height,
+        get'height, getm'height, set'hspace, get'hspace, getm'hspace,
+        set'name, get'name, getm'name, set'object, get'object, getm'object,
+        set'vspace, get'vspace, getm'vspace, set'width, get'width,
+        getm'width, mkApplet)
+       where
+import Data.DOM.Html2
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+set'align ::
+          (Monad mn, CHTMLAppletElement zz) =>
+            Expression String -> Expression zz -> mn (Expression zz)
+set'align = setjsProperty "align"
+ 
+get'align ::
+          (Monad mn, CHTMLAppletElement this) =>
+            Expression this -> mn (Expression String)
+get'align thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "align")
+       return r
+ 
+getm'align ::
+           (Monad mn, CHTMLAppletElement this) =>
+             Expression this -> mn (Expression String)
+getm'align = get'align
+ 
+set'alt ::
+        (Monad mn, CHTMLAppletElement zz) =>
+          Expression String -> Expression zz -> mn (Expression zz)
+set'alt = setjsProperty "alt"
+ 
+get'alt ::
+        (Monad mn, CHTMLAppletElement this) =>
+          Expression this -> mn (Expression String)
+get'alt thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "alt")
+       return r
+ 
+getm'alt ::
+         (Monad mn, CHTMLAppletElement this) =>
+           Expression this -> mn (Expression String)
+getm'alt = get'alt
+ 
+set'archive ::
+            (Monad mn, CHTMLAppletElement zz) =>
+              Expression String -> Expression zz -> mn (Expression zz)
+set'archive = setjsProperty "archive"
+ 
+get'archive ::
+            (Monad mn, CHTMLAppletElement this) =>
+              Expression this -> mn (Expression String)
+get'archive thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "archive")
+       return r
+ 
+getm'archive ::
+             (Monad mn, CHTMLAppletElement this) =>
+               Expression this -> mn (Expression String)
+getm'archive = get'archive
+ 
+set'code ::
+         (Monad mn, CHTMLAppletElement zz) =>
+           Expression String -> Expression zz -> mn (Expression zz)
+set'code = setjsProperty "code"
+ 
+get'code ::
+         (Monad mn, CHTMLAppletElement this) =>
+           Expression this -> mn (Expression String)
+get'code thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "code")
+       return r
+ 
+getm'code ::
+          (Monad mn, CHTMLAppletElement this) =>
+            Expression this -> mn (Expression String)
+getm'code = get'code
+ 
+set'codeBase ::
+             (Monad mn, CHTMLAppletElement zz) =>
+               Expression String -> Expression zz -> mn (Expression zz)
+set'codeBase = setjsProperty "codeBase"
+ 
+get'codeBase ::
+             (Monad mn, CHTMLAppletElement this) =>
+               Expression this -> mn (Expression String)
+get'codeBase thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "codeBase")
+       return r
+ 
+getm'codeBase ::
+              (Monad mn, CHTMLAppletElement this) =>
+                Expression this -> mn (Expression String)
+getm'codeBase = get'codeBase
+ 
+set'height ::
+           (Monad mn, CHTMLAppletElement zz) =>
+             Expression String -> Expression zz -> mn (Expression zz)
+set'height = setjsProperty "height"
+ 
+get'height ::
+           (Monad mn, CHTMLAppletElement this) =>
+             Expression this -> mn (Expression String)
+get'height thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "height")
+       return r
+ 
+getm'height ::
+            (Monad mn, CHTMLAppletElement this) =>
+              Expression this -> mn (Expression String)
+getm'height = get'height
+ 
+set'hspace ::
+           (Monad mn, CHTMLAppletElement zz) =>
+             Expression Double -> Expression zz -> mn (Expression zz)
+set'hspace = setjsProperty "hspace"
+ 
+get'hspace ::
+           (Monad mn, CHTMLAppletElement this) =>
+             Expression this -> mn (Expression Double)
+get'hspace thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "hspace")
+       return r
+ 
+getm'hspace ::
+            (Monad mn, CHTMLAppletElement this) =>
+              Expression this -> mn (Expression Double)
+getm'hspace = get'hspace
+ 
+set'name ::
+         (Monad mn, CHTMLAppletElement zz) =>
+           Expression String -> Expression zz -> mn (Expression zz)
+set'name = setjsProperty "name"
+ 
+get'name ::
+         (Monad mn, CHTMLAppletElement this) =>
+           Expression this -> mn (Expression String)
+get'name thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "name")
+       return r
+ 
+getm'name ::
+          (Monad mn, CHTMLAppletElement this) =>
+            Expression this -> mn (Expression String)
+getm'name = get'name
+ 
+set'object ::
+           (Monad mn, CHTMLAppletElement zz) =>
+             Expression String -> Expression zz -> mn (Expression zz)
+set'object = setjsProperty "object"
+ 
+get'object ::
+           (Monad mn, CHTMLAppletElement this) =>
+             Expression this -> mn (Expression String)
+get'object thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "object")
+       return r
+ 
+getm'object ::
+            (Monad mn, CHTMLAppletElement this) =>
+              Expression this -> mn (Expression String)
+getm'object = get'object
+ 
+set'vspace ::
+           (Monad mn, CHTMLAppletElement zz) =>
+             Expression Double -> Expression zz -> mn (Expression zz)
+set'vspace = setjsProperty "vspace"
+ 
+get'vspace ::
+           (Monad mn, CHTMLAppletElement this) =>
+             Expression this -> mn (Expression Double)
+get'vspace thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "vspace")
+       return r
+ 
+getm'vspace ::
+            (Monad mn, CHTMLAppletElement this) =>
+              Expression this -> mn (Expression Double)
+getm'vspace = get'vspace
+ 
+set'width ::
+          (Monad mn, CHTMLAppletElement zz) =>
+            Expression String -> Expression zz -> mn (Expression zz)
+set'width = setjsProperty "width"
+ 
+get'width ::
+          (Monad mn, CHTMLAppletElement this) =>
+            Expression this -> mn (Expression String)
+get'width thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "width")
+       return r
+ 
+getm'width ::
+           (Monad mn, CHTMLAppletElement this) =>
+             Expression this -> mn (Expression String)
+getm'width = get'width
+ 
+mkApplet ::
+         (Monad mn, CHTMLDocument a) =>
+           Expression a -> mn (Expression THTMLAppletElement)
+mkApplet = createElement (StringLit "applet" "applet")
+
diff --git a/Data/DOM/HTMLAreaElement.hs b/Data/DOM/HTMLAreaElement.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/HTMLAreaElement.hs
@@ -0,0 +1,159 @@
+
+module Data.DOM.HTMLAreaElement
+       (set'accessKey, get'accessKey, getm'accessKey, set'alt, get'alt,
+        getm'alt, set'coords, get'coords, getm'coords, set'href, get'href,
+        getm'href, set'noHref, get'noHref, getm'noHref, set'shape,
+        get'shape, getm'shape, set'tabIndex, get'tabIndex, getm'tabIndex,
+        set'target, get'target, getm'target)
+       where
+import Data.DOM.Html2
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+set'accessKey ::
+              (Monad mn, CHTMLAreaElement zz) =>
+                Expression String -> Expression zz -> mn (Expression zz)
+set'accessKey = setjsProperty "accessKey"
+ 
+get'accessKey ::
+              (Monad mn, CHTMLAreaElement this) =>
+                Expression this -> mn (Expression String)
+get'accessKey thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "accessKey")
+       return r
+ 
+getm'accessKey ::
+               (Monad mn, CHTMLAreaElement this) =>
+                 Expression this -> mn (Expression String)
+getm'accessKey = get'accessKey
+ 
+set'alt ::
+        (Monad mn, CHTMLAreaElement zz) =>
+          Expression String -> Expression zz -> mn (Expression zz)
+set'alt = setjsProperty "alt"
+ 
+get'alt ::
+        (Monad mn, CHTMLAreaElement this) =>
+          Expression this -> mn (Expression String)
+get'alt thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "alt")
+       return r
+ 
+getm'alt ::
+         (Monad mn, CHTMLAreaElement this) =>
+           Expression this -> mn (Expression String)
+getm'alt = get'alt
+ 
+set'coords ::
+           (Monad mn, CHTMLAreaElement zz) =>
+             Expression String -> Expression zz -> mn (Expression zz)
+set'coords = setjsProperty "coords"
+ 
+get'coords ::
+           (Monad mn, CHTMLAreaElement this) =>
+             Expression this -> mn (Expression String)
+get'coords thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "coords")
+       return r
+ 
+getm'coords ::
+            (Monad mn, CHTMLAreaElement this) =>
+              Expression this -> mn (Expression String)
+getm'coords = get'coords
+ 
+set'href ::
+         (Monad mn, CHTMLAreaElement zz) =>
+           Expression String -> Expression zz -> mn (Expression zz)
+set'href = setjsProperty "href"
+ 
+get'href ::
+         (Monad mn, CHTMLAreaElement this) =>
+           Expression this -> mn (Expression String)
+get'href thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "href")
+       return r
+ 
+getm'href ::
+          (Monad mn, CHTMLAreaElement this) =>
+            Expression this -> mn (Expression String)
+getm'href = get'href
+ 
+set'noHref ::
+           (Monad mn, CHTMLAreaElement zz) =>
+             Expression Bool -> Expression zz -> mn (Expression zz)
+set'noHref = setjsProperty "noHref"
+ 
+get'noHref ::
+           (Monad mn, CHTMLAreaElement this) =>
+             Expression this -> mn (Expression Bool)
+get'noHref thisp
+  = do let et = undefined :: Bool
+       let r = DotRef et (thisp /\ et) (Id et "noHref")
+       return r
+ 
+getm'noHref ::
+            (Monad mn, CHTMLAreaElement this) =>
+              Expression this -> mn (Expression Bool)
+getm'noHref = get'noHref
+ 
+set'shape ::
+          (Monad mn, CHTMLAreaElement zz) =>
+            Expression String -> Expression zz -> mn (Expression zz)
+set'shape = setjsProperty "shape"
+ 
+get'shape ::
+          (Monad mn, CHTMLAreaElement this) =>
+            Expression this -> mn (Expression String)
+get'shape thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "shape")
+       return r
+ 
+getm'shape ::
+           (Monad mn, CHTMLAreaElement this) =>
+             Expression this -> mn (Expression String)
+getm'shape = get'shape
+ 
+set'tabIndex ::
+             (Monad mn, CHTMLAreaElement zz) =>
+               Expression Double -> Expression zz -> mn (Expression zz)
+set'tabIndex = setjsProperty "tabIndex"
+ 
+get'tabIndex ::
+             (Monad mn, CHTMLAreaElement this) =>
+               Expression this -> mn (Expression Double)
+get'tabIndex thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "tabIndex")
+       return r
+ 
+getm'tabIndex ::
+              (Monad mn, CHTMLAreaElement this) =>
+                Expression this -> mn (Expression Double)
+getm'tabIndex = get'tabIndex
+ 
+set'target ::
+           (Monad mn, CHTMLAreaElement zz) =>
+             Expression String -> Expression zz -> mn (Expression zz)
+set'target = setjsProperty "target"
+ 
+get'target ::
+           (Monad mn, CHTMLAreaElement this) =>
+             Expression this -> mn (Expression String)
+get'target thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "target")
+       return r
+ 
+getm'target ::
+            (Monad mn, CHTMLAreaElement this) =>
+              Expression this -> mn (Expression String)
+getm'target = get'target
+
diff --git a/Data/DOM/HTMLBRElement.hs b/Data/DOM/HTMLBRElement.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/HTMLBRElement.hs
@@ -0,0 +1,33 @@
+
+module Data.DOM.HTMLBRElement
+       (set'clear, get'clear, getm'clear, mkBr) where
+import Data.DOM.Html2
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+set'clear ::
+          (Monad mn, CHTMLBRElement zz) =>
+            Expression String -> Expression zz -> mn (Expression zz)
+set'clear = setjsProperty "clear"
+ 
+get'clear ::
+          (Monad mn, CHTMLBRElement this) =>
+            Expression this -> mn (Expression String)
+get'clear thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "clear")
+       return r
+ 
+getm'clear ::
+           (Monad mn, CHTMLBRElement this) =>
+             Expression this -> mn (Expression String)
+getm'clear = get'clear
+ 
+mkBr ::
+     (Monad mn, CHTMLDocument a) =>
+       Expression a -> mn (Expression THTMLBRElement)
+mkBr = createElement (StringLit "br" "br")
+
diff --git a/Data/DOM/HTMLBaseElement.hs b/Data/DOM/HTMLBaseElement.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/HTMLBaseElement.hs
@@ -0,0 +1,48 @@
+
+module Data.DOM.HTMLBaseElement
+       (set'href, get'href, getm'href, set'target, get'target,
+        getm'target)
+       where
+import Data.DOM.Html2
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+set'href ::
+         (Monad mn, CHTMLBaseElement zz) =>
+           Expression String -> Expression zz -> mn (Expression zz)
+set'href = setjsProperty "href"
+ 
+get'href ::
+         (Monad mn, CHTMLBaseElement this) =>
+           Expression this -> mn (Expression String)
+get'href thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "href")
+       return r
+ 
+getm'href ::
+          (Monad mn, CHTMLBaseElement this) =>
+            Expression this -> mn (Expression String)
+getm'href = get'href
+ 
+set'target ::
+           (Monad mn, CHTMLBaseElement zz) =>
+             Expression String -> Expression zz -> mn (Expression zz)
+set'target = setjsProperty "target"
+ 
+get'target ::
+           (Monad mn, CHTMLBaseElement this) =>
+             Expression this -> mn (Expression String)
+get'target thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "target")
+       return r
+ 
+getm'target ::
+            (Monad mn, CHTMLBaseElement this) =>
+              Expression this -> mn (Expression String)
+getm'target = get'target
+
diff --git a/Data/DOM/HTMLBaseFontElement.hs b/Data/DOM/HTMLBaseFontElement.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/HTMLBaseFontElement.hs
@@ -0,0 +1,66 @@
+
+module Data.DOM.HTMLBaseFontElement
+       (set'color, get'color, getm'color, set'face, get'face, getm'face,
+        set'size, get'size, getm'size)
+       where
+import Data.DOM.Html2
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+set'color ::
+          (Monad mn, CHTMLBaseFontElement zz) =>
+            Expression String -> Expression zz -> mn (Expression zz)
+set'color = setjsProperty "color"
+ 
+get'color ::
+          (Monad mn, CHTMLBaseFontElement this) =>
+            Expression this -> mn (Expression String)
+get'color thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "color")
+       return r
+ 
+getm'color ::
+           (Monad mn, CHTMLBaseFontElement this) =>
+             Expression this -> mn (Expression String)
+getm'color = get'color
+ 
+set'face ::
+         (Monad mn, CHTMLBaseFontElement zz) =>
+           Expression String -> Expression zz -> mn (Expression zz)
+set'face = setjsProperty "face"
+ 
+get'face ::
+         (Monad mn, CHTMLBaseFontElement this) =>
+           Expression this -> mn (Expression String)
+get'face thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "face")
+       return r
+ 
+getm'face ::
+          (Monad mn, CHTMLBaseFontElement this) =>
+            Expression this -> mn (Expression String)
+getm'face = get'face
+ 
+set'size ::
+         (Monad mn, CHTMLBaseFontElement zz) =>
+           Expression Double -> Expression zz -> mn (Expression zz)
+set'size = setjsProperty "size"
+ 
+get'size ::
+         (Monad mn, CHTMLBaseFontElement this) =>
+           Expression this -> mn (Expression Double)
+get'size thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "size")
+       return r
+ 
+getm'size ::
+          (Monad mn, CHTMLBaseFontElement this) =>
+            Expression this -> mn (Expression Double)
+getm'size = get'size
+
diff --git a/Data/DOM/HTMLBodyElement.hs b/Data/DOM/HTMLBodyElement.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/HTMLBodyElement.hs
@@ -0,0 +1,122 @@
+
+module Data.DOM.HTMLBodyElement
+       (set'aLink, get'aLink, getm'aLink, set'background, get'background,
+        getm'background, set'bgColor, get'bgColor, getm'bgColor, set'link,
+        get'link, getm'link, set'text, get'text, getm'text, set'vLink,
+        get'vLink, getm'vLink)
+       where
+import Data.DOM.Html2
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+set'aLink ::
+          (Monad mn, CHTMLBodyElement zz) =>
+            Expression String -> Expression zz -> mn (Expression zz)
+set'aLink = setjsProperty "aLink"
+ 
+get'aLink ::
+          (Monad mn, CHTMLBodyElement this) =>
+            Expression this -> mn (Expression String)
+get'aLink thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "aLink")
+       return r
+ 
+getm'aLink ::
+           (Monad mn, CHTMLBodyElement this) =>
+             Expression this -> mn (Expression String)
+getm'aLink = get'aLink
+ 
+set'background ::
+               (Monad mn, CHTMLBodyElement zz) =>
+                 Expression String -> Expression zz -> mn (Expression zz)
+set'background = setjsProperty "background"
+ 
+get'background ::
+               (Monad mn, CHTMLBodyElement this) =>
+                 Expression this -> mn (Expression String)
+get'background thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "background")
+       return r
+ 
+getm'background ::
+                (Monad mn, CHTMLBodyElement this) =>
+                  Expression this -> mn (Expression String)
+getm'background = get'background
+ 
+set'bgColor ::
+            (Monad mn, CHTMLBodyElement zz) =>
+              Expression String -> Expression zz -> mn (Expression zz)
+set'bgColor = setjsProperty "bgColor"
+ 
+get'bgColor ::
+            (Monad mn, CHTMLBodyElement this) =>
+              Expression this -> mn (Expression String)
+get'bgColor thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "bgColor")
+       return r
+ 
+getm'bgColor ::
+             (Monad mn, CHTMLBodyElement this) =>
+               Expression this -> mn (Expression String)
+getm'bgColor = get'bgColor
+ 
+set'link ::
+         (Monad mn, CHTMLBodyElement zz) =>
+           Expression String -> Expression zz -> mn (Expression zz)
+set'link = setjsProperty "link"
+ 
+get'link ::
+         (Monad mn, CHTMLBodyElement this) =>
+           Expression this -> mn (Expression String)
+get'link thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "link")
+       return r
+ 
+getm'link ::
+          (Monad mn, CHTMLBodyElement this) =>
+            Expression this -> mn (Expression String)
+getm'link = get'link
+ 
+set'text ::
+         (Monad mn, CHTMLBodyElement zz) =>
+           Expression String -> Expression zz -> mn (Expression zz)
+set'text = setjsProperty "text"
+ 
+get'text ::
+         (Monad mn, CHTMLBodyElement this) =>
+           Expression this -> mn (Expression String)
+get'text thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "text")
+       return r
+ 
+getm'text ::
+          (Monad mn, CHTMLBodyElement this) =>
+            Expression this -> mn (Expression String)
+getm'text = get'text
+ 
+set'vLink ::
+          (Monad mn, CHTMLBodyElement zz) =>
+            Expression String -> Expression zz -> mn (Expression zz)
+set'vLink = setjsProperty "vLink"
+ 
+get'vLink ::
+          (Monad mn, CHTMLBodyElement this) =>
+            Expression this -> mn (Expression String)
+get'vLink thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "vLink")
+       return r
+ 
+getm'vLink ::
+           (Monad mn, CHTMLBodyElement this) =>
+             Expression this -> mn (Expression String)
+getm'vLink = get'vLink
+
diff --git a/Data/DOM/HTMLButtonElement.hs b/Data/DOM/HTMLButtonElement.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/HTMLButtonElement.hs
@@ -0,0 +1,135 @@
+
+module Data.DOM.HTMLButtonElement
+       (get'form, getm'form, set'accessKey, get'accessKey, getm'accessKey,
+        set'disabled, get'disabled, getm'disabled, set'name, get'name,
+        getm'name, set'tabIndex, get'tabIndex, getm'tabIndex, get'type,
+        getm'type, set'value, get'value, getm'value, mkButton)
+       where
+import Data.DOM.Html2
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+get'form ::
+         (Monad mn, CHTMLButtonElement this, CHTMLFormElement zz) =>
+           Expression this -> mn (Expression zz)
+get'form thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "form")
+       return r
+ 
+getm'form ::
+          (Monad mn, CHTMLButtonElement this) =>
+            Expression this -> mn (Expression THTMLFormElement)
+getm'form = get'form
+ 
+set'accessKey ::
+              (Monad mn, CHTMLButtonElement zz) =>
+                Expression String -> Expression zz -> mn (Expression zz)
+set'accessKey = setjsProperty "accessKey"
+ 
+get'accessKey ::
+              (Monad mn, CHTMLButtonElement this) =>
+                Expression this -> mn (Expression String)
+get'accessKey thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "accessKey")
+       return r
+ 
+getm'accessKey ::
+               (Monad mn, CHTMLButtonElement this) =>
+                 Expression this -> mn (Expression String)
+getm'accessKey = get'accessKey
+ 
+set'disabled ::
+             (Monad mn, CHTMLButtonElement zz) =>
+               Expression Bool -> Expression zz -> mn (Expression zz)
+set'disabled = setjsProperty "disabled"
+ 
+get'disabled ::
+             (Monad mn, CHTMLButtonElement this) =>
+               Expression this -> mn (Expression Bool)
+get'disabled thisp
+  = do let et = undefined :: Bool
+       let r = DotRef et (thisp /\ et) (Id et "disabled")
+       return r
+ 
+getm'disabled ::
+              (Monad mn, CHTMLButtonElement this) =>
+                Expression this -> mn (Expression Bool)
+getm'disabled = get'disabled
+ 
+set'name ::
+         (Monad mn, CHTMLButtonElement zz) =>
+           Expression String -> Expression zz -> mn (Expression zz)
+set'name = setjsProperty "name"
+ 
+get'name ::
+         (Monad mn, CHTMLButtonElement this) =>
+           Expression this -> mn (Expression String)
+get'name thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "name")
+       return r
+ 
+getm'name ::
+          (Monad mn, CHTMLButtonElement this) =>
+            Expression this -> mn (Expression String)
+getm'name = get'name
+ 
+set'tabIndex ::
+             (Monad mn, CHTMLButtonElement zz) =>
+               Expression Double -> Expression zz -> mn (Expression zz)
+set'tabIndex = setjsProperty "tabIndex"
+ 
+get'tabIndex ::
+             (Monad mn, CHTMLButtonElement this) =>
+               Expression this -> mn (Expression Double)
+get'tabIndex thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "tabIndex")
+       return r
+ 
+getm'tabIndex ::
+              (Monad mn, CHTMLButtonElement this) =>
+                Expression this -> mn (Expression Double)
+getm'tabIndex = get'tabIndex
+ 
+get'type ::
+         (Monad mn, CHTMLButtonElement this) =>
+           Expression this -> mn (Expression String)
+get'type thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "type")
+       return r
+ 
+getm'type ::
+          (Monad mn, CHTMLButtonElement this) =>
+            Expression this -> mn (Expression String)
+getm'type = get'type
+ 
+set'value ::
+          (Monad mn, CHTMLButtonElement zz) =>
+            Expression String -> Expression zz -> mn (Expression zz)
+set'value = setjsProperty "value"
+ 
+get'value ::
+          (Monad mn, CHTMLButtonElement this) =>
+            Expression this -> mn (Expression String)
+get'value thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "value")
+       return r
+ 
+getm'value ::
+           (Monad mn, CHTMLButtonElement this) =>
+             Expression this -> mn (Expression String)
+getm'value = get'value
+ 
+mkButton ::
+         (Monad mn, CHTMLDocument a) =>
+           Expression a -> mn (Expression THTMLButtonElement)
+mkButton = createElement (StringLit "button" "button")
+
diff --git a/Data/DOM/HTMLCollection.hs b/Data/DOM/HTMLCollection.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/HTMLCollection.hs
@@ -0,0 +1,39 @@
+
+module Data.DOM.HTMLCollection
+       (item, namedItem, get'length, getm'length) where
+import Data.DOM.Html2
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+item ::
+     (Monad mn, CHTMLCollection this, CNode zz) =>
+       Expression Double -> Expression this -> mn (Expression zz)
+item a thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "item")
+       return (CallExpr et r [a /\ et])
+ 
+namedItem ::
+          (Monad mn, CHTMLCollection this, CNode zz) =>
+            Expression String -> Expression this -> mn (Expression zz)
+namedItem a thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "namedItem")
+       return (CallExpr et r [a /\ et])
+ 
+get'length ::
+           (Monad mn, CHTMLCollection this) =>
+             Expression this -> mn (Expression Double)
+get'length thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "length")
+       return r
+ 
+getm'length ::
+            (Monad mn, CHTMLCollection this) =>
+              Expression this -> mn (Expression Double)
+getm'length = get'length
+
diff --git a/Data/DOM/HTMLDListElement.hs b/Data/DOM/HTMLDListElement.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/HTMLDListElement.hs
@@ -0,0 +1,33 @@
+
+module Data.DOM.HTMLDListElement
+       (set'compact, get'compact, getm'compact, mkDl) where
+import Data.DOM.Html2
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+set'compact ::
+            (Monad mn, CHTMLDListElement zz) =>
+              Expression Bool -> Expression zz -> mn (Expression zz)
+set'compact = setjsProperty "compact"
+ 
+get'compact ::
+            (Monad mn, CHTMLDListElement this) =>
+              Expression this -> mn (Expression Bool)
+get'compact thisp
+  = do let et = undefined :: Bool
+       let r = DotRef et (thisp /\ et) (Id et "compact")
+       return r
+ 
+getm'compact ::
+             (Monad mn, CHTMLDListElement this) =>
+               Expression this -> mn (Expression Bool)
+getm'compact = get'compact
+ 
+mkDl ::
+     (Monad mn, CHTMLDocument a) =>
+       Expression a -> mn (Expression THTMLDListElement)
+mkDl = createElement (StringLit "dl" "dl")
+
diff --git a/Data/DOM/HTMLDirectoryElement.hs b/Data/DOM/HTMLDirectoryElement.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/HTMLDirectoryElement.hs
@@ -0,0 +1,28 @@
+
+module Data.DOM.HTMLDirectoryElement
+       (set'compact, get'compact, getm'compact) where
+import Data.DOM.Html2
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+set'compact ::
+            (Monad mn, CHTMLDirectoryElement zz) =>
+              Expression Bool -> Expression zz -> mn (Expression zz)
+set'compact = setjsProperty "compact"
+ 
+get'compact ::
+            (Monad mn, CHTMLDirectoryElement this) =>
+              Expression this -> mn (Expression Bool)
+get'compact thisp
+  = do let et = undefined :: Bool
+       let r = DotRef et (thisp /\ et) (Id et "compact")
+       return r
+ 
+getm'compact ::
+             (Monad mn, CHTMLDirectoryElement this) =>
+               Expression this -> mn (Expression Bool)
+getm'compact = get'compact
+
diff --git a/Data/DOM/HTMLDivElement.hs b/Data/DOM/HTMLDivElement.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/HTMLDivElement.hs
@@ -0,0 +1,33 @@
+
+module Data.DOM.HTMLDivElement
+       (set'align, get'align, getm'align, mkDiv) where
+import Data.DOM.Html2
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+set'align ::
+          (Monad mn, CHTMLDivElement zz) =>
+            Expression String -> Expression zz -> mn (Expression zz)
+set'align = setjsProperty "align"
+ 
+get'align ::
+          (Monad mn, CHTMLDivElement this) =>
+            Expression this -> mn (Expression String)
+get'align thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "align")
+       return r
+ 
+getm'align ::
+           (Monad mn, CHTMLDivElement this) =>
+             Expression this -> mn (Expression String)
+getm'align = get'align
+ 
+mkDiv ::
+      (Monad mn, CHTMLDocument a) =>
+        Expression a -> mn (Expression THTMLDivElement)
+mkDiv = createElement (StringLit "div" "div")
+
diff --git a/Data/DOM/HTMLDocument.hs b/Data/DOM/HTMLDocument.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/HTMLDocument.hs
@@ -0,0 +1,214 @@
+
+module Data.DOM.HTMLDocument
+       (open, close, write, writeln, getElementsByName, set'title,
+        get'title, getm'title, get'referrer, getm'referrer, get'domain,
+        getm'domain, get'URL, getm'URL, set'body, get'body, getm'body,
+        get'images, getm'images, get'applets, getm'applets, get'links,
+        getm'links, get'forms, getm'forms, get'anchors, getm'anchors,
+        set'cookie, get'cookie, getm'cookie)
+       where
+import Data.DOM.Html2
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+open ::
+     (Monad mn, CHTMLDocument this) =>
+       Expression this -> mn (Expression ())
+open thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "open")
+       return (CallExpr et r [])
+ 
+close ::
+      (Monad mn, CHTMLDocument this) =>
+        Expression this -> mn (Expression ())
+close thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "close")
+       return (CallExpr et r [])
+ 
+write ::
+      (Monad mn, CHTMLDocument this) =>
+        Expression String -> Expression this -> mn (Expression ())
+write a thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "write")
+       return (CallExpr et r [a /\ et])
+ 
+writeln ::
+        (Monad mn, CHTMLDocument this) =>
+          Expression String -> Expression this -> mn (Expression ())
+writeln a thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "writeln")
+       return (CallExpr et r [a /\ et])
+ 
+getElementsByName ::
+                  (Monad mn, CHTMLDocument this, CNodeList zz) =>
+                    Expression String -> Expression this -> mn (Expression zz)
+getElementsByName a thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "getElementsByName")
+       return (CallExpr et r [a /\ et])
+ 
+set'title ::
+          (Monad mn, CHTMLDocument zz) =>
+            Expression String -> Expression zz -> mn (Expression zz)
+set'title = setjsProperty "title"
+ 
+get'title ::
+          (Monad mn, CHTMLDocument this) =>
+            Expression this -> mn (Expression String)
+get'title thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "title")
+       return r
+ 
+getm'title ::
+           (Monad mn, CHTMLDocument this) =>
+             Expression this -> mn (Expression String)
+getm'title = get'title
+ 
+get'referrer ::
+             (Monad mn, CHTMLDocument this) =>
+               Expression this -> mn (Expression String)
+get'referrer thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "referrer")
+       return r
+ 
+getm'referrer ::
+              (Monad mn, CHTMLDocument this) =>
+                Expression this -> mn (Expression String)
+getm'referrer = get'referrer
+ 
+get'domain ::
+           (Monad mn, CHTMLDocument this) =>
+             Expression this -> mn (Expression String)
+get'domain thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "domain")
+       return r
+ 
+getm'domain ::
+            (Monad mn, CHTMLDocument this) =>
+              Expression this -> mn (Expression String)
+getm'domain = get'domain
+ 
+get'URL ::
+        (Monad mn, CHTMLDocument this) =>
+          Expression this -> mn (Expression String)
+get'URL thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "URL")
+       return r
+ 
+getm'URL ::
+         (Monad mn, CHTMLDocument this) =>
+           Expression this -> mn (Expression String)
+getm'URL = get'URL
+ 
+set'body ::
+         (Monad mn, CHTMLElement val, CHTMLDocument zz) =>
+           Expression val -> Expression zz -> mn (Expression zz)
+set'body = setjsProperty "body"
+ 
+get'body ::
+         (Monad mn, CHTMLDocument this, CHTMLElement zz) =>
+           Expression this -> mn (Expression zz)
+get'body thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "body")
+       return r
+ 
+getm'body ::
+          (Monad mn, CHTMLDocument this) =>
+            Expression this -> mn (Expression THTMLElement)
+getm'body = get'body
+ 
+get'images ::
+           (Monad mn, CHTMLDocument this, CHTMLCollection zz) =>
+             Expression this -> mn (Expression zz)
+get'images thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "images")
+       return r
+ 
+getm'images ::
+            (Monad mn, CHTMLDocument this) =>
+              Expression this -> mn (Expression THTMLCollection)
+getm'images = get'images
+ 
+get'applets ::
+            (Monad mn, CHTMLDocument this, CHTMLCollection zz) =>
+              Expression this -> mn (Expression zz)
+get'applets thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "applets")
+       return r
+ 
+getm'applets ::
+             (Monad mn, CHTMLDocument this) =>
+               Expression this -> mn (Expression THTMLCollection)
+getm'applets = get'applets
+ 
+get'links ::
+          (Monad mn, CHTMLDocument this, CHTMLCollection zz) =>
+            Expression this -> mn (Expression zz)
+get'links thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "links")
+       return r
+ 
+getm'links ::
+           (Monad mn, CHTMLDocument this) =>
+             Expression this -> mn (Expression THTMLCollection)
+getm'links = get'links
+ 
+get'forms ::
+          (Monad mn, CHTMLDocument this, CHTMLCollection zz) =>
+            Expression this -> mn (Expression zz)
+get'forms thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "forms")
+       return r
+ 
+getm'forms ::
+           (Monad mn, CHTMLDocument this) =>
+             Expression this -> mn (Expression THTMLCollection)
+getm'forms = get'forms
+ 
+get'anchors ::
+            (Monad mn, CHTMLDocument this, CHTMLCollection zz) =>
+              Expression this -> mn (Expression zz)
+get'anchors thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "anchors")
+       return r
+ 
+getm'anchors ::
+             (Monad mn, CHTMLDocument this) =>
+               Expression this -> mn (Expression THTMLCollection)
+getm'anchors = get'anchors
+ 
+set'cookie ::
+           (Monad mn, CHTMLDocument zz) =>
+             Expression String -> Expression zz -> mn (Expression zz)
+set'cookie = setjsProperty "cookie"
+ 
+get'cookie ::
+           (Monad mn, CHTMLDocument this) =>
+             Expression this -> mn (Expression String)
+get'cookie thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "cookie")
+       return r
+ 
+getm'cookie ::
+            (Monad mn, CHTMLDocument this) =>
+              Expression this -> mn (Expression String)
+getm'cookie = get'cookie
+
diff --git a/Data/DOM/HTMLElement.hs b/Data/DOM/HTMLElement.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/HTMLElement.hs
@@ -0,0 +1,103 @@
+
+module Data.DOM.HTMLElement
+       (set'id, get'id, getm'id, set'title, get'title, getm'title,
+        set'lang, get'lang, getm'lang, set'dir, get'dir, getm'dir,
+        set'className, get'className, getm'className)
+       where
+import Data.DOM.Html2
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+set'id ::
+       (Monad mn, CHTMLElement zz) =>
+         Expression String -> Expression zz -> mn (Expression zz)
+set'id = setjsProperty "id"
+ 
+get'id ::
+       (Monad mn, CHTMLElement this) =>
+         Expression this -> mn (Expression String)
+get'id thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "id")
+       return r
+ 
+getm'id ::
+        (Monad mn, CHTMLElement this) =>
+          Expression this -> mn (Expression String)
+getm'id = get'id
+ 
+set'title ::
+          (Monad mn, CHTMLElement zz) =>
+            Expression String -> Expression zz -> mn (Expression zz)
+set'title = setjsProperty "title"
+ 
+get'title ::
+          (Monad mn, CHTMLElement this) =>
+            Expression this -> mn (Expression String)
+get'title thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "title")
+       return r
+ 
+getm'title ::
+           (Monad mn, CHTMLElement this) =>
+             Expression this -> mn (Expression String)
+getm'title = get'title
+ 
+set'lang ::
+         (Monad mn, CHTMLElement zz) =>
+           Expression String -> Expression zz -> mn (Expression zz)
+set'lang = setjsProperty "lang"
+ 
+get'lang ::
+         (Monad mn, CHTMLElement this) =>
+           Expression this -> mn (Expression String)
+get'lang thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "lang")
+       return r
+ 
+getm'lang ::
+          (Monad mn, CHTMLElement this) =>
+            Expression this -> mn (Expression String)
+getm'lang = get'lang
+ 
+set'dir ::
+        (Monad mn, CHTMLElement zz) =>
+          Expression String -> Expression zz -> mn (Expression zz)
+set'dir = setjsProperty "dir"
+ 
+get'dir ::
+        (Monad mn, CHTMLElement this) =>
+          Expression this -> mn (Expression String)
+get'dir thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "dir")
+       return r
+ 
+getm'dir ::
+         (Monad mn, CHTMLElement this) =>
+           Expression this -> mn (Expression String)
+getm'dir = get'dir
+ 
+set'className ::
+              (Monad mn, CHTMLElement zz) =>
+                Expression String -> Expression zz -> mn (Expression zz)
+set'className = setjsProperty "className"
+ 
+get'className ::
+              (Monad mn, CHTMLElement this) =>
+                Expression this -> mn (Expression String)
+get'className thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "className")
+       return r
+ 
+getm'className ::
+               (Monad mn, CHTMLElement this) =>
+                 Expression this -> mn (Expression String)
+getm'className = get'className
+
diff --git a/Data/DOM/HTMLFieldSetElement.hs b/Data/DOM/HTMLFieldSetElement.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/HTMLFieldSetElement.hs
@@ -0,0 +1,22 @@
+
+module Data.DOM.HTMLFieldSetElement (get'form, getm'form) where
+import Data.DOM.Html2
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+get'form ::
+         (Monad mn, CHTMLFieldSetElement this, CHTMLFormElement zz) =>
+           Expression this -> mn (Expression zz)
+get'form thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "form")
+       return r
+ 
+getm'form ::
+          (Monad mn, CHTMLFieldSetElement this) =>
+            Expression this -> mn (Expression THTMLFormElement)
+getm'form = get'form
+
diff --git a/Data/DOM/HTMLFontElement.hs b/Data/DOM/HTMLFontElement.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/HTMLFontElement.hs
@@ -0,0 +1,71 @@
+
+module Data.DOM.HTMLFontElement
+       (set'color, get'color, getm'color, set'face, get'face, getm'face,
+        set'size, get'size, getm'size, mkFont)
+       where
+import Data.DOM.Html2
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+set'color ::
+          (Monad mn, CHTMLFontElement zz) =>
+            Expression String -> Expression zz -> mn (Expression zz)
+set'color = setjsProperty "color"
+ 
+get'color ::
+          (Monad mn, CHTMLFontElement this) =>
+            Expression this -> mn (Expression String)
+get'color thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "color")
+       return r
+ 
+getm'color ::
+           (Monad mn, CHTMLFontElement this) =>
+             Expression this -> mn (Expression String)
+getm'color = get'color
+ 
+set'face ::
+         (Monad mn, CHTMLFontElement zz) =>
+           Expression String -> Expression zz -> mn (Expression zz)
+set'face = setjsProperty "face"
+ 
+get'face ::
+         (Monad mn, CHTMLFontElement this) =>
+           Expression this -> mn (Expression String)
+get'face thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "face")
+       return r
+ 
+getm'face ::
+          (Monad mn, CHTMLFontElement this) =>
+            Expression this -> mn (Expression String)
+getm'face = get'face
+ 
+set'size ::
+         (Monad mn, CHTMLFontElement zz) =>
+           Expression String -> Expression zz -> mn (Expression zz)
+set'size = setjsProperty "size"
+ 
+get'size ::
+         (Monad mn, CHTMLFontElement this) =>
+           Expression this -> mn (Expression String)
+get'size thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "size")
+       return r
+ 
+getm'size ::
+          (Monad mn, CHTMLFontElement this) =>
+            Expression this -> mn (Expression String)
+getm'size = get'size
+ 
+mkFont ::
+       (Monad mn, CHTMLDocument a) =>
+         Expression a -> mn (Expression THTMLFontElement)
+mkFont = createElement (StringLit "font" "font")
+
diff --git a/Data/DOM/HTMLFormElement.hs b/Data/DOM/HTMLFormElement.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/HTMLFormElement.hs
@@ -0,0 +1,171 @@
+
+module Data.DOM.HTMLFormElement
+       (submit, reset, get'elements, getm'elements, get'length,
+        getm'length, set'name, get'name, getm'name, set'acceptCharset,
+        get'acceptCharset, getm'acceptCharset, set'action, get'action,
+        getm'action, set'enctype, get'enctype, getm'enctype, set'method,
+        get'method, getm'method, set'target, get'target, getm'target,
+        mkForm)
+       where
+import Data.DOM.Html2
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+submit ::
+       (Monad mn, CHTMLFormElement this) =>
+         Expression this -> mn (Expression ())
+submit thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "submit")
+       return (CallExpr et r [])
+ 
+reset ::
+      (Monad mn, CHTMLFormElement this) =>
+        Expression this -> mn (Expression ())
+reset thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "reset")
+       return (CallExpr et r [])
+ 
+get'elements ::
+             (Monad mn, CHTMLFormElement this, CHTMLCollection zz) =>
+               Expression this -> mn (Expression zz)
+get'elements thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "elements")
+       return r
+ 
+getm'elements ::
+              (Monad mn, CHTMLFormElement this) =>
+                Expression this -> mn (Expression THTMLCollection)
+getm'elements = get'elements
+ 
+get'length ::
+           (Monad mn, CHTMLFormElement this) =>
+             Expression this -> mn (Expression Double)
+get'length thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "length")
+       return r
+ 
+getm'length ::
+            (Monad mn, CHTMLFormElement this) =>
+              Expression this -> mn (Expression Double)
+getm'length = get'length
+ 
+set'name ::
+         (Monad mn, CHTMLFormElement zz) =>
+           Expression String -> Expression zz -> mn (Expression zz)
+set'name = setjsProperty "name"
+ 
+get'name ::
+         (Monad mn, CHTMLFormElement this) =>
+           Expression this -> mn (Expression String)
+get'name thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "name")
+       return r
+ 
+getm'name ::
+          (Monad mn, CHTMLFormElement this) =>
+            Expression this -> mn (Expression String)
+getm'name = get'name
+ 
+set'acceptCharset ::
+                  (Monad mn, CHTMLFormElement zz) =>
+                    Expression String -> Expression zz -> mn (Expression zz)
+set'acceptCharset = setjsProperty "acceptCharset"
+ 
+get'acceptCharset ::
+                  (Monad mn, CHTMLFormElement this) =>
+                    Expression this -> mn (Expression String)
+get'acceptCharset thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "acceptCharset")
+       return r
+ 
+getm'acceptCharset ::
+                   (Monad mn, CHTMLFormElement this) =>
+                     Expression this -> mn (Expression String)
+getm'acceptCharset = get'acceptCharset
+ 
+set'action ::
+           (Monad mn, CHTMLFormElement zz) =>
+             Expression String -> Expression zz -> mn (Expression zz)
+set'action = setjsProperty "action"
+ 
+get'action ::
+           (Monad mn, CHTMLFormElement this) =>
+             Expression this -> mn (Expression String)
+get'action thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "action")
+       return r
+ 
+getm'action ::
+            (Monad mn, CHTMLFormElement this) =>
+              Expression this -> mn (Expression String)
+getm'action = get'action
+ 
+set'enctype ::
+            (Monad mn, CHTMLFormElement zz) =>
+              Expression String -> Expression zz -> mn (Expression zz)
+set'enctype = setjsProperty "enctype"
+ 
+get'enctype ::
+            (Monad mn, CHTMLFormElement this) =>
+              Expression this -> mn (Expression String)
+get'enctype thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "enctype")
+       return r
+ 
+getm'enctype ::
+             (Monad mn, CHTMLFormElement this) =>
+               Expression this -> mn (Expression String)
+getm'enctype = get'enctype
+ 
+set'method ::
+           (Monad mn, CHTMLFormElement zz) =>
+             Expression String -> Expression zz -> mn (Expression zz)
+set'method = setjsProperty "method"
+ 
+get'method ::
+           (Monad mn, CHTMLFormElement this) =>
+             Expression this -> mn (Expression String)
+get'method thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "method")
+       return r
+ 
+getm'method ::
+            (Monad mn, CHTMLFormElement this) =>
+              Expression this -> mn (Expression String)
+getm'method = get'method
+ 
+set'target ::
+           (Monad mn, CHTMLFormElement zz) =>
+             Expression String -> Expression zz -> mn (Expression zz)
+set'target = setjsProperty "target"
+ 
+get'target ::
+           (Monad mn, CHTMLFormElement this) =>
+             Expression this -> mn (Expression String)
+get'target thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "target")
+       return r
+ 
+getm'target ::
+            (Monad mn, CHTMLFormElement this) =>
+              Expression this -> mn (Expression String)
+getm'target = get'target
+ 
+mkForm ::
+       (Monad mn, CHTMLDocument a) =>
+         Expression a -> mn (Expression THTMLFormElement)
+mkForm = createElement (StringLit "form" "form")
+
diff --git a/Data/DOM/HTMLFrameElement.hs b/Data/DOM/HTMLFrameElement.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/HTMLFrameElement.hs
@@ -0,0 +1,179 @@
+
+module Data.DOM.HTMLFrameElement
+       (set'frameBorder, get'frameBorder, getm'frameBorder, set'longDesc,
+        get'longDesc, getm'longDesc, set'marginHeight, get'marginHeight,
+        getm'marginHeight, set'marginWidth, get'marginWidth,
+        getm'marginWidth, set'name, get'name, getm'name, set'noResize,
+        get'noResize, getm'noResize, set'scrolling, get'scrolling,
+        getm'scrolling, set'src, get'src, getm'src, get'contentDocument,
+        getm'contentDocument, mkFrame)
+       where
+import Data.DOM.Html2
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+set'frameBorder ::
+                (Monad mn, CHTMLFrameElement zz) =>
+                  Expression String -> Expression zz -> mn (Expression zz)
+set'frameBorder = setjsProperty "frameBorder"
+ 
+get'frameBorder ::
+                (Monad mn, CHTMLFrameElement this) =>
+                  Expression this -> mn (Expression String)
+get'frameBorder thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "frameBorder")
+       return r
+ 
+getm'frameBorder ::
+                 (Monad mn, CHTMLFrameElement this) =>
+                   Expression this -> mn (Expression String)
+getm'frameBorder = get'frameBorder
+ 
+set'longDesc ::
+             (Monad mn, CHTMLFrameElement zz) =>
+               Expression String -> Expression zz -> mn (Expression zz)
+set'longDesc = setjsProperty "longDesc"
+ 
+get'longDesc ::
+             (Monad mn, CHTMLFrameElement this) =>
+               Expression this -> mn (Expression String)
+get'longDesc thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "longDesc")
+       return r
+ 
+getm'longDesc ::
+              (Monad mn, CHTMLFrameElement this) =>
+                Expression this -> mn (Expression String)
+getm'longDesc = get'longDesc
+ 
+set'marginHeight ::
+                 (Monad mn, CHTMLFrameElement zz) =>
+                   Expression String -> Expression zz -> mn (Expression zz)
+set'marginHeight = setjsProperty "marginHeight"
+ 
+get'marginHeight ::
+                 (Monad mn, CHTMLFrameElement this) =>
+                   Expression this -> mn (Expression String)
+get'marginHeight thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "marginHeight")
+       return r
+ 
+getm'marginHeight ::
+                  (Monad mn, CHTMLFrameElement this) =>
+                    Expression this -> mn (Expression String)
+getm'marginHeight = get'marginHeight
+ 
+set'marginWidth ::
+                (Monad mn, CHTMLFrameElement zz) =>
+                  Expression String -> Expression zz -> mn (Expression zz)
+set'marginWidth = setjsProperty "marginWidth"
+ 
+get'marginWidth ::
+                (Monad mn, CHTMLFrameElement this) =>
+                  Expression this -> mn (Expression String)
+get'marginWidth thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "marginWidth")
+       return r
+ 
+getm'marginWidth ::
+                 (Monad mn, CHTMLFrameElement this) =>
+                   Expression this -> mn (Expression String)
+getm'marginWidth = get'marginWidth
+ 
+set'name ::
+         (Monad mn, CHTMLFrameElement zz) =>
+           Expression String -> Expression zz -> mn (Expression zz)
+set'name = setjsProperty "name"
+ 
+get'name ::
+         (Monad mn, CHTMLFrameElement this) =>
+           Expression this -> mn (Expression String)
+get'name thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "name")
+       return r
+ 
+getm'name ::
+          (Monad mn, CHTMLFrameElement this) =>
+            Expression this -> mn (Expression String)
+getm'name = get'name
+ 
+set'noResize ::
+             (Monad mn, CHTMLFrameElement zz) =>
+               Expression Bool -> Expression zz -> mn (Expression zz)
+set'noResize = setjsProperty "noResize"
+ 
+get'noResize ::
+             (Monad mn, CHTMLFrameElement this) =>
+               Expression this -> mn (Expression Bool)
+get'noResize thisp
+  = do let et = undefined :: Bool
+       let r = DotRef et (thisp /\ et) (Id et "noResize")
+       return r
+ 
+getm'noResize ::
+              (Monad mn, CHTMLFrameElement this) =>
+                Expression this -> mn (Expression Bool)
+getm'noResize = get'noResize
+ 
+set'scrolling ::
+              (Monad mn, CHTMLFrameElement zz) =>
+                Expression String -> Expression zz -> mn (Expression zz)
+set'scrolling = setjsProperty "scrolling"
+ 
+get'scrolling ::
+              (Monad mn, CHTMLFrameElement this) =>
+                Expression this -> mn (Expression String)
+get'scrolling thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "scrolling")
+       return r
+ 
+getm'scrolling ::
+               (Monad mn, CHTMLFrameElement this) =>
+                 Expression this -> mn (Expression String)
+getm'scrolling = get'scrolling
+ 
+set'src ::
+        (Monad mn, CHTMLFrameElement zz) =>
+          Expression String -> Expression zz -> mn (Expression zz)
+set'src = setjsProperty "src"
+ 
+get'src ::
+        (Monad mn, CHTMLFrameElement this) =>
+          Expression this -> mn (Expression String)
+get'src thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "src")
+       return r
+ 
+getm'src ::
+         (Monad mn, CHTMLFrameElement this) =>
+           Expression this -> mn (Expression String)
+getm'src = get'src
+ 
+get'contentDocument ::
+                    (Monad mn, CHTMLFrameElement this, CDocument zz) =>
+                      Expression this -> mn (Expression zz)
+get'contentDocument thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "contentDocument")
+       return r
+ 
+getm'contentDocument ::
+                     (Monad mn, CHTMLFrameElement this) =>
+                       Expression this -> mn (Expression TDocument)
+getm'contentDocument = get'contentDocument
+ 
+mkFrame ::
+        (Monad mn, CHTMLDocument a) =>
+          Expression a -> mn (Expression THTMLFrameElement)
+mkFrame = createElement (StringLit "frame" "frame")
+
diff --git a/Data/DOM/HTMLFrameSetElement.hs b/Data/DOM/HTMLFrameSetElement.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/HTMLFrameSetElement.hs
@@ -0,0 +1,47 @@
+
+module Data.DOM.HTMLFrameSetElement
+       (set'cols, get'cols, getm'cols, set'rows, get'rows, getm'rows)
+       where
+import Data.DOM.Html2
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+set'cols ::
+         (Monad mn, CHTMLFrameSetElement zz) =>
+           Expression String -> Expression zz -> mn (Expression zz)
+set'cols = setjsProperty "cols"
+ 
+get'cols ::
+         (Monad mn, CHTMLFrameSetElement this) =>
+           Expression this -> mn (Expression String)
+get'cols thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "cols")
+       return r
+ 
+getm'cols ::
+          (Monad mn, CHTMLFrameSetElement this) =>
+            Expression this -> mn (Expression String)
+getm'cols = get'cols
+ 
+set'rows ::
+         (Monad mn, CHTMLFrameSetElement zz) =>
+           Expression String -> Expression zz -> mn (Expression zz)
+set'rows = setjsProperty "rows"
+ 
+get'rows ::
+         (Monad mn, CHTMLFrameSetElement this) =>
+           Expression this -> mn (Expression String)
+get'rows thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "rows")
+       return r
+ 
+getm'rows ::
+          (Monad mn, CHTMLFrameSetElement this) =>
+            Expression this -> mn (Expression String)
+getm'rows = get'rows
+
diff --git a/Data/DOM/HTMLHRElement.hs b/Data/DOM/HTMLHRElement.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/HTMLHRElement.hs
@@ -0,0 +1,90 @@
+
+module Data.DOM.HTMLHRElement
+       (set'align, get'align, getm'align, set'noShade, get'noShade,
+        getm'noShade, set'size, get'size, getm'size, set'width, get'width,
+        getm'width, mkHr)
+       where
+import Data.DOM.Html2
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+set'align ::
+          (Monad mn, CHTMLHRElement zz) =>
+            Expression String -> Expression zz -> mn (Expression zz)
+set'align = setjsProperty "align"
+ 
+get'align ::
+          (Monad mn, CHTMLHRElement this) =>
+            Expression this -> mn (Expression String)
+get'align thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "align")
+       return r
+ 
+getm'align ::
+           (Monad mn, CHTMLHRElement this) =>
+             Expression this -> mn (Expression String)
+getm'align = get'align
+ 
+set'noShade ::
+            (Monad mn, CHTMLHRElement zz) =>
+              Expression Bool -> Expression zz -> mn (Expression zz)
+set'noShade = setjsProperty "noShade"
+ 
+get'noShade ::
+            (Monad mn, CHTMLHRElement this) =>
+              Expression this -> mn (Expression Bool)
+get'noShade thisp
+  = do let et = undefined :: Bool
+       let r = DotRef et (thisp /\ et) (Id et "noShade")
+       return r
+ 
+getm'noShade ::
+             (Monad mn, CHTMLHRElement this) =>
+               Expression this -> mn (Expression Bool)
+getm'noShade = get'noShade
+ 
+set'size ::
+         (Monad mn, CHTMLHRElement zz) =>
+           Expression String -> Expression zz -> mn (Expression zz)
+set'size = setjsProperty "size"
+ 
+get'size ::
+         (Monad mn, CHTMLHRElement this) =>
+           Expression this -> mn (Expression String)
+get'size thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "size")
+       return r
+ 
+getm'size ::
+          (Monad mn, CHTMLHRElement this) =>
+            Expression this -> mn (Expression String)
+getm'size = get'size
+ 
+set'width ::
+          (Monad mn, CHTMLHRElement zz) =>
+            Expression String -> Expression zz -> mn (Expression zz)
+set'width = setjsProperty "width"
+ 
+get'width ::
+          (Monad mn, CHTMLHRElement this) =>
+            Expression this -> mn (Expression String)
+get'width thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "width")
+       return r
+ 
+getm'width ::
+           (Monad mn, CHTMLHRElement this) =>
+             Expression this -> mn (Expression String)
+getm'width = get'width
+ 
+mkHr ::
+     (Monad mn, CHTMLDocument a) =>
+       Expression a -> mn (Expression THTMLHRElement)
+mkHr = createElement (StringLit "hr" "hr")
+
diff --git a/Data/DOM/HTMLHeadElement.hs b/Data/DOM/HTMLHeadElement.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/HTMLHeadElement.hs
@@ -0,0 +1,28 @@
+
+module Data.DOM.HTMLHeadElement
+       (set'profile, get'profile, getm'profile) where
+import Data.DOM.Html2
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+set'profile ::
+            (Monad mn, CHTMLHeadElement zz) =>
+              Expression String -> Expression zz -> mn (Expression zz)
+set'profile = setjsProperty "profile"
+ 
+get'profile ::
+            (Monad mn, CHTMLHeadElement this) =>
+              Expression this -> mn (Expression String)
+get'profile thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "profile")
+       return r
+ 
+getm'profile ::
+             (Monad mn, CHTMLHeadElement this) =>
+               Expression this -> mn (Expression String)
+getm'profile = get'profile
+
diff --git a/Data/DOM/HTMLHeadingElement.hs b/Data/DOM/HTMLHeadingElement.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/HTMLHeadingElement.hs
@@ -0,0 +1,28 @@
+
+module Data.DOM.HTMLHeadingElement
+       (set'align, get'align, getm'align) where
+import Data.DOM.Html2
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+set'align ::
+          (Monad mn, CHTMLHeadingElement zz) =>
+            Expression String -> Expression zz -> mn (Expression zz)
+set'align = setjsProperty "align"
+ 
+get'align ::
+          (Monad mn, CHTMLHeadingElement this) =>
+            Expression this -> mn (Expression String)
+get'align thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "align")
+       return r
+ 
+getm'align ::
+           (Monad mn, CHTMLHeadingElement this) =>
+             Expression this -> mn (Expression String)
+getm'align = get'align
+
diff --git a/Data/DOM/HTMLHtmlElement.hs b/Data/DOM/HTMLHtmlElement.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/HTMLHtmlElement.hs
@@ -0,0 +1,28 @@
+
+module Data.DOM.HTMLHtmlElement
+       (set'version, get'version, getm'version) where
+import Data.DOM.Html2
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+set'version ::
+            (Monad mn, CHTMLHtmlElement zz) =>
+              Expression String -> Expression zz -> mn (Expression zz)
+set'version = setjsProperty "version"
+ 
+get'version ::
+            (Monad mn, CHTMLHtmlElement this) =>
+              Expression this -> mn (Expression String)
+get'version thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "version")
+       return r
+ 
+getm'version ::
+             (Monad mn, CHTMLHtmlElement this) =>
+               Expression this -> mn (Expression String)
+getm'version = get'version
+
diff --git a/Data/DOM/HTMLIFrameElement.hs b/Data/DOM/HTMLIFrameElement.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/HTMLIFrameElement.hs
@@ -0,0 +1,211 @@
+
+module Data.DOM.HTMLIFrameElement
+       (set'align, get'align, getm'align, set'frameBorder,
+        get'frameBorder, getm'frameBorder, set'height, get'height,
+        getm'height, set'longDesc, get'longDesc, getm'longDesc,
+        set'marginHeight, get'marginHeight, getm'marginHeight,
+        set'marginWidth, get'marginWidth, getm'marginWidth, set'name,
+        get'name, getm'name, set'scrolling, get'scrolling, getm'scrolling,
+        set'src, get'src, getm'src, set'width, get'width, getm'width,
+        get'contentDocument, getm'contentDocument)
+       where
+import Data.DOM.Html2
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+set'align ::
+          (Monad mn, CHTMLIFrameElement zz) =>
+            Expression String -> Expression zz -> mn (Expression zz)
+set'align = setjsProperty "align"
+ 
+get'align ::
+          (Monad mn, CHTMLIFrameElement this) =>
+            Expression this -> mn (Expression String)
+get'align thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "align")
+       return r
+ 
+getm'align ::
+           (Monad mn, CHTMLIFrameElement this) =>
+             Expression this -> mn (Expression String)
+getm'align = get'align
+ 
+set'frameBorder ::
+                (Monad mn, CHTMLIFrameElement zz) =>
+                  Expression String -> Expression zz -> mn (Expression zz)
+set'frameBorder = setjsProperty "frameBorder"
+ 
+get'frameBorder ::
+                (Monad mn, CHTMLIFrameElement this) =>
+                  Expression this -> mn (Expression String)
+get'frameBorder thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "frameBorder")
+       return r
+ 
+getm'frameBorder ::
+                 (Monad mn, CHTMLIFrameElement this) =>
+                   Expression this -> mn (Expression String)
+getm'frameBorder = get'frameBorder
+ 
+set'height ::
+           (Monad mn, CHTMLIFrameElement zz) =>
+             Expression String -> Expression zz -> mn (Expression zz)
+set'height = setjsProperty "height"
+ 
+get'height ::
+           (Monad mn, CHTMLIFrameElement this) =>
+             Expression this -> mn (Expression String)
+get'height thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "height")
+       return r
+ 
+getm'height ::
+            (Monad mn, CHTMLIFrameElement this) =>
+              Expression this -> mn (Expression String)
+getm'height = get'height
+ 
+set'longDesc ::
+             (Monad mn, CHTMLIFrameElement zz) =>
+               Expression String -> Expression zz -> mn (Expression zz)
+set'longDesc = setjsProperty "longDesc"
+ 
+get'longDesc ::
+             (Monad mn, CHTMLIFrameElement this) =>
+               Expression this -> mn (Expression String)
+get'longDesc thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "longDesc")
+       return r
+ 
+getm'longDesc ::
+              (Monad mn, CHTMLIFrameElement this) =>
+                Expression this -> mn (Expression String)
+getm'longDesc = get'longDesc
+ 
+set'marginHeight ::
+                 (Monad mn, CHTMLIFrameElement zz) =>
+                   Expression String -> Expression zz -> mn (Expression zz)
+set'marginHeight = setjsProperty "marginHeight"
+ 
+get'marginHeight ::
+                 (Monad mn, CHTMLIFrameElement this) =>
+                   Expression this -> mn (Expression String)
+get'marginHeight thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "marginHeight")
+       return r
+ 
+getm'marginHeight ::
+                  (Monad mn, CHTMLIFrameElement this) =>
+                    Expression this -> mn (Expression String)
+getm'marginHeight = get'marginHeight
+ 
+set'marginWidth ::
+                (Monad mn, CHTMLIFrameElement zz) =>
+                  Expression String -> Expression zz -> mn (Expression zz)
+set'marginWidth = setjsProperty "marginWidth"
+ 
+get'marginWidth ::
+                (Monad mn, CHTMLIFrameElement this) =>
+                  Expression this -> mn (Expression String)
+get'marginWidth thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "marginWidth")
+       return r
+ 
+getm'marginWidth ::
+                 (Monad mn, CHTMLIFrameElement this) =>
+                   Expression this -> mn (Expression String)
+getm'marginWidth = get'marginWidth
+ 
+set'name ::
+         (Monad mn, CHTMLIFrameElement zz) =>
+           Expression String -> Expression zz -> mn (Expression zz)
+set'name = setjsProperty "name"
+ 
+get'name ::
+         (Monad mn, CHTMLIFrameElement this) =>
+           Expression this -> mn (Expression String)
+get'name thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "name")
+       return r
+ 
+getm'name ::
+          (Monad mn, CHTMLIFrameElement this) =>
+            Expression this -> mn (Expression String)
+getm'name = get'name
+ 
+set'scrolling ::
+              (Monad mn, CHTMLIFrameElement zz) =>
+                Expression String -> Expression zz -> mn (Expression zz)
+set'scrolling = setjsProperty "scrolling"
+ 
+get'scrolling ::
+              (Monad mn, CHTMLIFrameElement this) =>
+                Expression this -> mn (Expression String)
+get'scrolling thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "scrolling")
+       return r
+ 
+getm'scrolling ::
+               (Monad mn, CHTMLIFrameElement this) =>
+                 Expression this -> mn (Expression String)
+getm'scrolling = get'scrolling
+ 
+set'src ::
+        (Monad mn, CHTMLIFrameElement zz) =>
+          Expression String -> Expression zz -> mn (Expression zz)
+set'src = setjsProperty "src"
+ 
+get'src ::
+        (Monad mn, CHTMLIFrameElement this) =>
+          Expression this -> mn (Expression String)
+get'src thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "src")
+       return r
+ 
+getm'src ::
+         (Monad mn, CHTMLIFrameElement this) =>
+           Expression this -> mn (Expression String)
+getm'src = get'src
+ 
+set'width ::
+          (Monad mn, CHTMLIFrameElement zz) =>
+            Expression String -> Expression zz -> mn (Expression zz)
+set'width = setjsProperty "width"
+ 
+get'width ::
+          (Monad mn, CHTMLIFrameElement this) =>
+            Expression this -> mn (Expression String)
+get'width thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "width")
+       return r
+ 
+getm'width ::
+           (Monad mn, CHTMLIFrameElement this) =>
+             Expression this -> mn (Expression String)
+getm'width = get'width
+ 
+get'contentDocument ::
+                    (Monad mn, CHTMLIFrameElement this, CDocument zz) =>
+                      Expression this -> mn (Expression zz)
+get'contentDocument thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "contentDocument")
+       return r
+ 
+getm'contentDocument ::
+                     (Monad mn, CHTMLIFrameElement this) =>
+                       Expression this -> mn (Expression TDocument)
+getm'contentDocument = get'contentDocument
+
diff --git a/Data/DOM/HTMLImageElement.hs b/Data/DOM/HTMLImageElement.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/HTMLImageElement.hs
@@ -0,0 +1,238 @@
+
+module Data.DOM.HTMLImageElement
+       (set'name, get'name, getm'name, set'align, get'align, getm'align,
+        set'alt, get'alt, getm'alt, set'border, get'border, getm'border,
+        set'height, get'height, getm'height, set'hspace, get'hspace,
+        getm'hspace, set'isMap, get'isMap, getm'isMap, set'longDesc,
+        get'longDesc, getm'longDesc, set'src, get'src, getm'src,
+        set'useMap, get'useMap, getm'useMap, set'vspace, get'vspace,
+        getm'vspace, set'width, get'width, getm'width, mkImg)
+       where
+import Data.DOM.Html2
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+set'name ::
+         (Monad mn, CHTMLImageElement zz) =>
+           Expression String -> Expression zz -> mn (Expression zz)
+set'name = setjsProperty "name"
+ 
+get'name ::
+         (Monad mn, CHTMLImageElement this) =>
+           Expression this -> mn (Expression String)
+get'name thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "name")
+       return r
+ 
+getm'name ::
+          (Monad mn, CHTMLImageElement this) =>
+            Expression this -> mn (Expression String)
+getm'name = get'name
+ 
+set'align ::
+          (Monad mn, CHTMLImageElement zz) =>
+            Expression String -> Expression zz -> mn (Expression zz)
+set'align = setjsProperty "align"
+ 
+get'align ::
+          (Monad mn, CHTMLImageElement this) =>
+            Expression this -> mn (Expression String)
+get'align thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "align")
+       return r
+ 
+getm'align ::
+           (Monad mn, CHTMLImageElement this) =>
+             Expression this -> mn (Expression String)
+getm'align = get'align
+ 
+set'alt ::
+        (Monad mn, CHTMLImageElement zz) =>
+          Expression String -> Expression zz -> mn (Expression zz)
+set'alt = setjsProperty "alt"
+ 
+get'alt ::
+        (Monad mn, CHTMLImageElement this) =>
+          Expression this -> mn (Expression String)
+get'alt thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "alt")
+       return r
+ 
+getm'alt ::
+         (Monad mn, CHTMLImageElement this) =>
+           Expression this -> mn (Expression String)
+getm'alt = get'alt
+ 
+set'border ::
+           (Monad mn, CHTMLImageElement zz) =>
+             Expression String -> Expression zz -> mn (Expression zz)
+set'border = setjsProperty "border"
+ 
+get'border ::
+           (Monad mn, CHTMLImageElement this) =>
+             Expression this -> mn (Expression String)
+get'border thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "border")
+       return r
+ 
+getm'border ::
+            (Monad mn, CHTMLImageElement this) =>
+              Expression this -> mn (Expression String)
+getm'border = get'border
+ 
+set'height ::
+           (Monad mn, CHTMLImageElement zz) =>
+             Expression Double -> Expression zz -> mn (Expression zz)
+set'height = setjsProperty "height"
+ 
+get'height ::
+           (Monad mn, CHTMLImageElement this) =>
+             Expression this -> mn (Expression Double)
+get'height thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "height")
+       return r
+ 
+getm'height ::
+            (Monad mn, CHTMLImageElement this) =>
+              Expression this -> mn (Expression Double)
+getm'height = get'height
+ 
+set'hspace ::
+           (Monad mn, CHTMLImageElement zz) =>
+             Expression Double -> Expression zz -> mn (Expression zz)
+set'hspace = setjsProperty "hspace"
+ 
+get'hspace ::
+           (Monad mn, CHTMLImageElement this) =>
+             Expression this -> mn (Expression Double)
+get'hspace thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "hspace")
+       return r
+ 
+getm'hspace ::
+            (Monad mn, CHTMLImageElement this) =>
+              Expression this -> mn (Expression Double)
+getm'hspace = get'hspace
+ 
+set'isMap ::
+          (Monad mn, CHTMLImageElement zz) =>
+            Expression Bool -> Expression zz -> mn (Expression zz)
+set'isMap = setjsProperty "isMap"
+ 
+get'isMap ::
+          (Monad mn, CHTMLImageElement this) =>
+            Expression this -> mn (Expression Bool)
+get'isMap thisp
+  = do let et = undefined :: Bool
+       let r = DotRef et (thisp /\ et) (Id et "isMap")
+       return r
+ 
+getm'isMap ::
+           (Monad mn, CHTMLImageElement this) =>
+             Expression this -> mn (Expression Bool)
+getm'isMap = get'isMap
+ 
+set'longDesc ::
+             (Monad mn, CHTMLImageElement zz) =>
+               Expression String -> Expression zz -> mn (Expression zz)
+set'longDesc = setjsProperty "longDesc"
+ 
+get'longDesc ::
+             (Monad mn, CHTMLImageElement this) =>
+               Expression this -> mn (Expression String)
+get'longDesc thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "longDesc")
+       return r
+ 
+getm'longDesc ::
+              (Monad mn, CHTMLImageElement this) =>
+                Expression this -> mn (Expression String)
+getm'longDesc = get'longDesc
+ 
+set'src ::
+        (Monad mn, CHTMLImageElement zz) =>
+          Expression String -> Expression zz -> mn (Expression zz)
+set'src = setjsProperty "src"
+ 
+get'src ::
+        (Monad mn, CHTMLImageElement this) =>
+          Expression this -> mn (Expression String)
+get'src thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "src")
+       return r
+ 
+getm'src ::
+         (Monad mn, CHTMLImageElement this) =>
+           Expression this -> mn (Expression String)
+getm'src = get'src
+ 
+set'useMap ::
+           (Monad mn, CHTMLImageElement zz) =>
+             Expression String -> Expression zz -> mn (Expression zz)
+set'useMap = setjsProperty "useMap"
+ 
+get'useMap ::
+           (Monad mn, CHTMLImageElement this) =>
+             Expression this -> mn (Expression String)
+get'useMap thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "useMap")
+       return r
+ 
+getm'useMap ::
+            (Monad mn, CHTMLImageElement this) =>
+              Expression this -> mn (Expression String)
+getm'useMap = get'useMap
+ 
+set'vspace ::
+           (Monad mn, CHTMLImageElement zz) =>
+             Expression Double -> Expression zz -> mn (Expression zz)
+set'vspace = setjsProperty "vspace"
+ 
+get'vspace ::
+           (Monad mn, CHTMLImageElement this) =>
+             Expression this -> mn (Expression Double)
+get'vspace thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "vspace")
+       return r
+ 
+getm'vspace ::
+            (Monad mn, CHTMLImageElement this) =>
+              Expression this -> mn (Expression Double)
+getm'vspace = get'vspace
+ 
+set'width ::
+          (Monad mn, CHTMLImageElement zz) =>
+            Expression Double -> Expression zz -> mn (Expression zz)
+set'width = setjsProperty "width"
+ 
+get'width ::
+          (Monad mn, CHTMLImageElement this) =>
+            Expression this -> mn (Expression Double)
+get'width thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "width")
+       return r
+ 
+getm'width ::
+           (Monad mn, CHTMLImageElement this) =>
+             Expression this -> mn (Expression Double)
+getm'width = get'width
+ 
+mkImg ::
+      (Monad mn, CHTMLDocument a) =>
+        Expression a -> mn (Expression THTMLImageElement)
+mkImg = createElement (StringLit "img" "img")
+
diff --git a/Data/DOM/HTMLInputElement.hs b/Data/DOM/HTMLInputElement.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/HTMLInputElement.hs
@@ -0,0 +1,378 @@
+
+module Data.DOM.HTMLInputElement
+       (blur, focus, select, click, set'defaultValue, get'defaultValue,
+        getm'defaultValue, set'defaultChecked, get'defaultChecked,
+        getm'defaultChecked, get'form, getm'form, set'accept, get'accept,
+        getm'accept, set'accessKey, get'accessKey, getm'accessKey,
+        set'align, get'align, getm'align, set'alt, get'alt, getm'alt,
+        set'checked, get'checked, getm'checked, set'disabled, get'disabled,
+        getm'disabled, set'maxLength, get'maxLength, getm'maxLength,
+        set'name, get'name, getm'name, set'readOnly, get'readOnly,
+        getm'readOnly, set'size, get'size, getm'size, set'src, get'src,
+        getm'src, set'tabIndex, get'tabIndex, getm'tabIndex, set'type,
+        get'type, getm'type, set'useMap, get'useMap, getm'useMap,
+        set'value, get'value, getm'value, mkInput)
+       where
+import Data.DOM.Html2
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+blur ::
+     (Monad mn, CHTMLInputElement this) =>
+       Expression this -> mn (Expression ())
+blur thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "blur")
+       return (CallExpr et r [])
+ 
+focus ::
+      (Monad mn, CHTMLInputElement this) =>
+        Expression this -> mn (Expression ())
+focus thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "focus")
+       return (CallExpr et r [])
+ 
+select ::
+       (Monad mn, CHTMLInputElement this) =>
+         Expression this -> mn (Expression ())
+select thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "select")
+       return (CallExpr et r [])
+ 
+click ::
+      (Monad mn, CHTMLInputElement this) =>
+        Expression this -> mn (Expression ())
+click thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "click")
+       return (CallExpr et r [])
+ 
+set'defaultValue ::
+                 (Monad mn, CHTMLInputElement zz) =>
+                   Expression String -> Expression zz -> mn (Expression zz)
+set'defaultValue = setjsProperty "defaultValue"
+ 
+get'defaultValue ::
+                 (Monad mn, CHTMLInputElement this) =>
+                   Expression this -> mn (Expression String)
+get'defaultValue thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "defaultValue")
+       return r
+ 
+getm'defaultValue ::
+                  (Monad mn, CHTMLInputElement this) =>
+                    Expression this -> mn (Expression String)
+getm'defaultValue = get'defaultValue
+ 
+set'defaultChecked ::
+                   (Monad mn, CHTMLInputElement zz) =>
+                     Expression Bool -> Expression zz -> mn (Expression zz)
+set'defaultChecked = setjsProperty "defaultChecked"
+ 
+get'defaultChecked ::
+                   (Monad mn, CHTMLInputElement this) =>
+                     Expression this -> mn (Expression Bool)
+get'defaultChecked thisp
+  = do let et = undefined :: Bool
+       let r = DotRef et (thisp /\ et) (Id et "defaultChecked")
+       return r
+ 
+getm'defaultChecked ::
+                    (Monad mn, CHTMLInputElement this) =>
+                      Expression this -> mn (Expression Bool)
+getm'defaultChecked = get'defaultChecked
+ 
+get'form ::
+         (Monad mn, CHTMLInputElement this, CHTMLFormElement zz) =>
+           Expression this -> mn (Expression zz)
+get'form thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "form")
+       return r
+ 
+getm'form ::
+          (Monad mn, CHTMLInputElement this) =>
+            Expression this -> mn (Expression THTMLFormElement)
+getm'form = get'form
+ 
+set'accept ::
+           (Monad mn, CHTMLInputElement zz) =>
+             Expression String -> Expression zz -> mn (Expression zz)
+set'accept = setjsProperty "accept"
+ 
+get'accept ::
+           (Monad mn, CHTMLInputElement this) =>
+             Expression this -> mn (Expression String)
+get'accept thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "accept")
+       return r
+ 
+getm'accept ::
+            (Monad mn, CHTMLInputElement this) =>
+              Expression this -> mn (Expression String)
+getm'accept = get'accept
+ 
+set'accessKey ::
+              (Monad mn, CHTMLInputElement zz) =>
+                Expression String -> Expression zz -> mn (Expression zz)
+set'accessKey = setjsProperty "accessKey"
+ 
+get'accessKey ::
+              (Monad mn, CHTMLInputElement this) =>
+                Expression this -> mn (Expression String)
+get'accessKey thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "accessKey")
+       return r
+ 
+getm'accessKey ::
+               (Monad mn, CHTMLInputElement this) =>
+                 Expression this -> mn (Expression String)
+getm'accessKey = get'accessKey
+ 
+set'align ::
+          (Monad mn, CHTMLInputElement zz) =>
+            Expression String -> Expression zz -> mn (Expression zz)
+set'align = setjsProperty "align"
+ 
+get'align ::
+          (Monad mn, CHTMLInputElement this) =>
+            Expression this -> mn (Expression String)
+get'align thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "align")
+       return r
+ 
+getm'align ::
+           (Monad mn, CHTMLInputElement this) =>
+             Expression this -> mn (Expression String)
+getm'align = get'align
+ 
+set'alt ::
+        (Monad mn, CHTMLInputElement zz) =>
+          Expression String -> Expression zz -> mn (Expression zz)
+set'alt = setjsProperty "alt"
+ 
+get'alt ::
+        (Monad mn, CHTMLInputElement this) =>
+          Expression this -> mn (Expression String)
+get'alt thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "alt")
+       return r
+ 
+getm'alt ::
+         (Monad mn, CHTMLInputElement this) =>
+           Expression this -> mn (Expression String)
+getm'alt = get'alt
+ 
+set'checked ::
+            (Monad mn, CHTMLInputElement zz) =>
+              Expression Bool -> Expression zz -> mn (Expression zz)
+set'checked = setjsProperty "checked"
+ 
+get'checked ::
+            (Monad mn, CHTMLInputElement this) =>
+              Expression this -> mn (Expression Bool)
+get'checked thisp
+  = do let et = undefined :: Bool
+       let r = DotRef et (thisp /\ et) (Id et "checked")
+       return r
+ 
+getm'checked ::
+             (Monad mn, CHTMLInputElement this) =>
+               Expression this -> mn (Expression Bool)
+getm'checked = get'checked
+ 
+set'disabled ::
+             (Monad mn, CHTMLInputElement zz) =>
+               Expression Bool -> Expression zz -> mn (Expression zz)
+set'disabled = setjsProperty "disabled"
+ 
+get'disabled ::
+             (Monad mn, CHTMLInputElement this) =>
+               Expression this -> mn (Expression Bool)
+get'disabled thisp
+  = do let et = undefined :: Bool
+       let r = DotRef et (thisp /\ et) (Id et "disabled")
+       return r
+ 
+getm'disabled ::
+              (Monad mn, CHTMLInputElement this) =>
+                Expression this -> mn (Expression Bool)
+getm'disabled = get'disabled
+ 
+set'maxLength ::
+              (Monad mn, CHTMLInputElement zz) =>
+                Expression Double -> Expression zz -> mn (Expression zz)
+set'maxLength = setjsProperty "maxLength"
+ 
+get'maxLength ::
+              (Monad mn, CHTMLInputElement this) =>
+                Expression this -> mn (Expression Double)
+get'maxLength thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "maxLength")
+       return r
+ 
+getm'maxLength ::
+               (Monad mn, CHTMLInputElement this) =>
+                 Expression this -> mn (Expression Double)
+getm'maxLength = get'maxLength
+ 
+set'name ::
+         (Monad mn, CHTMLInputElement zz) =>
+           Expression String -> Expression zz -> mn (Expression zz)
+set'name = setjsProperty "name"
+ 
+get'name ::
+         (Monad mn, CHTMLInputElement this) =>
+           Expression this -> mn (Expression String)
+get'name thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "name")
+       return r
+ 
+getm'name ::
+          (Monad mn, CHTMLInputElement this) =>
+            Expression this -> mn (Expression String)
+getm'name = get'name
+ 
+set'readOnly ::
+             (Monad mn, CHTMLInputElement zz) =>
+               Expression Bool -> Expression zz -> mn (Expression zz)
+set'readOnly = setjsProperty "readOnly"
+ 
+get'readOnly ::
+             (Monad mn, CHTMLInputElement this) =>
+               Expression this -> mn (Expression Bool)
+get'readOnly thisp
+  = do let et = undefined :: Bool
+       let r = DotRef et (thisp /\ et) (Id et "readOnly")
+       return r
+ 
+getm'readOnly ::
+              (Monad mn, CHTMLInputElement this) =>
+                Expression this -> mn (Expression Bool)
+getm'readOnly = get'readOnly
+ 
+set'size ::
+         (Monad mn, CHTMLInputElement zz) =>
+           Expression Double -> Expression zz -> mn (Expression zz)
+set'size = setjsProperty "size"
+ 
+get'size ::
+         (Monad mn, CHTMLInputElement this) =>
+           Expression this -> mn (Expression Double)
+get'size thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "size")
+       return r
+ 
+getm'size ::
+          (Monad mn, CHTMLInputElement this) =>
+            Expression this -> mn (Expression Double)
+getm'size = get'size
+ 
+set'src ::
+        (Monad mn, CHTMLInputElement zz) =>
+          Expression String -> Expression zz -> mn (Expression zz)
+set'src = setjsProperty "src"
+ 
+get'src ::
+        (Monad mn, CHTMLInputElement this) =>
+          Expression this -> mn (Expression String)
+get'src thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "src")
+       return r
+ 
+getm'src ::
+         (Monad mn, CHTMLInputElement this) =>
+           Expression this -> mn (Expression String)
+getm'src = get'src
+ 
+set'tabIndex ::
+             (Monad mn, CHTMLInputElement zz) =>
+               Expression Double -> Expression zz -> mn (Expression zz)
+set'tabIndex = setjsProperty "tabIndex"
+ 
+get'tabIndex ::
+             (Monad mn, CHTMLInputElement this) =>
+               Expression this -> mn (Expression Double)
+get'tabIndex thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "tabIndex")
+       return r
+ 
+getm'tabIndex ::
+              (Monad mn, CHTMLInputElement this) =>
+                Expression this -> mn (Expression Double)
+getm'tabIndex = get'tabIndex
+ 
+set'type ::
+         (Monad mn, CHTMLInputElement zz) =>
+           Expression String -> Expression zz -> mn (Expression zz)
+set'type = setjsProperty "type"
+ 
+get'type ::
+         (Monad mn, CHTMLInputElement this) =>
+           Expression this -> mn (Expression String)
+get'type thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "type")
+       return r
+ 
+getm'type ::
+          (Monad mn, CHTMLInputElement this) =>
+            Expression this -> mn (Expression String)
+getm'type = get'type
+ 
+set'useMap ::
+           (Monad mn, CHTMLInputElement zz) =>
+             Expression String -> Expression zz -> mn (Expression zz)
+set'useMap = setjsProperty "useMap"
+ 
+get'useMap ::
+           (Monad mn, CHTMLInputElement this) =>
+             Expression this -> mn (Expression String)
+get'useMap thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "useMap")
+       return r
+ 
+getm'useMap ::
+            (Monad mn, CHTMLInputElement this) =>
+              Expression this -> mn (Expression String)
+getm'useMap = get'useMap
+ 
+set'value ::
+          (Monad mn, CHTMLInputElement zz) =>
+            Expression String -> Expression zz -> mn (Expression zz)
+set'value = setjsProperty "value"
+ 
+get'value ::
+          (Monad mn, CHTMLInputElement this) =>
+            Expression this -> mn (Expression String)
+get'value thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "value")
+       return r
+ 
+getm'value ::
+           (Monad mn, CHTMLInputElement this) =>
+             Expression this -> mn (Expression String)
+getm'value = get'value
+ 
+mkInput ::
+        (Monad mn, CHTMLDocument a) =>
+          Expression a -> mn (Expression THTMLInputElement)
+mkInput = createElement (StringLit "input" "input")
+
diff --git a/Data/DOM/HTMLIsIndexElement.hs b/Data/DOM/HTMLIsIndexElement.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/HTMLIsIndexElement.hs
@@ -0,0 +1,41 @@
+
+module Data.DOM.HTMLIsIndexElement
+       (get'form, getm'form, set'prompt, get'prompt, getm'prompt) where
+import Data.DOM.Html2
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+get'form ::
+         (Monad mn, CHTMLIsIndexElement this, CHTMLFormElement zz) =>
+           Expression this -> mn (Expression zz)
+get'form thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "form")
+       return r
+ 
+getm'form ::
+          (Monad mn, CHTMLIsIndexElement this) =>
+            Expression this -> mn (Expression THTMLFormElement)
+getm'form = get'form
+ 
+set'prompt ::
+           (Monad mn, CHTMLIsIndexElement zz) =>
+             Expression String -> Expression zz -> mn (Expression zz)
+set'prompt = setjsProperty "prompt"
+ 
+get'prompt ::
+           (Monad mn, CHTMLIsIndexElement this) =>
+             Expression this -> mn (Expression String)
+get'prompt thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "prompt")
+       return r
+ 
+getm'prompt ::
+            (Monad mn, CHTMLIsIndexElement this) =>
+              Expression this -> mn (Expression String)
+getm'prompt = get'prompt
+
diff --git a/Data/DOM/HTMLLIElement.hs b/Data/DOM/HTMLLIElement.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/HTMLLIElement.hs
@@ -0,0 +1,53 @@
+
+module Data.DOM.HTMLLIElement
+       (set'type, get'type, getm'type, set'value, get'value, getm'value,
+        mkLi)
+       where
+import Data.DOM.Html2
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+set'type ::
+         (Monad mn, CHTMLLIElement zz) =>
+           Expression String -> Expression zz -> mn (Expression zz)
+set'type = setjsProperty "type"
+ 
+get'type ::
+         (Monad mn, CHTMLLIElement this) =>
+           Expression this -> mn (Expression String)
+get'type thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "type")
+       return r
+ 
+getm'type ::
+          (Monad mn, CHTMLLIElement this) =>
+            Expression this -> mn (Expression String)
+getm'type = get'type
+ 
+set'value ::
+          (Monad mn, CHTMLLIElement zz) =>
+            Expression Double -> Expression zz -> mn (Expression zz)
+set'value = setjsProperty "value"
+ 
+get'value ::
+          (Monad mn, CHTMLLIElement this) =>
+            Expression this -> mn (Expression Double)
+get'value thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "value")
+       return r
+ 
+getm'value ::
+           (Monad mn, CHTMLLIElement this) =>
+             Expression this -> mn (Expression Double)
+getm'value = get'value
+ 
+mkLi ::
+     (Monad mn, CHTMLDocument a) =>
+       Expression a -> mn (Expression THTMLLIElement)
+mkLi = createElement (StringLit "li" "li")
+
diff --git a/Data/DOM/HTMLLabelElement.hs b/Data/DOM/HTMLLabelElement.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/HTMLLabelElement.hs
@@ -0,0 +1,61 @@
+
+module Data.DOM.HTMLLabelElement
+       (get'form, getm'form, set'accessKey, get'accessKey, getm'accessKey,
+        set'htmlFor, get'htmlFor, getm'htmlFor)
+       where
+import Data.DOM.Html2
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+get'form ::
+         (Monad mn, CHTMLLabelElement this, CHTMLFormElement zz) =>
+           Expression this -> mn (Expression zz)
+get'form thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "form")
+       return r
+ 
+getm'form ::
+          (Monad mn, CHTMLLabelElement this) =>
+            Expression this -> mn (Expression THTMLFormElement)
+getm'form = get'form
+ 
+set'accessKey ::
+              (Monad mn, CHTMLLabelElement zz) =>
+                Expression String -> Expression zz -> mn (Expression zz)
+set'accessKey = setjsProperty "accessKey"
+ 
+get'accessKey ::
+              (Monad mn, CHTMLLabelElement this) =>
+                Expression this -> mn (Expression String)
+get'accessKey thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "accessKey")
+       return r
+ 
+getm'accessKey ::
+               (Monad mn, CHTMLLabelElement this) =>
+                 Expression this -> mn (Expression String)
+getm'accessKey = get'accessKey
+ 
+set'htmlFor ::
+            (Monad mn, CHTMLLabelElement zz) =>
+              Expression String -> Expression zz -> mn (Expression zz)
+set'htmlFor = setjsProperty "htmlFor"
+ 
+get'htmlFor ::
+            (Monad mn, CHTMLLabelElement this) =>
+              Expression this -> mn (Expression String)
+get'htmlFor thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "htmlFor")
+       return r
+ 
+getm'htmlFor ::
+             (Monad mn, CHTMLLabelElement this) =>
+               Expression this -> mn (Expression String)
+getm'htmlFor = get'htmlFor
+
diff --git a/Data/DOM/HTMLLegendElement.hs b/Data/DOM/HTMLLegendElement.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/HTMLLegendElement.hs
@@ -0,0 +1,61 @@
+
+module Data.DOM.HTMLLegendElement
+       (get'form, getm'form, set'accessKey, get'accessKey, getm'accessKey,
+        set'align, get'align, getm'align)
+       where
+import Data.DOM.Html2
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+get'form ::
+         (Monad mn, CHTMLLegendElement this, CHTMLFormElement zz) =>
+           Expression this -> mn (Expression zz)
+get'form thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "form")
+       return r
+ 
+getm'form ::
+          (Monad mn, CHTMLLegendElement this) =>
+            Expression this -> mn (Expression THTMLFormElement)
+getm'form = get'form
+ 
+set'accessKey ::
+              (Monad mn, CHTMLLegendElement zz) =>
+                Expression String -> Expression zz -> mn (Expression zz)
+set'accessKey = setjsProperty "accessKey"
+ 
+get'accessKey ::
+              (Monad mn, CHTMLLegendElement this) =>
+                Expression this -> mn (Expression String)
+get'accessKey thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "accessKey")
+       return r
+ 
+getm'accessKey ::
+               (Monad mn, CHTMLLegendElement this) =>
+                 Expression this -> mn (Expression String)
+getm'accessKey = get'accessKey
+ 
+set'align ::
+          (Monad mn, CHTMLLegendElement zz) =>
+            Expression String -> Expression zz -> mn (Expression zz)
+set'align = setjsProperty "align"
+ 
+get'align ::
+          (Monad mn, CHTMLLegendElement this) =>
+            Expression this -> mn (Expression String)
+get'align thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "align")
+       return r
+ 
+getm'align ::
+           (Monad mn, CHTMLLegendElement this) =>
+             Expression this -> mn (Expression String)
+getm'align = get'align
+
diff --git a/Data/DOM/HTMLLinkElement.hs b/Data/DOM/HTMLLinkElement.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/HTMLLinkElement.hs
@@ -0,0 +1,177 @@
+
+module Data.DOM.HTMLLinkElement
+       (set'disabled, get'disabled, getm'disabled, set'charset,
+        get'charset, getm'charset, set'href, get'href, getm'href,
+        set'hreflang, get'hreflang, getm'hreflang, set'media, get'media,
+        getm'media, set'rel, get'rel, getm'rel, set'rev, get'rev, getm'rev,
+        set'target, get'target, getm'target, set'type, get'type, getm'type)
+       where
+import Data.DOM.Html2
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+set'disabled ::
+             (Monad mn, CHTMLLinkElement zz) =>
+               Expression Bool -> Expression zz -> mn (Expression zz)
+set'disabled = setjsProperty "disabled"
+ 
+get'disabled ::
+             (Monad mn, CHTMLLinkElement this) =>
+               Expression this -> mn (Expression Bool)
+get'disabled thisp
+  = do let et = undefined :: Bool
+       let r = DotRef et (thisp /\ et) (Id et "disabled")
+       return r
+ 
+getm'disabled ::
+              (Monad mn, CHTMLLinkElement this) =>
+                Expression this -> mn (Expression Bool)
+getm'disabled = get'disabled
+ 
+set'charset ::
+            (Monad mn, CHTMLLinkElement zz) =>
+              Expression String -> Expression zz -> mn (Expression zz)
+set'charset = setjsProperty "charset"
+ 
+get'charset ::
+            (Monad mn, CHTMLLinkElement this) =>
+              Expression this -> mn (Expression String)
+get'charset thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "charset")
+       return r
+ 
+getm'charset ::
+             (Monad mn, CHTMLLinkElement this) =>
+               Expression this -> mn (Expression String)
+getm'charset = get'charset
+ 
+set'href ::
+         (Monad mn, CHTMLLinkElement zz) =>
+           Expression String -> Expression zz -> mn (Expression zz)
+set'href = setjsProperty "href"
+ 
+get'href ::
+         (Monad mn, CHTMLLinkElement this) =>
+           Expression this -> mn (Expression String)
+get'href thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "href")
+       return r
+ 
+getm'href ::
+          (Monad mn, CHTMLLinkElement this) =>
+            Expression this -> mn (Expression String)
+getm'href = get'href
+ 
+set'hreflang ::
+             (Monad mn, CHTMLLinkElement zz) =>
+               Expression String -> Expression zz -> mn (Expression zz)
+set'hreflang = setjsProperty "hreflang"
+ 
+get'hreflang ::
+             (Monad mn, CHTMLLinkElement this) =>
+               Expression this -> mn (Expression String)
+get'hreflang thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "hreflang")
+       return r
+ 
+getm'hreflang ::
+              (Monad mn, CHTMLLinkElement this) =>
+                Expression this -> mn (Expression String)
+getm'hreflang = get'hreflang
+ 
+set'media ::
+          (Monad mn, CHTMLLinkElement zz) =>
+            Expression String -> Expression zz -> mn (Expression zz)
+set'media = setjsProperty "media"
+ 
+get'media ::
+          (Monad mn, CHTMLLinkElement this) =>
+            Expression this -> mn (Expression String)
+get'media thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "media")
+       return r
+ 
+getm'media ::
+           (Monad mn, CHTMLLinkElement this) =>
+             Expression this -> mn (Expression String)
+getm'media = get'media
+ 
+set'rel ::
+        (Monad mn, CHTMLLinkElement zz) =>
+          Expression String -> Expression zz -> mn (Expression zz)
+set'rel = setjsProperty "rel"
+ 
+get'rel ::
+        (Monad mn, CHTMLLinkElement this) =>
+          Expression this -> mn (Expression String)
+get'rel thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "rel")
+       return r
+ 
+getm'rel ::
+         (Monad mn, CHTMLLinkElement this) =>
+           Expression this -> mn (Expression String)
+getm'rel = get'rel
+ 
+set'rev ::
+        (Monad mn, CHTMLLinkElement zz) =>
+          Expression String -> Expression zz -> mn (Expression zz)
+set'rev = setjsProperty "rev"
+ 
+get'rev ::
+        (Monad mn, CHTMLLinkElement this) =>
+          Expression this -> mn (Expression String)
+get'rev thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "rev")
+       return r
+ 
+getm'rev ::
+         (Monad mn, CHTMLLinkElement this) =>
+           Expression this -> mn (Expression String)
+getm'rev = get'rev
+ 
+set'target ::
+           (Monad mn, CHTMLLinkElement zz) =>
+             Expression String -> Expression zz -> mn (Expression zz)
+set'target = setjsProperty "target"
+ 
+get'target ::
+           (Monad mn, CHTMLLinkElement this) =>
+             Expression this -> mn (Expression String)
+get'target thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "target")
+       return r
+ 
+getm'target ::
+            (Monad mn, CHTMLLinkElement this) =>
+              Expression this -> mn (Expression String)
+getm'target = get'target
+ 
+set'type ::
+         (Monad mn, CHTMLLinkElement zz) =>
+           Expression String -> Expression zz -> mn (Expression zz)
+set'type = setjsProperty "type"
+ 
+get'type ::
+         (Monad mn, CHTMLLinkElement this) =>
+           Expression this -> mn (Expression String)
+get'type thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "type")
+       return r
+ 
+getm'type ::
+          (Monad mn, CHTMLLinkElement this) =>
+            Expression this -> mn (Expression String)
+getm'type = get'type
+
diff --git a/Data/DOM/HTMLMapElement.hs b/Data/DOM/HTMLMapElement.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/HTMLMapElement.hs
@@ -0,0 +1,41 @@
+
+module Data.DOM.HTMLMapElement
+       (get'areas, getm'areas, set'name, get'name, getm'name) where
+import Data.DOM.Html2
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+get'areas ::
+          (Monad mn, CHTMLMapElement this, CHTMLCollection zz) =>
+            Expression this -> mn (Expression zz)
+get'areas thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "areas")
+       return r
+ 
+getm'areas ::
+           (Monad mn, CHTMLMapElement this) =>
+             Expression this -> mn (Expression THTMLCollection)
+getm'areas = get'areas
+ 
+set'name ::
+         (Monad mn, CHTMLMapElement zz) =>
+           Expression String -> Expression zz -> mn (Expression zz)
+set'name = setjsProperty "name"
+ 
+get'name ::
+         (Monad mn, CHTMLMapElement this) =>
+           Expression this -> mn (Expression String)
+get'name thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "name")
+       return r
+ 
+getm'name ::
+          (Monad mn, CHTMLMapElement this) =>
+            Expression this -> mn (Expression String)
+getm'name = get'name
+
diff --git a/Data/DOM/HTMLMenuElement.hs b/Data/DOM/HTMLMenuElement.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/HTMLMenuElement.hs
@@ -0,0 +1,28 @@
+
+module Data.DOM.HTMLMenuElement
+       (set'compact, get'compact, getm'compact) where
+import Data.DOM.Html2
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+set'compact ::
+            (Monad mn, CHTMLMenuElement zz) =>
+              Expression Bool -> Expression zz -> mn (Expression zz)
+set'compact = setjsProperty "compact"
+ 
+get'compact ::
+            (Monad mn, CHTMLMenuElement this) =>
+              Expression this -> mn (Expression Bool)
+get'compact thisp
+  = do let et = undefined :: Bool
+       let r = DotRef et (thisp /\ et) (Id et "compact")
+       return r
+ 
+getm'compact ::
+             (Monad mn, CHTMLMenuElement this) =>
+               Expression this -> mn (Expression Bool)
+getm'compact = get'compact
+
diff --git a/Data/DOM/HTMLMetaElement.hs b/Data/DOM/HTMLMetaElement.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/HTMLMetaElement.hs
@@ -0,0 +1,85 @@
+
+module Data.DOM.HTMLMetaElement
+       (set'content, get'content, getm'content, set'httpEquiv,
+        get'httpEquiv, getm'httpEquiv, set'name, get'name, getm'name,
+        set'scheme, get'scheme, getm'scheme)
+       where
+import Data.DOM.Html2
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+set'content ::
+            (Monad mn, CHTMLMetaElement zz) =>
+              Expression String -> Expression zz -> mn (Expression zz)
+set'content = setjsProperty "content"
+ 
+get'content ::
+            (Monad mn, CHTMLMetaElement this) =>
+              Expression this -> mn (Expression String)
+get'content thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "content")
+       return r
+ 
+getm'content ::
+             (Monad mn, CHTMLMetaElement this) =>
+               Expression this -> mn (Expression String)
+getm'content = get'content
+ 
+set'httpEquiv ::
+              (Monad mn, CHTMLMetaElement zz) =>
+                Expression String -> Expression zz -> mn (Expression zz)
+set'httpEquiv = setjsProperty "httpEquiv"
+ 
+get'httpEquiv ::
+              (Monad mn, CHTMLMetaElement this) =>
+                Expression this -> mn (Expression String)
+get'httpEquiv thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "httpEquiv")
+       return r
+ 
+getm'httpEquiv ::
+               (Monad mn, CHTMLMetaElement this) =>
+                 Expression this -> mn (Expression String)
+getm'httpEquiv = get'httpEquiv
+ 
+set'name ::
+         (Monad mn, CHTMLMetaElement zz) =>
+           Expression String -> Expression zz -> mn (Expression zz)
+set'name = setjsProperty "name"
+ 
+get'name ::
+         (Monad mn, CHTMLMetaElement this) =>
+           Expression this -> mn (Expression String)
+get'name thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "name")
+       return r
+ 
+getm'name ::
+          (Monad mn, CHTMLMetaElement this) =>
+            Expression this -> mn (Expression String)
+getm'name = get'name
+ 
+set'scheme ::
+           (Monad mn, CHTMLMetaElement zz) =>
+             Expression String -> Expression zz -> mn (Expression zz)
+set'scheme = setjsProperty "scheme"
+ 
+get'scheme ::
+           (Monad mn, CHTMLMetaElement this) =>
+             Expression this -> mn (Expression String)
+get'scheme thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "scheme")
+       return r
+ 
+getm'scheme ::
+            (Monad mn, CHTMLMetaElement this) =>
+              Expression this -> mn (Expression String)
+getm'scheme = get'scheme
+
diff --git a/Data/DOM/HTMLModElement.hs b/Data/DOM/HTMLModElement.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/HTMLModElement.hs
@@ -0,0 +1,48 @@
+
+module Data.DOM.HTMLModElement
+       (set'cite, get'cite, getm'cite, set'dateTime, get'dateTime,
+        getm'dateTime)
+       where
+import Data.DOM.Html2
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+set'cite ::
+         (Monad mn, CHTMLModElement zz) =>
+           Expression String -> Expression zz -> mn (Expression zz)
+set'cite = setjsProperty "cite"
+ 
+get'cite ::
+         (Monad mn, CHTMLModElement this) =>
+           Expression this -> mn (Expression String)
+get'cite thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "cite")
+       return r
+ 
+getm'cite ::
+          (Monad mn, CHTMLModElement this) =>
+            Expression this -> mn (Expression String)
+getm'cite = get'cite
+ 
+set'dateTime ::
+             (Monad mn, CHTMLModElement zz) =>
+               Expression String -> Expression zz -> mn (Expression zz)
+set'dateTime = setjsProperty "dateTime"
+ 
+get'dateTime ::
+             (Monad mn, CHTMLModElement this) =>
+               Expression this -> mn (Expression String)
+get'dateTime thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "dateTime")
+       return r
+ 
+getm'dateTime ::
+              (Monad mn, CHTMLModElement this) =>
+                Expression this -> mn (Expression String)
+getm'dateTime = get'dateTime
+
diff --git a/Data/DOM/HTMLOListElement.hs b/Data/DOM/HTMLOListElement.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/HTMLOListElement.hs
@@ -0,0 +1,71 @@
+
+module Data.DOM.HTMLOListElement
+       (set'compact, get'compact, getm'compact, set'start, get'start,
+        getm'start, set'type, get'type, getm'type, mkOl)
+       where
+import Data.DOM.Html2
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+set'compact ::
+            (Monad mn, CHTMLOListElement zz) =>
+              Expression Bool -> Expression zz -> mn (Expression zz)
+set'compact = setjsProperty "compact"
+ 
+get'compact ::
+            (Monad mn, CHTMLOListElement this) =>
+              Expression this -> mn (Expression Bool)
+get'compact thisp
+  = do let et = undefined :: Bool
+       let r = DotRef et (thisp /\ et) (Id et "compact")
+       return r
+ 
+getm'compact ::
+             (Monad mn, CHTMLOListElement this) =>
+               Expression this -> mn (Expression Bool)
+getm'compact = get'compact
+ 
+set'start ::
+          (Monad mn, CHTMLOListElement zz) =>
+            Expression Double -> Expression zz -> mn (Expression zz)
+set'start = setjsProperty "start"
+ 
+get'start ::
+          (Monad mn, CHTMLOListElement this) =>
+            Expression this -> mn (Expression Double)
+get'start thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "start")
+       return r
+ 
+getm'start ::
+           (Monad mn, CHTMLOListElement this) =>
+             Expression this -> mn (Expression Double)
+getm'start = get'start
+ 
+set'type ::
+         (Monad mn, CHTMLOListElement zz) =>
+           Expression String -> Expression zz -> mn (Expression zz)
+set'type = setjsProperty "type"
+ 
+get'type ::
+         (Monad mn, CHTMLOListElement this) =>
+           Expression this -> mn (Expression String)
+get'type thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "type")
+       return r
+ 
+getm'type ::
+          (Monad mn, CHTMLOListElement this) =>
+            Expression this -> mn (Expression String)
+getm'type = get'type
+ 
+mkOl ::
+     (Monad mn, CHTMLDocument a) =>
+       Expression a -> mn (Expression THTMLOListElement)
+mkOl = createElement (StringLit "ol" "ol")
+
diff --git a/Data/DOM/HTMLObjectElement.hs b/Data/DOM/HTMLObjectElement.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/HTMLObjectElement.hs
@@ -0,0 +1,359 @@
+
+module Data.DOM.HTMLObjectElement
+       (get'form, getm'form, set'code, get'code, getm'code, set'align,
+        get'align, getm'align, set'archive, get'archive, getm'archive,
+        set'border, get'border, getm'border, set'codeBase, get'codeBase,
+        getm'codeBase, set'codeType, get'codeType, getm'codeType, set'data,
+        get'data, getm'data, set'declare, get'declare, getm'declare,
+        set'height, get'height, getm'height, set'hspace, get'hspace,
+        getm'hspace, set'name, get'name, getm'name, set'standby,
+        get'standby, getm'standby, set'tabIndex, get'tabIndex,
+        getm'tabIndex, set'type, get'type, getm'type, set'useMap,
+        get'useMap, getm'useMap, set'vspace, get'vspace, getm'vspace,
+        set'width, get'width, getm'width, get'contentDocument,
+        getm'contentDocument, mkObject)
+       where
+import Data.DOM.Html2
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+get'form ::
+         (Monad mn, CHTMLObjectElement this, CHTMLFormElement zz) =>
+           Expression this -> mn (Expression zz)
+get'form thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "form")
+       return r
+ 
+getm'form ::
+          (Monad mn, CHTMLObjectElement this) =>
+            Expression this -> mn (Expression THTMLFormElement)
+getm'form = get'form
+ 
+set'code ::
+         (Monad mn, CHTMLObjectElement zz) =>
+           Expression String -> Expression zz -> mn (Expression zz)
+set'code = setjsProperty "code"
+ 
+get'code ::
+         (Monad mn, CHTMLObjectElement this) =>
+           Expression this -> mn (Expression String)
+get'code thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "code")
+       return r
+ 
+getm'code ::
+          (Monad mn, CHTMLObjectElement this) =>
+            Expression this -> mn (Expression String)
+getm'code = get'code
+ 
+set'align ::
+          (Monad mn, CHTMLObjectElement zz) =>
+            Expression String -> Expression zz -> mn (Expression zz)
+set'align = setjsProperty "align"
+ 
+get'align ::
+          (Monad mn, CHTMLObjectElement this) =>
+            Expression this -> mn (Expression String)
+get'align thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "align")
+       return r
+ 
+getm'align ::
+           (Monad mn, CHTMLObjectElement this) =>
+             Expression this -> mn (Expression String)
+getm'align = get'align
+ 
+set'archive ::
+            (Monad mn, CHTMLObjectElement zz) =>
+              Expression String -> Expression zz -> mn (Expression zz)
+set'archive = setjsProperty "archive"
+ 
+get'archive ::
+            (Monad mn, CHTMLObjectElement this) =>
+              Expression this -> mn (Expression String)
+get'archive thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "archive")
+       return r
+ 
+getm'archive ::
+             (Monad mn, CHTMLObjectElement this) =>
+               Expression this -> mn (Expression String)
+getm'archive = get'archive
+ 
+set'border ::
+           (Monad mn, CHTMLObjectElement zz) =>
+             Expression String -> Expression zz -> mn (Expression zz)
+set'border = setjsProperty "border"
+ 
+get'border ::
+           (Monad mn, CHTMLObjectElement this) =>
+             Expression this -> mn (Expression String)
+get'border thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "border")
+       return r
+ 
+getm'border ::
+            (Monad mn, CHTMLObjectElement this) =>
+              Expression this -> mn (Expression String)
+getm'border = get'border
+ 
+set'codeBase ::
+             (Monad mn, CHTMLObjectElement zz) =>
+               Expression String -> Expression zz -> mn (Expression zz)
+set'codeBase = setjsProperty "codeBase"
+ 
+get'codeBase ::
+             (Monad mn, CHTMLObjectElement this) =>
+               Expression this -> mn (Expression String)
+get'codeBase thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "codeBase")
+       return r
+ 
+getm'codeBase ::
+              (Monad mn, CHTMLObjectElement this) =>
+                Expression this -> mn (Expression String)
+getm'codeBase = get'codeBase
+ 
+set'codeType ::
+             (Monad mn, CHTMLObjectElement zz) =>
+               Expression String -> Expression zz -> mn (Expression zz)
+set'codeType = setjsProperty "codeType"
+ 
+get'codeType ::
+             (Monad mn, CHTMLObjectElement this) =>
+               Expression this -> mn (Expression String)
+get'codeType thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "codeType")
+       return r
+ 
+getm'codeType ::
+              (Monad mn, CHTMLObjectElement this) =>
+                Expression this -> mn (Expression String)
+getm'codeType = get'codeType
+ 
+set'data ::
+         (Monad mn, CHTMLObjectElement zz) =>
+           Expression String -> Expression zz -> mn (Expression zz)
+set'data = setjsProperty "data"
+ 
+get'data ::
+         (Monad mn, CHTMLObjectElement this) =>
+           Expression this -> mn (Expression String)
+get'data thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "data")
+       return r
+ 
+getm'data ::
+          (Monad mn, CHTMLObjectElement this) =>
+            Expression this -> mn (Expression String)
+getm'data = get'data
+ 
+set'declare ::
+            (Monad mn, CHTMLObjectElement zz) =>
+              Expression Bool -> Expression zz -> mn (Expression zz)
+set'declare = setjsProperty "declare"
+ 
+get'declare ::
+            (Monad mn, CHTMLObjectElement this) =>
+              Expression this -> mn (Expression Bool)
+get'declare thisp
+  = do let et = undefined :: Bool
+       let r = DotRef et (thisp /\ et) (Id et "declare")
+       return r
+ 
+getm'declare ::
+             (Monad mn, CHTMLObjectElement this) =>
+               Expression this -> mn (Expression Bool)
+getm'declare = get'declare
+ 
+set'height ::
+           (Monad mn, CHTMLObjectElement zz) =>
+             Expression String -> Expression zz -> mn (Expression zz)
+set'height = setjsProperty "height"
+ 
+get'height ::
+           (Monad mn, CHTMLObjectElement this) =>
+             Expression this -> mn (Expression String)
+get'height thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "height")
+       return r
+ 
+getm'height ::
+            (Monad mn, CHTMLObjectElement this) =>
+              Expression this -> mn (Expression String)
+getm'height = get'height
+ 
+set'hspace ::
+           (Monad mn, CHTMLObjectElement zz) =>
+             Expression Double -> Expression zz -> mn (Expression zz)
+set'hspace = setjsProperty "hspace"
+ 
+get'hspace ::
+           (Monad mn, CHTMLObjectElement this) =>
+             Expression this -> mn (Expression Double)
+get'hspace thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "hspace")
+       return r
+ 
+getm'hspace ::
+            (Monad mn, CHTMLObjectElement this) =>
+              Expression this -> mn (Expression Double)
+getm'hspace = get'hspace
+ 
+set'name ::
+         (Monad mn, CHTMLObjectElement zz) =>
+           Expression String -> Expression zz -> mn (Expression zz)
+set'name = setjsProperty "name"
+ 
+get'name ::
+         (Monad mn, CHTMLObjectElement this) =>
+           Expression this -> mn (Expression String)
+get'name thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "name")
+       return r
+ 
+getm'name ::
+          (Monad mn, CHTMLObjectElement this) =>
+            Expression this -> mn (Expression String)
+getm'name = get'name
+ 
+set'standby ::
+            (Monad mn, CHTMLObjectElement zz) =>
+              Expression String -> Expression zz -> mn (Expression zz)
+set'standby = setjsProperty "standby"
+ 
+get'standby ::
+            (Monad mn, CHTMLObjectElement this) =>
+              Expression this -> mn (Expression String)
+get'standby thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "standby")
+       return r
+ 
+getm'standby ::
+             (Monad mn, CHTMLObjectElement this) =>
+               Expression this -> mn (Expression String)
+getm'standby = get'standby
+ 
+set'tabIndex ::
+             (Monad mn, CHTMLObjectElement zz) =>
+               Expression Double -> Expression zz -> mn (Expression zz)
+set'tabIndex = setjsProperty "tabIndex"
+ 
+get'tabIndex ::
+             (Monad mn, CHTMLObjectElement this) =>
+               Expression this -> mn (Expression Double)
+get'tabIndex thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "tabIndex")
+       return r
+ 
+getm'tabIndex ::
+              (Monad mn, CHTMLObjectElement this) =>
+                Expression this -> mn (Expression Double)
+getm'tabIndex = get'tabIndex
+ 
+set'type ::
+         (Monad mn, CHTMLObjectElement zz) =>
+           Expression String -> Expression zz -> mn (Expression zz)
+set'type = setjsProperty "type"
+ 
+get'type ::
+         (Monad mn, CHTMLObjectElement this) =>
+           Expression this -> mn (Expression String)
+get'type thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "type")
+       return r
+ 
+getm'type ::
+          (Monad mn, CHTMLObjectElement this) =>
+            Expression this -> mn (Expression String)
+getm'type = get'type
+ 
+set'useMap ::
+           (Monad mn, CHTMLObjectElement zz) =>
+             Expression String -> Expression zz -> mn (Expression zz)
+set'useMap = setjsProperty "useMap"
+ 
+get'useMap ::
+           (Monad mn, CHTMLObjectElement this) =>
+             Expression this -> mn (Expression String)
+get'useMap thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "useMap")
+       return r
+ 
+getm'useMap ::
+            (Monad mn, CHTMLObjectElement this) =>
+              Expression this -> mn (Expression String)
+getm'useMap = get'useMap
+ 
+set'vspace ::
+           (Monad mn, CHTMLObjectElement zz) =>
+             Expression Double -> Expression zz -> mn (Expression zz)
+set'vspace = setjsProperty "vspace"
+ 
+get'vspace ::
+           (Monad mn, CHTMLObjectElement this) =>
+             Expression this -> mn (Expression Double)
+get'vspace thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "vspace")
+       return r
+ 
+getm'vspace ::
+            (Monad mn, CHTMLObjectElement this) =>
+              Expression this -> mn (Expression Double)
+getm'vspace = get'vspace
+ 
+set'width ::
+          (Monad mn, CHTMLObjectElement zz) =>
+            Expression String -> Expression zz -> mn (Expression zz)
+set'width = setjsProperty "width"
+ 
+get'width ::
+          (Monad mn, CHTMLObjectElement this) =>
+            Expression this -> mn (Expression String)
+get'width thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "width")
+       return r
+ 
+getm'width ::
+           (Monad mn, CHTMLObjectElement this) =>
+             Expression this -> mn (Expression String)
+getm'width = get'width
+ 
+get'contentDocument ::
+                    (Monad mn, CHTMLObjectElement this, CDocument zz) =>
+                      Expression this -> mn (Expression zz)
+get'contentDocument thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "contentDocument")
+       return r
+ 
+getm'contentDocument ::
+                     (Monad mn, CHTMLObjectElement this) =>
+                       Expression this -> mn (Expression TDocument)
+getm'contentDocument = get'contentDocument
+ 
+mkObject ::
+         (Monad mn, CHTMLDocument a) =>
+           Expression a -> mn (Expression THTMLObjectElement)
+mkObject = createElement (StringLit "object" "object")
+
diff --git a/Data/DOM/HTMLOptGroupElement.hs b/Data/DOM/HTMLOptGroupElement.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/HTMLOptGroupElement.hs
@@ -0,0 +1,48 @@
+
+module Data.DOM.HTMLOptGroupElement
+       (set'disabled, get'disabled, getm'disabled, set'label, get'label,
+        getm'label)
+       where
+import Data.DOM.Html2
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+set'disabled ::
+             (Monad mn, CHTMLOptGroupElement zz) =>
+               Expression Bool -> Expression zz -> mn (Expression zz)
+set'disabled = setjsProperty "disabled"
+ 
+get'disabled ::
+             (Monad mn, CHTMLOptGroupElement this) =>
+               Expression this -> mn (Expression Bool)
+get'disabled thisp
+  = do let et = undefined :: Bool
+       let r = DotRef et (thisp /\ et) (Id et "disabled")
+       return r
+ 
+getm'disabled ::
+              (Monad mn, CHTMLOptGroupElement this) =>
+                Expression this -> mn (Expression Bool)
+getm'disabled = get'disabled
+ 
+set'label ::
+          (Monad mn, CHTMLOptGroupElement zz) =>
+            Expression String -> Expression zz -> mn (Expression zz)
+set'label = setjsProperty "label"
+ 
+get'label ::
+          (Monad mn, CHTMLOptGroupElement this) =>
+            Expression this -> mn (Expression String)
+get'label thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "label")
+       return r
+ 
+getm'label ::
+           (Monad mn, CHTMLOptGroupElement this) =>
+             Expression this -> mn (Expression String)
+getm'label = get'label
+
diff --git a/Data/DOM/HTMLOptionElement.hs b/Data/DOM/HTMLOptionElement.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/HTMLOptionElement.hs
@@ -0,0 +1,144 @@
+
+module Data.DOM.HTMLOptionElement
+       (get'form, getm'form, set'defaultSelected, get'defaultSelected,
+        getm'defaultSelected, get'text, getm'text, get'index, getm'index,
+        set'disabled, get'disabled, getm'disabled, set'label, get'label,
+        getm'label, set'selected, get'selected, getm'selected, set'value,
+        get'value, getm'value)
+       where
+import Data.DOM.Html2
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+get'form ::
+         (Monad mn, CHTMLOptionElement this, CHTMLFormElement zz) =>
+           Expression this -> mn (Expression zz)
+get'form thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "form")
+       return r
+ 
+getm'form ::
+          (Monad mn, CHTMLOptionElement this) =>
+            Expression this -> mn (Expression THTMLFormElement)
+getm'form = get'form
+ 
+set'defaultSelected ::
+                    (Monad mn, CHTMLOptionElement zz) =>
+                      Expression Bool -> Expression zz -> mn (Expression zz)
+set'defaultSelected = setjsProperty "defaultSelected"
+ 
+get'defaultSelected ::
+                    (Monad mn, CHTMLOptionElement this) =>
+                      Expression this -> mn (Expression Bool)
+get'defaultSelected thisp
+  = do let et = undefined :: Bool
+       let r = DotRef et (thisp /\ et) (Id et "defaultSelected")
+       return r
+ 
+getm'defaultSelected ::
+                     (Monad mn, CHTMLOptionElement this) =>
+                       Expression this -> mn (Expression Bool)
+getm'defaultSelected = get'defaultSelected
+ 
+get'text ::
+         (Monad mn, CHTMLOptionElement this) =>
+           Expression this -> mn (Expression String)
+get'text thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "text")
+       return r
+ 
+getm'text ::
+          (Monad mn, CHTMLOptionElement this) =>
+            Expression this -> mn (Expression String)
+getm'text = get'text
+ 
+get'index ::
+          (Monad mn, CHTMLOptionElement this) =>
+            Expression this -> mn (Expression Double)
+get'index thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "index")
+       return r
+ 
+getm'index ::
+           (Monad mn, CHTMLOptionElement this) =>
+             Expression this -> mn (Expression Double)
+getm'index = get'index
+ 
+set'disabled ::
+             (Monad mn, CHTMLOptionElement zz) =>
+               Expression Bool -> Expression zz -> mn (Expression zz)
+set'disabled = setjsProperty "disabled"
+ 
+get'disabled ::
+             (Monad mn, CHTMLOptionElement this) =>
+               Expression this -> mn (Expression Bool)
+get'disabled thisp
+  = do let et = undefined :: Bool
+       let r = DotRef et (thisp /\ et) (Id et "disabled")
+       return r
+ 
+getm'disabled ::
+              (Monad mn, CHTMLOptionElement this) =>
+                Expression this -> mn (Expression Bool)
+getm'disabled = get'disabled
+ 
+set'label ::
+          (Monad mn, CHTMLOptionElement zz) =>
+            Expression String -> Expression zz -> mn (Expression zz)
+set'label = setjsProperty "label"
+ 
+get'label ::
+          (Monad mn, CHTMLOptionElement this) =>
+            Expression this -> mn (Expression String)
+get'label thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "label")
+       return r
+ 
+getm'label ::
+           (Monad mn, CHTMLOptionElement this) =>
+             Expression this -> mn (Expression String)
+getm'label = get'label
+ 
+set'selected ::
+             (Monad mn, CHTMLOptionElement zz) =>
+               Expression Bool -> Expression zz -> mn (Expression zz)
+set'selected = setjsProperty "selected"
+ 
+get'selected ::
+             (Monad mn, CHTMLOptionElement this) =>
+               Expression this -> mn (Expression Bool)
+get'selected thisp
+  = do let et = undefined :: Bool
+       let r = DotRef et (thisp /\ et) (Id et "selected")
+       return r
+ 
+getm'selected ::
+              (Monad mn, CHTMLOptionElement this) =>
+                Expression this -> mn (Expression Bool)
+getm'selected = get'selected
+ 
+set'value ::
+          (Monad mn, CHTMLOptionElement zz) =>
+            Expression String -> Expression zz -> mn (Expression zz)
+set'value = setjsProperty "value"
+ 
+get'value ::
+          (Monad mn, CHTMLOptionElement this) =>
+            Expression this -> mn (Expression String)
+get'value thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "value")
+       return r
+ 
+getm'value ::
+           (Monad mn, CHTMLOptionElement this) =>
+             Expression this -> mn (Expression String)
+getm'value = get'value
+
diff --git a/Data/DOM/HTMLOptionsCollection.hs b/Data/DOM/HTMLOptionsCollection.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/HTMLOptionsCollection.hs
@@ -0,0 +1,44 @@
+
+module Data.DOM.HTMLOptionsCollection
+       (item, namedItem, set'length, get'length, getm'length) where
+import Data.DOM.Html2
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+item ::
+     (Monad mn, CHTMLOptionsCollection this, CNode zz) =>
+       Expression Double -> Expression this -> mn (Expression zz)
+item a thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "item")
+       return (CallExpr et r [a /\ et])
+ 
+namedItem ::
+          (Monad mn, CHTMLOptionsCollection this, CNode zz) =>
+            Expression String -> Expression this -> mn (Expression zz)
+namedItem a thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "namedItem")
+       return (CallExpr et r [a /\ et])
+ 
+set'length ::
+           (Monad mn, CHTMLOptionsCollection zz) =>
+             Expression Double -> Expression zz -> mn (Expression zz)
+set'length = setjsProperty "length"
+ 
+get'length ::
+           (Monad mn, CHTMLOptionsCollection this) =>
+             Expression this -> mn (Expression Double)
+get'length thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "length")
+       return r
+ 
+getm'length ::
+            (Monad mn, CHTMLOptionsCollection this) =>
+              Expression this -> mn (Expression Double)
+getm'length = get'length
+
diff --git a/Data/DOM/HTMLParagraphElement.hs b/Data/DOM/HTMLParagraphElement.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/HTMLParagraphElement.hs
@@ -0,0 +1,33 @@
+
+module Data.DOM.HTMLParagraphElement
+       (set'align, get'align, getm'align, mkP) where
+import Data.DOM.Html2
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+set'align ::
+          (Monad mn, CHTMLParagraphElement zz) =>
+            Expression String -> Expression zz -> mn (Expression zz)
+set'align = setjsProperty "align"
+ 
+get'align ::
+          (Monad mn, CHTMLParagraphElement this) =>
+            Expression this -> mn (Expression String)
+get'align thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "align")
+       return r
+ 
+getm'align ::
+           (Monad mn, CHTMLParagraphElement this) =>
+             Expression this -> mn (Expression String)
+getm'align = get'align
+ 
+mkP ::
+    (Monad mn, CHTMLDocument a) =>
+      Expression a -> mn (Expression THTMLParagraphElement)
+mkP = createElement (StringLit "p" "p")
+
diff --git a/Data/DOM/HTMLParamElement.hs b/Data/DOM/HTMLParamElement.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/HTMLParamElement.hs
@@ -0,0 +1,90 @@
+
+module Data.DOM.HTMLParamElement
+       (set'name, get'name, getm'name, set'type, get'type, getm'type,
+        set'value, get'value, getm'value, set'valueType, get'valueType,
+        getm'valueType, mkParam)
+       where
+import Data.DOM.Html2
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+set'name ::
+         (Monad mn, CHTMLParamElement zz) =>
+           Expression String -> Expression zz -> mn (Expression zz)
+set'name = setjsProperty "name"
+ 
+get'name ::
+         (Monad mn, CHTMLParamElement this) =>
+           Expression this -> mn (Expression String)
+get'name thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "name")
+       return r
+ 
+getm'name ::
+          (Monad mn, CHTMLParamElement this) =>
+            Expression this -> mn (Expression String)
+getm'name = get'name
+ 
+set'type ::
+         (Monad mn, CHTMLParamElement zz) =>
+           Expression String -> Expression zz -> mn (Expression zz)
+set'type = setjsProperty "type"
+ 
+get'type ::
+         (Monad mn, CHTMLParamElement this) =>
+           Expression this -> mn (Expression String)
+get'type thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "type")
+       return r
+ 
+getm'type ::
+          (Monad mn, CHTMLParamElement this) =>
+            Expression this -> mn (Expression String)
+getm'type = get'type
+ 
+set'value ::
+          (Monad mn, CHTMLParamElement zz) =>
+            Expression String -> Expression zz -> mn (Expression zz)
+set'value = setjsProperty "value"
+ 
+get'value ::
+          (Monad mn, CHTMLParamElement this) =>
+            Expression this -> mn (Expression String)
+get'value thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "value")
+       return r
+ 
+getm'value ::
+           (Monad mn, CHTMLParamElement this) =>
+             Expression this -> mn (Expression String)
+getm'value = get'value
+ 
+set'valueType ::
+              (Monad mn, CHTMLParamElement zz) =>
+                Expression String -> Expression zz -> mn (Expression zz)
+set'valueType = setjsProperty "valueType"
+ 
+get'valueType ::
+              (Monad mn, CHTMLParamElement this) =>
+                Expression this -> mn (Expression String)
+get'valueType thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "valueType")
+       return r
+ 
+getm'valueType ::
+               (Monad mn, CHTMLParamElement this) =>
+                 Expression this -> mn (Expression String)
+getm'valueType = get'valueType
+ 
+mkParam ::
+        (Monad mn, CHTMLDocument a) =>
+          Expression a -> mn (Expression THTMLParamElement)
+mkParam = createElement (StringLit "param" "param")
+
diff --git a/Data/DOM/HTMLPreElement.hs b/Data/DOM/HTMLPreElement.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/HTMLPreElement.hs
@@ -0,0 +1,33 @@
+
+module Data.DOM.HTMLPreElement
+       (set'width, get'width, getm'width, mkPre) where
+import Data.DOM.Html2
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+set'width ::
+          (Monad mn, CHTMLPreElement zz) =>
+            Expression Double -> Expression zz -> mn (Expression zz)
+set'width = setjsProperty "width"
+ 
+get'width ::
+          (Monad mn, CHTMLPreElement this) =>
+            Expression this -> mn (Expression Double)
+get'width thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "width")
+       return r
+ 
+getm'width ::
+           (Monad mn, CHTMLPreElement this) =>
+             Expression this -> mn (Expression Double)
+getm'width = get'width
+ 
+mkPre ::
+      (Monad mn, CHTMLDocument a) =>
+        Expression a -> mn (Expression THTMLPreElement)
+mkPre = createElement (StringLit "pre" "pre")
+
diff --git a/Data/DOM/HTMLQuoteElement.hs b/Data/DOM/HTMLQuoteElement.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/HTMLQuoteElement.hs
@@ -0,0 +1,28 @@
+
+module Data.DOM.HTMLQuoteElement (set'cite, get'cite, getm'cite)
+       where
+import Data.DOM.Html2
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+set'cite ::
+         (Monad mn, CHTMLQuoteElement zz) =>
+           Expression String -> Expression zz -> mn (Expression zz)
+set'cite = setjsProperty "cite"
+ 
+get'cite ::
+         (Monad mn, CHTMLQuoteElement this) =>
+           Expression this -> mn (Expression String)
+get'cite thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "cite")
+       return r
+ 
+getm'cite ::
+          (Monad mn, CHTMLQuoteElement this) =>
+            Expression this -> mn (Expression String)
+getm'cite = get'cite
+
diff --git a/Data/DOM/HTMLScriptElement.hs b/Data/DOM/HTMLScriptElement.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/HTMLScriptElement.hs
@@ -0,0 +1,146 @@
+
+module Data.DOM.HTMLScriptElement
+       (set'text, get'text, getm'text, set'htmlFor, get'htmlFor,
+        getm'htmlFor, set'event, get'event, getm'event, set'charset,
+        get'charset, getm'charset, set'defer, get'defer, getm'defer,
+        set'src, get'src, getm'src, set'type, get'type, getm'type,
+        mkScript)
+       where
+import Data.DOM.Html2
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+set'text ::
+         (Monad mn, CHTMLScriptElement zz) =>
+           Expression String -> Expression zz -> mn (Expression zz)
+set'text = setjsProperty "text"
+ 
+get'text ::
+         (Monad mn, CHTMLScriptElement this) =>
+           Expression this -> mn (Expression String)
+get'text thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "text")
+       return r
+ 
+getm'text ::
+          (Monad mn, CHTMLScriptElement this) =>
+            Expression this -> mn (Expression String)
+getm'text = get'text
+ 
+set'htmlFor ::
+            (Monad mn, CHTMLScriptElement zz) =>
+              Expression String -> Expression zz -> mn (Expression zz)
+set'htmlFor = setjsProperty "htmlFor"
+ 
+get'htmlFor ::
+            (Monad mn, CHTMLScriptElement this) =>
+              Expression this -> mn (Expression String)
+get'htmlFor thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "htmlFor")
+       return r
+ 
+getm'htmlFor ::
+             (Monad mn, CHTMLScriptElement this) =>
+               Expression this -> mn (Expression String)
+getm'htmlFor = get'htmlFor
+ 
+set'event ::
+          (Monad mn, CHTMLScriptElement zz) =>
+            Expression String -> Expression zz -> mn (Expression zz)
+set'event = setjsProperty "event"
+ 
+get'event ::
+          (Monad mn, CHTMLScriptElement this) =>
+            Expression this -> mn (Expression String)
+get'event thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "event")
+       return r
+ 
+getm'event ::
+           (Monad mn, CHTMLScriptElement this) =>
+             Expression this -> mn (Expression String)
+getm'event = get'event
+ 
+set'charset ::
+            (Monad mn, CHTMLScriptElement zz) =>
+              Expression String -> Expression zz -> mn (Expression zz)
+set'charset = setjsProperty "charset"
+ 
+get'charset ::
+            (Monad mn, CHTMLScriptElement this) =>
+              Expression this -> mn (Expression String)
+get'charset thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "charset")
+       return r
+ 
+getm'charset ::
+             (Monad mn, CHTMLScriptElement this) =>
+               Expression this -> mn (Expression String)
+getm'charset = get'charset
+ 
+set'defer ::
+          (Monad mn, CHTMLScriptElement zz) =>
+            Expression Bool -> Expression zz -> mn (Expression zz)
+set'defer = setjsProperty "defer"
+ 
+get'defer ::
+          (Monad mn, CHTMLScriptElement this) =>
+            Expression this -> mn (Expression Bool)
+get'defer thisp
+  = do let et = undefined :: Bool
+       let r = DotRef et (thisp /\ et) (Id et "defer")
+       return r
+ 
+getm'defer ::
+           (Monad mn, CHTMLScriptElement this) =>
+             Expression this -> mn (Expression Bool)
+getm'defer = get'defer
+ 
+set'src ::
+        (Monad mn, CHTMLScriptElement zz) =>
+          Expression String -> Expression zz -> mn (Expression zz)
+set'src = setjsProperty "src"
+ 
+get'src ::
+        (Monad mn, CHTMLScriptElement this) =>
+          Expression this -> mn (Expression String)
+get'src thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "src")
+       return r
+ 
+getm'src ::
+         (Monad mn, CHTMLScriptElement this) =>
+           Expression this -> mn (Expression String)
+getm'src = get'src
+ 
+set'type ::
+         (Monad mn, CHTMLScriptElement zz) =>
+           Expression String -> Expression zz -> mn (Expression zz)
+set'type = setjsProperty "type"
+ 
+get'type ::
+         (Monad mn, CHTMLScriptElement this) =>
+           Expression this -> mn (Expression String)
+get'type thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "type")
+       return r
+ 
+getm'type ::
+          (Monad mn, CHTMLScriptElement this) =>
+            Expression this -> mn (Expression String)
+getm'type = get'type
+ 
+mkScript ::
+         (Monad mn, CHTMLDocument a) =>
+           Expression a -> mn (Expression THTMLScriptElement)
+mkScript = createElement (StringLit "script" "script")
+
diff --git a/Data/DOM/HTMLSelectElement.hs b/Data/DOM/HTMLSelectElement.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/HTMLSelectElement.hs
@@ -0,0 +1,234 @@
+
+module Data.DOM.HTMLSelectElement
+       (add, remove, blur, focus, get'type, getm'type, set'selectedIndex,
+        get'selectedIndex, getm'selectedIndex, set'value, get'value,
+        getm'value, set'length, get'length, getm'length, get'form,
+        getm'form, get'options, getm'options, set'disabled, get'disabled,
+        getm'disabled, set'multiple, get'multiple, getm'multiple, set'name,
+        get'name, getm'name, set'size, get'size, getm'size, set'tabIndex,
+        get'tabIndex, getm'tabIndex)
+       where
+import Data.DOM.Html2
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+add ::
+    (Monad mn, CHTMLSelectElement this, CHTMLElement element,
+     CHTMLElement before) =>
+      Expression element ->
+        Expression before -> Expression this -> mn (Expression ())
+add a b thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "add")
+       return (CallExpr et r [a /\ et, b /\ et])
+ 
+remove ::
+       (Monad mn, CHTMLSelectElement this) =>
+         Expression Double -> Expression this -> mn (Expression ())
+remove a thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "remove")
+       return (CallExpr et r [a /\ et])
+ 
+blur ::
+     (Monad mn, CHTMLSelectElement this) =>
+       Expression this -> mn (Expression ())
+blur thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "blur")
+       return (CallExpr et r [])
+ 
+focus ::
+      (Monad mn, CHTMLSelectElement this) =>
+        Expression this -> mn (Expression ())
+focus thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "focus")
+       return (CallExpr et r [])
+ 
+get'type ::
+         (Monad mn, CHTMLSelectElement this) =>
+           Expression this -> mn (Expression String)
+get'type thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "type")
+       return r
+ 
+getm'type ::
+          (Monad mn, CHTMLSelectElement this) =>
+            Expression this -> mn (Expression String)
+getm'type = get'type
+ 
+set'selectedIndex ::
+                  (Monad mn, CHTMLSelectElement zz) =>
+                    Expression Double -> Expression zz -> mn (Expression zz)
+set'selectedIndex = setjsProperty "selectedIndex"
+ 
+get'selectedIndex ::
+                  (Monad mn, CHTMLSelectElement this) =>
+                    Expression this -> mn (Expression Double)
+get'selectedIndex thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "selectedIndex")
+       return r
+ 
+getm'selectedIndex ::
+                   (Monad mn, CHTMLSelectElement this) =>
+                     Expression this -> mn (Expression Double)
+getm'selectedIndex = get'selectedIndex
+ 
+set'value ::
+          (Monad mn, CHTMLSelectElement zz) =>
+            Expression String -> Expression zz -> mn (Expression zz)
+set'value = setjsProperty "value"
+ 
+get'value ::
+          (Monad mn, CHTMLSelectElement this) =>
+            Expression this -> mn (Expression String)
+get'value thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "value")
+       return r
+ 
+getm'value ::
+           (Monad mn, CHTMLSelectElement this) =>
+             Expression this -> mn (Expression String)
+getm'value = get'value
+ 
+set'length ::
+           (Monad mn, CHTMLSelectElement zz) =>
+             Expression Double -> Expression zz -> mn (Expression zz)
+set'length = setjsProperty "length"
+ 
+get'length ::
+           (Monad mn, CHTMLSelectElement this) =>
+             Expression this -> mn (Expression Double)
+get'length thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "length")
+       return r
+ 
+getm'length ::
+            (Monad mn, CHTMLSelectElement this) =>
+              Expression this -> mn (Expression Double)
+getm'length = get'length
+ 
+get'form ::
+         (Monad mn, CHTMLSelectElement this, CHTMLFormElement zz) =>
+           Expression this -> mn (Expression zz)
+get'form thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "form")
+       return r
+ 
+getm'form ::
+          (Monad mn, CHTMLSelectElement this) =>
+            Expression this -> mn (Expression THTMLFormElement)
+getm'form = get'form
+ 
+get'options ::
+            (Monad mn, CHTMLSelectElement this, CHTMLOptionsCollection zz) =>
+              Expression this -> mn (Expression zz)
+get'options thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "options")
+       return r
+ 
+getm'options ::
+             (Monad mn, CHTMLSelectElement this) =>
+               Expression this -> mn (Expression THTMLOptionsCollection)
+getm'options = get'options
+ 
+set'disabled ::
+             (Monad mn, CHTMLSelectElement zz) =>
+               Expression Bool -> Expression zz -> mn (Expression zz)
+set'disabled = setjsProperty "disabled"
+ 
+get'disabled ::
+             (Monad mn, CHTMLSelectElement this) =>
+               Expression this -> mn (Expression Bool)
+get'disabled thisp
+  = do let et = undefined :: Bool
+       let r = DotRef et (thisp /\ et) (Id et "disabled")
+       return r
+ 
+getm'disabled ::
+              (Monad mn, CHTMLSelectElement this) =>
+                Expression this -> mn (Expression Bool)
+getm'disabled = get'disabled
+ 
+set'multiple ::
+             (Monad mn, CHTMLSelectElement zz) =>
+               Expression Bool -> Expression zz -> mn (Expression zz)
+set'multiple = setjsProperty "multiple"
+ 
+get'multiple ::
+             (Monad mn, CHTMLSelectElement this) =>
+               Expression this -> mn (Expression Bool)
+get'multiple thisp
+  = do let et = undefined :: Bool
+       let r = DotRef et (thisp /\ et) (Id et "multiple")
+       return r
+ 
+getm'multiple ::
+              (Monad mn, CHTMLSelectElement this) =>
+                Expression this -> mn (Expression Bool)
+getm'multiple = get'multiple
+ 
+set'name ::
+         (Monad mn, CHTMLSelectElement zz) =>
+           Expression String -> Expression zz -> mn (Expression zz)
+set'name = setjsProperty "name"
+ 
+get'name ::
+         (Monad mn, CHTMLSelectElement this) =>
+           Expression this -> mn (Expression String)
+get'name thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "name")
+       return r
+ 
+getm'name ::
+          (Monad mn, CHTMLSelectElement this) =>
+            Expression this -> mn (Expression String)
+getm'name = get'name
+ 
+set'size ::
+         (Monad mn, CHTMLSelectElement zz) =>
+           Expression Double -> Expression zz -> mn (Expression zz)
+set'size = setjsProperty "size"
+ 
+get'size ::
+         (Monad mn, CHTMLSelectElement this) =>
+           Expression this -> mn (Expression Double)
+get'size thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "size")
+       return r
+ 
+getm'size ::
+          (Monad mn, CHTMLSelectElement this) =>
+            Expression this -> mn (Expression Double)
+getm'size = get'size
+ 
+set'tabIndex ::
+             (Monad mn, CHTMLSelectElement zz) =>
+               Expression Double -> Expression zz -> mn (Expression zz)
+set'tabIndex = setjsProperty "tabIndex"
+ 
+get'tabIndex ::
+             (Monad mn, CHTMLSelectElement this) =>
+               Expression this -> mn (Expression Double)
+get'tabIndex thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "tabIndex")
+       return r
+ 
+getm'tabIndex ::
+              (Monad mn, CHTMLSelectElement this) =>
+                Expression this -> mn (Expression Double)
+getm'tabIndex = get'tabIndex
+
diff --git a/Data/DOM/HTMLStyleElement.hs b/Data/DOM/HTMLStyleElement.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/HTMLStyleElement.hs
@@ -0,0 +1,66 @@
+
+module Data.DOM.HTMLStyleElement
+       (set'disabled, get'disabled, getm'disabled, set'media, get'media,
+        getm'media, set'type, get'type, getm'type)
+       where
+import Data.DOM.Html2
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+set'disabled ::
+             (Monad mn, CHTMLStyleElement zz) =>
+               Expression Bool -> Expression zz -> mn (Expression zz)
+set'disabled = setjsProperty "disabled"
+ 
+get'disabled ::
+             (Monad mn, CHTMLStyleElement this) =>
+               Expression this -> mn (Expression Bool)
+get'disabled thisp
+  = do let et = undefined :: Bool
+       let r = DotRef et (thisp /\ et) (Id et "disabled")
+       return r
+ 
+getm'disabled ::
+              (Monad mn, CHTMLStyleElement this) =>
+                Expression this -> mn (Expression Bool)
+getm'disabled = get'disabled
+ 
+set'media ::
+          (Monad mn, CHTMLStyleElement zz) =>
+            Expression String -> Expression zz -> mn (Expression zz)
+set'media = setjsProperty "media"
+ 
+get'media ::
+          (Monad mn, CHTMLStyleElement this) =>
+            Expression this -> mn (Expression String)
+get'media thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "media")
+       return r
+ 
+getm'media ::
+           (Monad mn, CHTMLStyleElement this) =>
+             Expression this -> mn (Expression String)
+getm'media = get'media
+ 
+set'type ::
+         (Monad mn, CHTMLStyleElement zz) =>
+           Expression String -> Expression zz -> mn (Expression zz)
+set'type = setjsProperty "type"
+ 
+get'type ::
+         (Monad mn, CHTMLStyleElement this) =>
+           Expression this -> mn (Expression String)
+get'type thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "type")
+       return r
+ 
+getm'type ::
+          (Monad mn, CHTMLStyleElement this) =>
+            Expression this -> mn (Expression String)
+getm'type = get'type
+
diff --git a/Data/DOM/HTMLTableCaptionElement.hs b/Data/DOM/HTMLTableCaptionElement.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/HTMLTableCaptionElement.hs
@@ -0,0 +1,28 @@
+
+module Data.DOM.HTMLTableCaptionElement
+       (set'align, get'align, getm'align) where
+import Data.DOM.Html2
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+set'align ::
+          (Monad mn, CHTMLTableCaptionElement zz) =>
+            Expression String -> Expression zz -> mn (Expression zz)
+set'align = setjsProperty "align"
+ 
+get'align ::
+          (Monad mn, CHTMLTableCaptionElement this) =>
+            Expression this -> mn (Expression String)
+get'align thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "align")
+       return r
+ 
+getm'align ::
+           (Monad mn, CHTMLTableCaptionElement this) =>
+             Expression this -> mn (Expression String)
+getm'align = get'align
+
diff --git a/Data/DOM/HTMLTableCellElement.hs b/Data/DOM/HTMLTableCellElement.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/HTMLTableCellElement.hs
@@ -0,0 +1,289 @@
+
+module Data.DOM.HTMLTableCellElement
+       (get'cellIndex, getm'cellIndex, set'abbr, get'abbr, getm'abbr,
+        set'align, get'align, getm'align, set'axis, get'axis, getm'axis,
+        set'bgColor, get'bgColor, getm'bgColor, set'ch, get'ch, getm'ch,
+        set'chOff, get'chOff, getm'chOff, set'colSpan, get'colSpan,
+        getm'colSpan, set'headers, get'headers, getm'headers, set'height,
+        get'height, getm'height, set'noWrap, get'noWrap, getm'noWrap,
+        set'rowSpan, get'rowSpan, getm'rowSpan, set'scope, get'scope,
+        getm'scope, set'vAlign, get'vAlign, getm'vAlign, set'width,
+        get'width, getm'width, mkTd)
+       where
+import Data.DOM.Html2
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+get'cellIndex ::
+              (Monad mn, CHTMLTableCellElement this) =>
+                Expression this -> mn (Expression Double)
+get'cellIndex thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "cellIndex")
+       return r
+ 
+getm'cellIndex ::
+               (Monad mn, CHTMLTableCellElement this) =>
+                 Expression this -> mn (Expression Double)
+getm'cellIndex = get'cellIndex
+ 
+set'abbr ::
+         (Monad mn, CHTMLTableCellElement zz) =>
+           Expression String -> Expression zz -> mn (Expression zz)
+set'abbr = setjsProperty "abbr"
+ 
+get'abbr ::
+         (Monad mn, CHTMLTableCellElement this) =>
+           Expression this -> mn (Expression String)
+get'abbr thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "abbr")
+       return r
+ 
+getm'abbr ::
+          (Monad mn, CHTMLTableCellElement this) =>
+            Expression this -> mn (Expression String)
+getm'abbr = get'abbr
+ 
+set'align ::
+          (Monad mn, CHTMLTableCellElement zz) =>
+            Expression String -> Expression zz -> mn (Expression zz)
+set'align = setjsProperty "align"
+ 
+get'align ::
+          (Monad mn, CHTMLTableCellElement this) =>
+            Expression this -> mn (Expression String)
+get'align thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "align")
+       return r
+ 
+getm'align ::
+           (Monad mn, CHTMLTableCellElement this) =>
+             Expression this -> mn (Expression String)
+getm'align = get'align
+ 
+set'axis ::
+         (Monad mn, CHTMLTableCellElement zz) =>
+           Expression String -> Expression zz -> mn (Expression zz)
+set'axis = setjsProperty "axis"
+ 
+get'axis ::
+         (Monad mn, CHTMLTableCellElement this) =>
+           Expression this -> mn (Expression String)
+get'axis thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "axis")
+       return r
+ 
+getm'axis ::
+          (Monad mn, CHTMLTableCellElement this) =>
+            Expression this -> mn (Expression String)
+getm'axis = get'axis
+ 
+set'bgColor ::
+            (Monad mn, CHTMLTableCellElement zz) =>
+              Expression String -> Expression zz -> mn (Expression zz)
+set'bgColor = setjsProperty "bgColor"
+ 
+get'bgColor ::
+            (Monad mn, CHTMLTableCellElement this) =>
+              Expression this -> mn (Expression String)
+get'bgColor thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "bgColor")
+       return r
+ 
+getm'bgColor ::
+             (Monad mn, CHTMLTableCellElement this) =>
+               Expression this -> mn (Expression String)
+getm'bgColor = get'bgColor
+ 
+set'ch ::
+       (Monad mn, CHTMLTableCellElement zz) =>
+         Expression String -> Expression zz -> mn (Expression zz)
+set'ch = setjsProperty "ch"
+ 
+get'ch ::
+       (Monad mn, CHTMLTableCellElement this) =>
+         Expression this -> mn (Expression String)
+get'ch thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "ch")
+       return r
+ 
+getm'ch ::
+        (Monad mn, CHTMLTableCellElement this) =>
+          Expression this -> mn (Expression String)
+getm'ch = get'ch
+ 
+set'chOff ::
+          (Monad mn, CHTMLTableCellElement zz) =>
+            Expression String -> Expression zz -> mn (Expression zz)
+set'chOff = setjsProperty "chOff"
+ 
+get'chOff ::
+          (Monad mn, CHTMLTableCellElement this) =>
+            Expression this -> mn (Expression String)
+get'chOff thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "chOff")
+       return r
+ 
+getm'chOff ::
+           (Monad mn, CHTMLTableCellElement this) =>
+             Expression this -> mn (Expression String)
+getm'chOff = get'chOff
+ 
+set'colSpan ::
+            (Monad mn, CHTMLTableCellElement zz) =>
+              Expression Double -> Expression zz -> mn (Expression zz)
+set'colSpan = setjsProperty "colSpan"
+ 
+get'colSpan ::
+            (Monad mn, CHTMLTableCellElement this) =>
+              Expression this -> mn (Expression Double)
+get'colSpan thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "colSpan")
+       return r
+ 
+getm'colSpan ::
+             (Monad mn, CHTMLTableCellElement this) =>
+               Expression this -> mn (Expression Double)
+getm'colSpan = get'colSpan
+ 
+set'headers ::
+            (Monad mn, CHTMLTableCellElement zz) =>
+              Expression String -> Expression zz -> mn (Expression zz)
+set'headers = setjsProperty "headers"
+ 
+get'headers ::
+            (Monad mn, CHTMLTableCellElement this) =>
+              Expression this -> mn (Expression String)
+get'headers thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "headers")
+       return r
+ 
+getm'headers ::
+             (Monad mn, CHTMLTableCellElement this) =>
+               Expression this -> mn (Expression String)
+getm'headers = get'headers
+ 
+set'height ::
+           (Monad mn, CHTMLTableCellElement zz) =>
+             Expression String -> Expression zz -> mn (Expression zz)
+set'height = setjsProperty "height"
+ 
+get'height ::
+           (Monad mn, CHTMLTableCellElement this) =>
+             Expression this -> mn (Expression String)
+get'height thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "height")
+       return r
+ 
+getm'height ::
+            (Monad mn, CHTMLTableCellElement this) =>
+              Expression this -> mn (Expression String)
+getm'height = get'height
+ 
+set'noWrap ::
+           (Monad mn, CHTMLTableCellElement zz) =>
+             Expression Bool -> Expression zz -> mn (Expression zz)
+set'noWrap = setjsProperty "noWrap"
+ 
+get'noWrap ::
+           (Monad mn, CHTMLTableCellElement this) =>
+             Expression this -> mn (Expression Bool)
+get'noWrap thisp
+  = do let et = undefined :: Bool
+       let r = DotRef et (thisp /\ et) (Id et "noWrap")
+       return r
+ 
+getm'noWrap ::
+            (Monad mn, CHTMLTableCellElement this) =>
+              Expression this -> mn (Expression Bool)
+getm'noWrap = get'noWrap
+ 
+set'rowSpan ::
+            (Monad mn, CHTMLTableCellElement zz) =>
+              Expression Double -> Expression zz -> mn (Expression zz)
+set'rowSpan = setjsProperty "rowSpan"
+ 
+get'rowSpan ::
+            (Monad mn, CHTMLTableCellElement this) =>
+              Expression this -> mn (Expression Double)
+get'rowSpan thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "rowSpan")
+       return r
+ 
+getm'rowSpan ::
+             (Monad mn, CHTMLTableCellElement this) =>
+               Expression this -> mn (Expression Double)
+getm'rowSpan = get'rowSpan
+ 
+set'scope ::
+          (Monad mn, CHTMLTableCellElement zz) =>
+            Expression String -> Expression zz -> mn (Expression zz)
+set'scope = setjsProperty "scope"
+ 
+get'scope ::
+          (Monad mn, CHTMLTableCellElement this) =>
+            Expression this -> mn (Expression String)
+get'scope thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "scope")
+       return r
+ 
+getm'scope ::
+           (Monad mn, CHTMLTableCellElement this) =>
+             Expression this -> mn (Expression String)
+getm'scope = get'scope
+ 
+set'vAlign ::
+           (Monad mn, CHTMLTableCellElement zz) =>
+             Expression String -> Expression zz -> mn (Expression zz)
+set'vAlign = setjsProperty "vAlign"
+ 
+get'vAlign ::
+           (Monad mn, CHTMLTableCellElement this) =>
+             Expression this -> mn (Expression String)
+get'vAlign thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "vAlign")
+       return r
+ 
+getm'vAlign ::
+            (Monad mn, CHTMLTableCellElement this) =>
+              Expression this -> mn (Expression String)
+getm'vAlign = get'vAlign
+ 
+set'width ::
+          (Monad mn, CHTMLTableCellElement zz) =>
+            Expression String -> Expression zz -> mn (Expression zz)
+set'width = setjsProperty "width"
+ 
+get'width ::
+          (Monad mn, CHTMLTableCellElement this) =>
+            Expression this -> mn (Expression String)
+get'width thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "width")
+       return r
+ 
+getm'width ::
+           (Monad mn, CHTMLTableCellElement this) =>
+             Expression this -> mn (Expression String)
+getm'width = get'width
+ 
+mkTd ::
+     (Monad mn, CHTMLDocument a) =>
+       Expression a -> mn (Expression THTMLTableCellElement)
+mkTd = createElement (StringLit "td" "td")
+
diff --git a/Data/DOM/HTMLTableColElement.hs b/Data/DOM/HTMLTableColElement.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/HTMLTableColElement.hs
@@ -0,0 +1,127 @@
+
+module Data.DOM.HTMLTableColElement
+       (set'align, get'align, getm'align, set'ch, get'ch, getm'ch,
+        set'chOff, get'chOff, getm'chOff, set'span, get'span, getm'span,
+        set'vAlign, get'vAlign, getm'vAlign, set'width, get'width,
+        getm'width, mkCol)
+       where
+import Data.DOM.Html2
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+set'align ::
+          (Monad mn, CHTMLTableColElement zz) =>
+            Expression String -> Expression zz -> mn (Expression zz)
+set'align = setjsProperty "align"
+ 
+get'align ::
+          (Monad mn, CHTMLTableColElement this) =>
+            Expression this -> mn (Expression String)
+get'align thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "align")
+       return r
+ 
+getm'align ::
+           (Monad mn, CHTMLTableColElement this) =>
+             Expression this -> mn (Expression String)
+getm'align = get'align
+ 
+set'ch ::
+       (Monad mn, CHTMLTableColElement zz) =>
+         Expression String -> Expression zz -> mn (Expression zz)
+set'ch = setjsProperty "ch"
+ 
+get'ch ::
+       (Monad mn, CHTMLTableColElement this) =>
+         Expression this -> mn (Expression String)
+get'ch thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "ch")
+       return r
+ 
+getm'ch ::
+        (Monad mn, CHTMLTableColElement this) =>
+          Expression this -> mn (Expression String)
+getm'ch = get'ch
+ 
+set'chOff ::
+          (Monad mn, CHTMLTableColElement zz) =>
+            Expression String -> Expression zz -> mn (Expression zz)
+set'chOff = setjsProperty "chOff"
+ 
+get'chOff ::
+          (Monad mn, CHTMLTableColElement this) =>
+            Expression this -> mn (Expression String)
+get'chOff thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "chOff")
+       return r
+ 
+getm'chOff ::
+           (Monad mn, CHTMLTableColElement this) =>
+             Expression this -> mn (Expression String)
+getm'chOff = get'chOff
+ 
+set'span ::
+         (Monad mn, CHTMLTableColElement zz) =>
+           Expression Double -> Expression zz -> mn (Expression zz)
+set'span = setjsProperty "span"
+ 
+get'span ::
+         (Monad mn, CHTMLTableColElement this) =>
+           Expression this -> mn (Expression Double)
+get'span thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "span")
+       return r
+ 
+getm'span ::
+          (Monad mn, CHTMLTableColElement this) =>
+            Expression this -> mn (Expression Double)
+getm'span = get'span
+ 
+set'vAlign ::
+           (Monad mn, CHTMLTableColElement zz) =>
+             Expression String -> Expression zz -> mn (Expression zz)
+set'vAlign = setjsProperty "vAlign"
+ 
+get'vAlign ::
+           (Monad mn, CHTMLTableColElement this) =>
+             Expression this -> mn (Expression String)
+get'vAlign thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "vAlign")
+       return r
+ 
+getm'vAlign ::
+            (Monad mn, CHTMLTableColElement this) =>
+              Expression this -> mn (Expression String)
+getm'vAlign = get'vAlign
+ 
+set'width ::
+          (Monad mn, CHTMLTableColElement zz) =>
+            Expression String -> Expression zz -> mn (Expression zz)
+set'width = setjsProperty "width"
+ 
+get'width ::
+          (Monad mn, CHTMLTableColElement this) =>
+            Expression this -> mn (Expression String)
+get'width thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "width")
+       return r
+ 
+getm'width ::
+           (Monad mn, CHTMLTableColElement this) =>
+             Expression this -> mn (Expression String)
+getm'width = get'width
+ 
+mkCol ::
+      (Monad mn, CHTMLDocument a) =>
+        Expression a -> mn (Expression THTMLTableColElement)
+mkCol = createElement (StringLit "col" "col")
+
diff --git a/Data/DOM/HTMLTableElement.hs b/Data/DOM/HTMLTableElement.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/HTMLTableElement.hs
@@ -0,0 +1,332 @@
+
+module Data.DOM.HTMLTableElement
+       (createTHead, deleteTHead, createTFoot, deleteTFoot, createCaption,
+        deleteCaption, insertRow, deleteRow, set'caption, get'caption,
+        getm'caption, set'tHead, get'tHead, getm'tHead, set'tFoot,
+        get'tFoot, getm'tFoot, get'rows, getm'rows, get'tBodies,
+        getm'tBodies, set'align, get'align, getm'align, set'bgColor,
+        get'bgColor, getm'bgColor, set'border, get'border, getm'border,
+        set'cellPadding, get'cellPadding, getm'cellPadding,
+        set'cellSpacing, get'cellSpacing, getm'cellSpacing, set'frame,
+        get'frame, getm'frame, set'rules, get'rules, getm'rules,
+        set'summary, get'summary, getm'summary, set'width, get'width,
+        getm'width, mkTable)
+       where
+import Data.DOM.Html2
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+createTHead ::
+            (Monad mn, CHTMLTableElement this, CHTMLElement zz) =>
+              Expression this -> mn (Expression zz)
+createTHead thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "createTHead")
+       return (CallExpr et r [])
+ 
+deleteTHead ::
+            (Monad mn, CHTMLTableElement this) =>
+              Expression this -> mn (Expression ())
+deleteTHead thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "deleteTHead")
+       return (CallExpr et r [])
+ 
+createTFoot ::
+            (Monad mn, CHTMLTableElement this, CHTMLElement zz) =>
+              Expression this -> mn (Expression zz)
+createTFoot thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "createTFoot")
+       return (CallExpr et r [])
+ 
+deleteTFoot ::
+            (Monad mn, CHTMLTableElement this) =>
+              Expression this -> mn (Expression ())
+deleteTFoot thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "deleteTFoot")
+       return (CallExpr et r [])
+ 
+createCaption ::
+              (Monad mn, CHTMLTableElement this, CHTMLElement zz) =>
+                Expression this -> mn (Expression zz)
+createCaption thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "createCaption")
+       return (CallExpr et r [])
+ 
+deleteCaption ::
+              (Monad mn, CHTMLTableElement this) =>
+                Expression this -> mn (Expression ())
+deleteCaption thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "deleteCaption")
+       return (CallExpr et r [])
+ 
+insertRow ::
+          (Monad mn, CHTMLTableElement this, CHTMLElement zz) =>
+            Expression Double -> Expression this -> mn (Expression zz)
+insertRow a thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "insertRow")
+       return (CallExpr et r [a /\ et])
+ 
+deleteRow ::
+          (Monad mn, CHTMLTableElement this) =>
+            Expression Double -> Expression this -> mn (Expression ())
+deleteRow a thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "deleteRow")
+       return (CallExpr et r [a /\ et])
+ 
+set'caption ::
+            (Monad mn, CHTMLTableCaptionElement val, CHTMLTableElement zz) =>
+              Expression val -> Expression zz -> mn (Expression zz)
+set'caption = setjsProperty "caption"
+ 
+get'caption ::
+            (Monad mn, CHTMLTableElement this, CHTMLTableCaptionElement zz) =>
+              Expression this -> mn (Expression zz)
+get'caption thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "caption")
+       return r
+ 
+getm'caption ::
+             (Monad mn, CHTMLTableElement this) =>
+               Expression this -> mn (Expression THTMLTableCaptionElement)
+getm'caption = get'caption
+ 
+set'tHead ::
+          (Monad mn, CHTMLTableSectionElement val, CHTMLTableElement zz) =>
+            Expression val -> Expression zz -> mn (Expression zz)
+set'tHead = setjsProperty "tHead"
+ 
+get'tHead ::
+          (Monad mn, CHTMLTableElement this, CHTMLTableSectionElement zz) =>
+            Expression this -> mn (Expression zz)
+get'tHead thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "tHead")
+       return r
+ 
+getm'tHead ::
+           (Monad mn, CHTMLTableElement this) =>
+             Expression this -> mn (Expression THTMLTableSectionElement)
+getm'tHead = get'tHead
+ 
+set'tFoot ::
+          (Monad mn, CHTMLTableSectionElement val, CHTMLTableElement zz) =>
+            Expression val -> Expression zz -> mn (Expression zz)
+set'tFoot = setjsProperty "tFoot"
+ 
+get'tFoot ::
+          (Monad mn, CHTMLTableElement this, CHTMLTableSectionElement zz) =>
+            Expression this -> mn (Expression zz)
+get'tFoot thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "tFoot")
+       return r
+ 
+getm'tFoot ::
+           (Monad mn, CHTMLTableElement this) =>
+             Expression this -> mn (Expression THTMLTableSectionElement)
+getm'tFoot = get'tFoot
+ 
+get'rows ::
+         (Monad mn, CHTMLTableElement this, CHTMLCollection zz) =>
+           Expression this -> mn (Expression zz)
+get'rows thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "rows")
+       return r
+ 
+getm'rows ::
+          (Monad mn, CHTMLTableElement this) =>
+            Expression this -> mn (Expression THTMLCollection)
+getm'rows = get'rows
+ 
+get'tBodies ::
+            (Monad mn, CHTMLTableElement this, CHTMLCollection zz) =>
+              Expression this -> mn (Expression zz)
+get'tBodies thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "tBodies")
+       return r
+ 
+getm'tBodies ::
+             (Monad mn, CHTMLTableElement this) =>
+               Expression this -> mn (Expression THTMLCollection)
+getm'tBodies = get'tBodies
+ 
+set'align ::
+          (Monad mn, CHTMLTableElement zz) =>
+            Expression String -> Expression zz -> mn (Expression zz)
+set'align = setjsProperty "align"
+ 
+get'align ::
+          (Monad mn, CHTMLTableElement this) =>
+            Expression this -> mn (Expression String)
+get'align thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "align")
+       return r
+ 
+getm'align ::
+           (Monad mn, CHTMLTableElement this) =>
+             Expression this -> mn (Expression String)
+getm'align = get'align
+ 
+set'bgColor ::
+            (Monad mn, CHTMLTableElement zz) =>
+              Expression String -> Expression zz -> mn (Expression zz)
+set'bgColor = setjsProperty "bgColor"
+ 
+get'bgColor ::
+            (Monad mn, CHTMLTableElement this) =>
+              Expression this -> mn (Expression String)
+get'bgColor thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "bgColor")
+       return r
+ 
+getm'bgColor ::
+             (Monad mn, CHTMLTableElement this) =>
+               Expression this -> mn (Expression String)
+getm'bgColor = get'bgColor
+ 
+set'border ::
+           (Monad mn, CHTMLTableElement zz) =>
+             Expression String -> Expression zz -> mn (Expression zz)
+set'border = setjsProperty "border"
+ 
+get'border ::
+           (Monad mn, CHTMLTableElement this) =>
+             Expression this -> mn (Expression String)
+get'border thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "border")
+       return r
+ 
+getm'border ::
+            (Monad mn, CHTMLTableElement this) =>
+              Expression this -> mn (Expression String)
+getm'border = get'border
+ 
+set'cellPadding ::
+                (Monad mn, CHTMLTableElement zz) =>
+                  Expression String -> Expression zz -> mn (Expression zz)
+set'cellPadding = setjsProperty "cellPadding"
+ 
+get'cellPadding ::
+                (Monad mn, CHTMLTableElement this) =>
+                  Expression this -> mn (Expression String)
+get'cellPadding thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "cellPadding")
+       return r
+ 
+getm'cellPadding ::
+                 (Monad mn, CHTMLTableElement this) =>
+                   Expression this -> mn (Expression String)
+getm'cellPadding = get'cellPadding
+ 
+set'cellSpacing ::
+                (Monad mn, CHTMLTableElement zz) =>
+                  Expression String -> Expression zz -> mn (Expression zz)
+set'cellSpacing = setjsProperty "cellSpacing"
+ 
+get'cellSpacing ::
+                (Monad mn, CHTMLTableElement this) =>
+                  Expression this -> mn (Expression String)
+get'cellSpacing thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "cellSpacing")
+       return r
+ 
+getm'cellSpacing ::
+                 (Monad mn, CHTMLTableElement this) =>
+                   Expression this -> mn (Expression String)
+getm'cellSpacing = get'cellSpacing
+ 
+set'frame ::
+          (Monad mn, CHTMLTableElement zz) =>
+            Expression String -> Expression zz -> mn (Expression zz)
+set'frame = setjsProperty "frame"
+ 
+get'frame ::
+          (Monad mn, CHTMLTableElement this) =>
+            Expression this -> mn (Expression String)
+get'frame thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "frame")
+       return r
+ 
+getm'frame ::
+           (Monad mn, CHTMLTableElement this) =>
+             Expression this -> mn (Expression String)
+getm'frame = get'frame
+ 
+set'rules ::
+          (Monad mn, CHTMLTableElement zz) =>
+            Expression String -> Expression zz -> mn (Expression zz)
+set'rules = setjsProperty "rules"
+ 
+get'rules ::
+          (Monad mn, CHTMLTableElement this) =>
+            Expression this -> mn (Expression String)
+get'rules thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "rules")
+       return r
+ 
+getm'rules ::
+           (Monad mn, CHTMLTableElement this) =>
+             Expression this -> mn (Expression String)
+getm'rules = get'rules
+ 
+set'summary ::
+            (Monad mn, CHTMLTableElement zz) =>
+              Expression String -> Expression zz -> mn (Expression zz)
+set'summary = setjsProperty "summary"
+ 
+get'summary ::
+            (Monad mn, CHTMLTableElement this) =>
+              Expression this -> mn (Expression String)
+get'summary thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "summary")
+       return r
+ 
+getm'summary ::
+             (Monad mn, CHTMLTableElement this) =>
+               Expression this -> mn (Expression String)
+getm'summary = get'summary
+ 
+set'width ::
+          (Monad mn, CHTMLTableElement zz) =>
+            Expression String -> Expression zz -> mn (Expression zz)
+set'width = setjsProperty "width"
+ 
+get'width ::
+          (Monad mn, CHTMLTableElement this) =>
+            Expression this -> mn (Expression String)
+get'width thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "width")
+       return r
+ 
+getm'width ::
+           (Monad mn, CHTMLTableElement this) =>
+             Expression this -> mn (Expression String)
+getm'width = get'width
+ 
+mkTable ::
+        (Monad mn, CHTMLDocument a) =>
+          Expression a -> mn (Expression THTMLTableElement)
+mkTable = createElement (StringLit "table" "table")
+
diff --git a/Data/DOM/HTMLTableRowElement.hs b/Data/DOM/HTMLTableRowElement.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/HTMLTableRowElement.hs
@@ -0,0 +1,165 @@
+
+module Data.DOM.HTMLTableRowElement
+       (insertCell, deleteCell, get'rowIndex, getm'rowIndex,
+        get'sectionRowIndex, getm'sectionRowIndex, get'cells, getm'cells,
+        set'align, get'align, getm'align, set'bgColor, get'bgColor,
+        getm'bgColor, set'ch, get'ch, getm'ch, set'chOff, get'chOff,
+        getm'chOff, set'vAlign, get'vAlign, getm'vAlign, mkTr)
+       where
+import Data.DOM.Html2
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+insertCell ::
+           (Monad mn, CHTMLTableRowElement this, CHTMLElement zz) =>
+             Expression Double -> Expression this -> mn (Expression zz)
+insertCell a thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "insertCell")
+       return (CallExpr et r [a /\ et])
+ 
+deleteCell ::
+           (Monad mn, CHTMLTableRowElement this) =>
+             Expression Double -> Expression this -> mn (Expression ())
+deleteCell a thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "deleteCell")
+       return (CallExpr et r [a /\ et])
+ 
+get'rowIndex ::
+             (Monad mn, CHTMLTableRowElement this) =>
+               Expression this -> mn (Expression Double)
+get'rowIndex thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "rowIndex")
+       return r
+ 
+getm'rowIndex ::
+              (Monad mn, CHTMLTableRowElement this) =>
+                Expression this -> mn (Expression Double)
+getm'rowIndex = get'rowIndex
+ 
+get'sectionRowIndex ::
+                    (Monad mn, CHTMLTableRowElement this) =>
+                      Expression this -> mn (Expression Double)
+get'sectionRowIndex thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "sectionRowIndex")
+       return r
+ 
+getm'sectionRowIndex ::
+                     (Monad mn, CHTMLTableRowElement this) =>
+                       Expression this -> mn (Expression Double)
+getm'sectionRowIndex = get'sectionRowIndex
+ 
+get'cells ::
+          (Monad mn, CHTMLTableRowElement this, CHTMLCollection zz) =>
+            Expression this -> mn (Expression zz)
+get'cells thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "cells")
+       return r
+ 
+getm'cells ::
+           (Monad mn, CHTMLTableRowElement this) =>
+             Expression this -> mn (Expression THTMLCollection)
+getm'cells = get'cells
+ 
+set'align ::
+          (Monad mn, CHTMLTableRowElement zz) =>
+            Expression String -> Expression zz -> mn (Expression zz)
+set'align = setjsProperty "align"
+ 
+get'align ::
+          (Monad mn, CHTMLTableRowElement this) =>
+            Expression this -> mn (Expression String)
+get'align thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "align")
+       return r
+ 
+getm'align ::
+           (Monad mn, CHTMLTableRowElement this) =>
+             Expression this -> mn (Expression String)
+getm'align = get'align
+ 
+set'bgColor ::
+            (Monad mn, CHTMLTableRowElement zz) =>
+              Expression String -> Expression zz -> mn (Expression zz)
+set'bgColor = setjsProperty "bgColor"
+ 
+get'bgColor ::
+            (Monad mn, CHTMLTableRowElement this) =>
+              Expression this -> mn (Expression String)
+get'bgColor thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "bgColor")
+       return r
+ 
+getm'bgColor ::
+             (Monad mn, CHTMLTableRowElement this) =>
+               Expression this -> mn (Expression String)
+getm'bgColor = get'bgColor
+ 
+set'ch ::
+       (Monad mn, CHTMLTableRowElement zz) =>
+         Expression String -> Expression zz -> mn (Expression zz)
+set'ch = setjsProperty "ch"
+ 
+get'ch ::
+       (Monad mn, CHTMLTableRowElement this) =>
+         Expression this -> mn (Expression String)
+get'ch thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "ch")
+       return r
+ 
+getm'ch ::
+        (Monad mn, CHTMLTableRowElement this) =>
+          Expression this -> mn (Expression String)
+getm'ch = get'ch
+ 
+set'chOff ::
+          (Monad mn, CHTMLTableRowElement zz) =>
+            Expression String -> Expression zz -> mn (Expression zz)
+set'chOff = setjsProperty "chOff"
+ 
+get'chOff ::
+          (Monad mn, CHTMLTableRowElement this) =>
+            Expression this -> mn (Expression String)
+get'chOff thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "chOff")
+       return r
+ 
+getm'chOff ::
+           (Monad mn, CHTMLTableRowElement this) =>
+             Expression this -> mn (Expression String)
+getm'chOff = get'chOff
+ 
+set'vAlign ::
+           (Monad mn, CHTMLTableRowElement zz) =>
+             Expression String -> Expression zz -> mn (Expression zz)
+set'vAlign = setjsProperty "vAlign"
+ 
+get'vAlign ::
+           (Monad mn, CHTMLTableRowElement this) =>
+             Expression this -> mn (Expression String)
+get'vAlign thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "vAlign")
+       return r
+ 
+getm'vAlign ::
+            (Monad mn, CHTMLTableRowElement this) =>
+              Expression this -> mn (Expression String)
+getm'vAlign = get'vAlign
+ 
+mkTr ::
+     (Monad mn, CHTMLDocument a) =>
+       Expression a -> mn (Expression THTMLTableRowElement)
+mkTr = createElement (StringLit "tr" "tr")
+
diff --git a/Data/DOM/HTMLTableSectionElement.hs b/Data/DOM/HTMLTableSectionElement.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/HTMLTableSectionElement.hs
@@ -0,0 +1,114 @@
+
+module Data.DOM.HTMLTableSectionElement
+       (insertRow, deleteRow, set'align, get'align, getm'align, set'ch,
+        get'ch, getm'ch, set'chOff, get'chOff, getm'chOff, set'vAlign,
+        get'vAlign, getm'vAlign, get'rows, getm'rows)
+       where
+import Data.DOM.Html2
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+insertRow ::
+          (Monad mn, CHTMLTableSectionElement this, CHTMLElement zz) =>
+            Expression Double -> Expression this -> mn (Expression zz)
+insertRow a thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "insertRow")
+       return (CallExpr et r [a /\ et])
+ 
+deleteRow ::
+          (Monad mn, CHTMLTableSectionElement this) =>
+            Expression Double -> Expression this -> mn (Expression ())
+deleteRow a thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "deleteRow")
+       return (CallExpr et r [a /\ et])
+ 
+set'align ::
+          (Monad mn, CHTMLTableSectionElement zz) =>
+            Expression String -> Expression zz -> mn (Expression zz)
+set'align = setjsProperty "align"
+ 
+get'align ::
+          (Monad mn, CHTMLTableSectionElement this) =>
+            Expression this -> mn (Expression String)
+get'align thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "align")
+       return r
+ 
+getm'align ::
+           (Monad mn, CHTMLTableSectionElement this) =>
+             Expression this -> mn (Expression String)
+getm'align = get'align
+ 
+set'ch ::
+       (Monad mn, CHTMLTableSectionElement zz) =>
+         Expression String -> Expression zz -> mn (Expression zz)
+set'ch = setjsProperty "ch"
+ 
+get'ch ::
+       (Monad mn, CHTMLTableSectionElement this) =>
+         Expression this -> mn (Expression String)
+get'ch thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "ch")
+       return r
+ 
+getm'ch ::
+        (Monad mn, CHTMLTableSectionElement this) =>
+          Expression this -> mn (Expression String)
+getm'ch = get'ch
+ 
+set'chOff ::
+          (Monad mn, CHTMLTableSectionElement zz) =>
+            Expression String -> Expression zz -> mn (Expression zz)
+set'chOff = setjsProperty "chOff"
+ 
+get'chOff ::
+          (Monad mn, CHTMLTableSectionElement this) =>
+            Expression this -> mn (Expression String)
+get'chOff thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "chOff")
+       return r
+ 
+getm'chOff ::
+           (Monad mn, CHTMLTableSectionElement this) =>
+             Expression this -> mn (Expression String)
+getm'chOff = get'chOff
+ 
+set'vAlign ::
+           (Monad mn, CHTMLTableSectionElement zz) =>
+             Expression String -> Expression zz -> mn (Expression zz)
+set'vAlign = setjsProperty "vAlign"
+ 
+get'vAlign ::
+           (Monad mn, CHTMLTableSectionElement this) =>
+             Expression this -> mn (Expression String)
+get'vAlign thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "vAlign")
+       return r
+ 
+getm'vAlign ::
+            (Monad mn, CHTMLTableSectionElement this) =>
+              Expression this -> mn (Expression String)
+getm'vAlign = get'vAlign
+ 
+get'rows ::
+         (Monad mn, CHTMLTableSectionElement this, CHTMLCollection zz) =>
+           Expression this -> mn (Expression zz)
+get'rows thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "rows")
+       return r
+ 
+getm'rows ::
+          (Monad mn, CHTMLTableSectionElement this) =>
+            Expression this -> mn (Expression THTMLCollection)
+getm'rows = get'rows
+
diff --git a/Data/DOM/HTMLTextAreaElement.hs b/Data/DOM/HTMLTextAreaElement.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/HTMLTextAreaElement.hs
@@ -0,0 +1,234 @@
+
+module Data.DOM.HTMLTextAreaElement
+       (blur, focus, select, set'defaultValue, get'defaultValue,
+        getm'defaultValue, get'form, getm'form, set'accessKey,
+        get'accessKey, getm'accessKey, set'cols, get'cols, getm'cols,
+        set'disabled, get'disabled, getm'disabled, set'name, get'name,
+        getm'name, set'readOnly, get'readOnly, getm'readOnly, set'rows,
+        get'rows, getm'rows, set'tabIndex, get'tabIndex, getm'tabIndex,
+        get'type, getm'type, set'value, get'value, getm'value, mkTextarea)
+       where
+import Data.DOM.Html2
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+blur ::
+     (Monad mn, CHTMLTextAreaElement this) =>
+       Expression this -> mn (Expression ())
+blur thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "blur")
+       return (CallExpr et r [])
+ 
+focus ::
+      (Monad mn, CHTMLTextAreaElement this) =>
+        Expression this -> mn (Expression ())
+focus thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "focus")
+       return (CallExpr et r [])
+ 
+select ::
+       (Monad mn, CHTMLTextAreaElement this) =>
+         Expression this -> mn (Expression ())
+select thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "select")
+       return (CallExpr et r [])
+ 
+set'defaultValue ::
+                 (Monad mn, CHTMLTextAreaElement zz) =>
+                   Expression String -> Expression zz -> mn (Expression zz)
+set'defaultValue = setjsProperty "defaultValue"
+ 
+get'defaultValue ::
+                 (Monad mn, CHTMLTextAreaElement this) =>
+                   Expression this -> mn (Expression String)
+get'defaultValue thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "defaultValue")
+       return r
+ 
+getm'defaultValue ::
+                  (Monad mn, CHTMLTextAreaElement this) =>
+                    Expression this -> mn (Expression String)
+getm'defaultValue = get'defaultValue
+ 
+get'form ::
+         (Monad mn, CHTMLTextAreaElement this, CHTMLFormElement zz) =>
+           Expression this -> mn (Expression zz)
+get'form thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "form")
+       return r
+ 
+getm'form ::
+          (Monad mn, CHTMLTextAreaElement this) =>
+            Expression this -> mn (Expression THTMLFormElement)
+getm'form = get'form
+ 
+set'accessKey ::
+              (Monad mn, CHTMLTextAreaElement zz) =>
+                Expression String -> Expression zz -> mn (Expression zz)
+set'accessKey = setjsProperty "accessKey"
+ 
+get'accessKey ::
+              (Monad mn, CHTMLTextAreaElement this) =>
+                Expression this -> mn (Expression String)
+get'accessKey thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "accessKey")
+       return r
+ 
+getm'accessKey ::
+               (Monad mn, CHTMLTextAreaElement this) =>
+                 Expression this -> mn (Expression String)
+getm'accessKey = get'accessKey
+ 
+set'cols ::
+         (Monad mn, CHTMLTextAreaElement zz) =>
+           Expression Double -> Expression zz -> mn (Expression zz)
+set'cols = setjsProperty "cols"
+ 
+get'cols ::
+         (Monad mn, CHTMLTextAreaElement this) =>
+           Expression this -> mn (Expression Double)
+get'cols thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "cols")
+       return r
+ 
+getm'cols ::
+          (Monad mn, CHTMLTextAreaElement this) =>
+            Expression this -> mn (Expression Double)
+getm'cols = get'cols
+ 
+set'disabled ::
+             (Monad mn, CHTMLTextAreaElement zz) =>
+               Expression Bool -> Expression zz -> mn (Expression zz)
+set'disabled = setjsProperty "disabled"
+ 
+get'disabled ::
+             (Monad mn, CHTMLTextAreaElement this) =>
+               Expression this -> mn (Expression Bool)
+get'disabled thisp
+  = do let et = undefined :: Bool
+       let r = DotRef et (thisp /\ et) (Id et "disabled")
+       return r
+ 
+getm'disabled ::
+              (Monad mn, CHTMLTextAreaElement this) =>
+                Expression this -> mn (Expression Bool)
+getm'disabled = get'disabled
+ 
+set'name ::
+         (Monad mn, CHTMLTextAreaElement zz) =>
+           Expression String -> Expression zz -> mn (Expression zz)
+set'name = setjsProperty "name"
+ 
+get'name ::
+         (Monad mn, CHTMLTextAreaElement this) =>
+           Expression this -> mn (Expression String)
+get'name thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "name")
+       return r
+ 
+getm'name ::
+          (Monad mn, CHTMLTextAreaElement this) =>
+            Expression this -> mn (Expression String)
+getm'name = get'name
+ 
+set'readOnly ::
+             (Monad mn, CHTMLTextAreaElement zz) =>
+               Expression Bool -> Expression zz -> mn (Expression zz)
+set'readOnly = setjsProperty "readOnly"
+ 
+get'readOnly ::
+             (Monad mn, CHTMLTextAreaElement this) =>
+               Expression this -> mn (Expression Bool)
+get'readOnly thisp
+  = do let et = undefined :: Bool
+       let r = DotRef et (thisp /\ et) (Id et "readOnly")
+       return r
+ 
+getm'readOnly ::
+              (Monad mn, CHTMLTextAreaElement this) =>
+                Expression this -> mn (Expression Bool)
+getm'readOnly = get'readOnly
+ 
+set'rows ::
+         (Monad mn, CHTMLTextAreaElement zz) =>
+           Expression Double -> Expression zz -> mn (Expression zz)
+set'rows = setjsProperty "rows"
+ 
+get'rows ::
+         (Monad mn, CHTMLTextAreaElement this) =>
+           Expression this -> mn (Expression Double)
+get'rows thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "rows")
+       return r
+ 
+getm'rows ::
+          (Monad mn, CHTMLTextAreaElement this) =>
+            Expression this -> mn (Expression Double)
+getm'rows = get'rows
+ 
+set'tabIndex ::
+             (Monad mn, CHTMLTextAreaElement zz) =>
+               Expression Double -> Expression zz -> mn (Expression zz)
+set'tabIndex = setjsProperty "tabIndex"
+ 
+get'tabIndex ::
+             (Monad mn, CHTMLTextAreaElement this) =>
+               Expression this -> mn (Expression Double)
+get'tabIndex thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "tabIndex")
+       return r
+ 
+getm'tabIndex ::
+              (Monad mn, CHTMLTextAreaElement this) =>
+                Expression this -> mn (Expression Double)
+getm'tabIndex = get'tabIndex
+ 
+get'type ::
+         (Monad mn, CHTMLTextAreaElement this) =>
+           Expression this -> mn (Expression String)
+get'type thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "type")
+       return r
+ 
+getm'type ::
+          (Monad mn, CHTMLTextAreaElement this) =>
+            Expression this -> mn (Expression String)
+getm'type = get'type
+ 
+set'value ::
+          (Monad mn, CHTMLTextAreaElement zz) =>
+            Expression String -> Expression zz -> mn (Expression zz)
+set'value = setjsProperty "value"
+ 
+get'value ::
+          (Monad mn, CHTMLTextAreaElement this) =>
+            Expression this -> mn (Expression String)
+get'value thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "value")
+       return r
+ 
+getm'value ::
+           (Monad mn, CHTMLTextAreaElement this) =>
+             Expression this -> mn (Expression String)
+getm'value = get'value
+ 
+mkTextarea ::
+           (Monad mn, CHTMLDocument a) =>
+             Expression a -> mn (Expression THTMLTextAreaElement)
+mkTextarea = createElement (StringLit "textarea" "textarea")
+
diff --git a/Data/DOM/HTMLTitleElement.hs b/Data/DOM/HTMLTitleElement.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/HTMLTitleElement.hs
@@ -0,0 +1,28 @@
+
+module Data.DOM.HTMLTitleElement (set'text, get'text, getm'text)
+       where
+import Data.DOM.Html2
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+set'text ::
+         (Monad mn, CHTMLTitleElement zz) =>
+           Expression String -> Expression zz -> mn (Expression zz)
+set'text = setjsProperty "text"
+ 
+get'text ::
+         (Monad mn, CHTMLTitleElement this) =>
+           Expression this -> mn (Expression String)
+get'text thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "text")
+       return r
+ 
+getm'text ::
+          (Monad mn, CHTMLTitleElement this) =>
+            Expression this -> mn (Expression String)
+getm'text = get'text
+
diff --git a/Data/DOM/HTMLUListElement.hs b/Data/DOM/HTMLUListElement.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/HTMLUListElement.hs
@@ -0,0 +1,53 @@
+
+module Data.DOM.HTMLUListElement
+       (set'compact, get'compact, getm'compact, set'type, get'type,
+        getm'type, mkUl)
+       where
+import Data.DOM.Html2
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+set'compact ::
+            (Monad mn, CHTMLUListElement zz) =>
+              Expression Bool -> Expression zz -> mn (Expression zz)
+set'compact = setjsProperty "compact"
+ 
+get'compact ::
+            (Monad mn, CHTMLUListElement this) =>
+              Expression this -> mn (Expression Bool)
+get'compact thisp
+  = do let et = undefined :: Bool
+       let r = DotRef et (thisp /\ et) (Id et "compact")
+       return r
+ 
+getm'compact ::
+             (Monad mn, CHTMLUListElement this) =>
+               Expression this -> mn (Expression Bool)
+getm'compact = get'compact
+ 
+set'type ::
+         (Monad mn, CHTMLUListElement zz) =>
+           Expression String -> Expression zz -> mn (Expression zz)
+set'type = setjsProperty "type"
+ 
+get'type ::
+         (Monad mn, CHTMLUListElement this) =>
+           Expression this -> mn (Expression String)
+get'type thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "type")
+       return r
+ 
+getm'type ::
+          (Monad mn, CHTMLUListElement this) =>
+            Expression this -> mn (Expression String)
+getm'type = get'type
+ 
+mkUl ::
+     (Monad mn, CHTMLDocument a) =>
+       Expression a -> mn (Expression THTMLUListElement)
+mkUl = createElement (StringLit "ul" "ul")
+
diff --git a/Data/DOM/Html2.hs b/Data/DOM/Html2.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/Html2.hs
@@ -0,0 +1,1049 @@
+
+module Data.DOM.Html2
+       (THTMLCollection(..), THTMLOptionsCollection(..),
+        THTMLDocument(..), THTMLElement(..), THTMLHtmlElement(..),
+        THTMLHeadElement(..), THTMLLinkElement(..), THTMLTitleElement(..),
+        THTMLMetaElement(..), THTMLBaseElement(..),
+        THTMLIsIndexElement(..), THTMLStyleElement(..),
+        THTMLBodyElement(..), THTMLFormElement(..), THTMLSelectElement(..),
+        THTMLOptGroupElement(..), THTMLOptionElement(..),
+        THTMLInputElement(..), THTMLTextAreaElement(..),
+        THTMLButtonElement(..), THTMLLabelElement(..),
+        THTMLFieldSetElement(..), THTMLLegendElement(..),
+        THTMLUListElement(..), THTMLOListElement(..),
+        THTMLDListElement(..), THTMLDirectoryElement(..),
+        THTMLMenuElement(..), THTMLLIElement(..), THTMLDivElement(..),
+        THTMLParagraphElement(..), THTMLHeadingElement(..),
+        THTMLQuoteElement(..), THTMLPreElement(..), THTMLBRElement(..),
+        THTMLBaseFontElement(..), THTMLFontElement(..), THTMLHRElement(..),
+        THTMLModElement(..), THTMLAnchorElement(..), THTMLImageElement(..),
+        THTMLObjectElement(..), THTMLParamElement(..),
+        THTMLAppletElement(..), THTMLMapElement(..), THTMLAreaElement(..),
+        THTMLScriptElement(..), THTMLTableElement(..),
+        THTMLTableCaptionElement(..), THTMLTableColElement(..),
+        THTMLTableSectionElement(..), THTMLTableRowElement(..),
+        THTMLTableCellElement(..), THTMLFrameSetElement(..),
+        THTMLFrameElement(..), THTMLIFrameElement(..), THTMLSubElement(..),
+        THTMLSupElement(..), THTMLSpanElement(..), THTMLBdoElement(..),
+        THTMLIElement(..), THTMLBElement(..), THTMLUElement(..),
+        THTMLSElement(..), THTMLStrikeElement(..), THTMLBigElement(..),
+        THTMLSmallElement(..), THTMLEmElement(..), THTMLStrongElement(..),
+        THTMLDfnElement(..), THTMLCodeElement(..), THTMLSampElement(..),
+        THTMLKbdElement(..), THTMLVarElement(..), THTMLCiteElement(..),
+        THTMLAcronymElement(..), THTMLAbbrElement(..), THTMLDdElement(..),
+        THTMLDtElement(..), THTMLNoframesElement(..),
+        THTMLNoscriptElement(..), THTMLAddressElement(..),
+        THTMLCenterElement(..), CHTMLCollection, CHTMLOptionsCollection,
+        CHTMLDocument, CHTMLElement, CHTMLHtmlElement, CHTMLHeadElement,
+        CHTMLLinkElement, CHTMLTitleElement, CHTMLMetaElement,
+        CHTMLBaseElement, CHTMLIsIndexElement, CHTMLStyleElement,
+        CHTMLBodyElement, CHTMLFormElement, CHTMLSelectElement,
+        CHTMLOptGroupElement, CHTMLOptionElement, CHTMLInputElement,
+        CHTMLTextAreaElement, CHTMLButtonElement, CHTMLLabelElement,
+        CHTMLFieldSetElement, CHTMLLegendElement, CHTMLUListElement,
+        CHTMLOListElement, CHTMLDListElement, CHTMLDirectoryElement,
+        CHTMLMenuElement, CHTMLLIElement, CHTMLDivElement,
+        CHTMLParagraphElement, CHTMLHeadingElement, CHTMLQuoteElement,
+        CHTMLPreElement, CHTMLBRElement, CHTMLBaseFontElement,
+        CHTMLFontElement, CHTMLHRElement, CHTMLModElement,
+        CHTMLAnchorElement, CHTMLImageElement, CHTMLObjectElement,
+        CHTMLParamElement, CHTMLAppletElement, CHTMLMapElement,
+        CHTMLAreaElement, CHTMLScriptElement, CHTMLTableElement,
+        CHTMLTableCaptionElement, CHTMLTableColElement,
+        CHTMLTableSectionElement, CHTMLTableRowElement,
+        CHTMLTableCellElement, CHTMLFrameSetElement, CHTMLFrameElement,
+        CHTMLIFrameElement, CHTMLSubElement, CHTMLSupElement,
+        CHTMLSpanElement, CHTMLBdoElement, CHTMLIElement, CHTMLBElement,
+        CHTMLUElement, CHTMLSElement, CHTMLStrikeElement, CHTMLBigElement,
+        CHTMLSmallElement, CHTMLEmElement, CHTMLStrongElement,
+        CHTMLDfnElement, CHTMLCodeElement, CHTMLSampElement,
+        CHTMLKbdElement, CHTMLVarElement, CHTMLCiteElement,
+        CHTMLAcronymElement, CHTMLAbbrElement, CHTMLDdElement,
+        CHTMLDtElement, CHTMLNoframesElement, CHTMLNoscriptElement,
+        CHTMLAddressElement, CHTMLCenterElement)
+       where
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+ 
+data THTMLCollection = THTMLCollection
+ 
+data THTMLOptionsCollection = THTMLOptionsCollection
+ 
+data THTMLDocument = THTMLDocument
+ 
+data THTMLElement = THTMLElement
+ 
+data THTMLHtmlElement = THTMLHtmlElement
+ 
+data THTMLHeadElement = THTMLHeadElement
+ 
+data THTMLLinkElement = THTMLLinkElement
+ 
+data THTMLTitleElement = THTMLTitleElement
+ 
+data THTMLMetaElement = THTMLMetaElement
+ 
+data THTMLBaseElement = THTMLBaseElement
+ 
+data THTMLIsIndexElement = THTMLIsIndexElement
+ 
+data THTMLStyleElement = THTMLStyleElement
+ 
+data THTMLBodyElement = THTMLBodyElement
+ 
+data THTMLFormElement = THTMLFormElement
+ 
+data THTMLSelectElement = THTMLSelectElement
+ 
+data THTMLOptGroupElement = THTMLOptGroupElement
+ 
+data THTMLOptionElement = THTMLOptionElement
+ 
+data THTMLInputElement = THTMLInputElement
+ 
+data THTMLTextAreaElement = THTMLTextAreaElement
+ 
+data THTMLButtonElement = THTMLButtonElement
+ 
+data THTMLLabelElement = THTMLLabelElement
+ 
+data THTMLFieldSetElement = THTMLFieldSetElement
+ 
+data THTMLLegendElement = THTMLLegendElement
+ 
+data THTMLUListElement = THTMLUListElement
+ 
+data THTMLOListElement = THTMLOListElement
+ 
+data THTMLDListElement = THTMLDListElement
+ 
+data THTMLDirectoryElement = THTMLDirectoryElement
+ 
+data THTMLMenuElement = THTMLMenuElement
+ 
+data THTMLLIElement = THTMLLIElement
+ 
+data THTMLDivElement = THTMLDivElement
+ 
+data THTMLParagraphElement = THTMLParagraphElement
+ 
+data THTMLHeadingElement = THTMLHeadingElement
+ 
+data THTMLQuoteElement = THTMLQuoteElement
+ 
+data THTMLPreElement = THTMLPreElement
+ 
+data THTMLBRElement = THTMLBRElement
+ 
+data THTMLBaseFontElement = THTMLBaseFontElement
+ 
+data THTMLFontElement = THTMLFontElement
+ 
+data THTMLHRElement = THTMLHRElement
+ 
+data THTMLModElement = THTMLModElement
+ 
+data THTMLAnchorElement = THTMLAnchorElement
+ 
+data THTMLImageElement = THTMLImageElement
+ 
+data THTMLObjectElement = THTMLObjectElement
+ 
+data THTMLParamElement = THTMLParamElement
+ 
+data THTMLAppletElement = THTMLAppletElement
+ 
+data THTMLMapElement = THTMLMapElement
+ 
+data THTMLAreaElement = THTMLAreaElement
+ 
+data THTMLScriptElement = THTMLScriptElement
+ 
+data THTMLTableElement = THTMLTableElement
+ 
+data THTMLTableCaptionElement = THTMLTableCaptionElement
+ 
+data THTMLTableColElement = THTMLTableColElement
+ 
+data THTMLTableSectionElement = THTMLTableSectionElement
+ 
+data THTMLTableRowElement = THTMLTableRowElement
+ 
+data THTMLTableCellElement = THTMLTableCellElement
+ 
+data THTMLFrameSetElement = THTMLFrameSetElement
+ 
+data THTMLFrameElement = THTMLFrameElement
+ 
+data THTMLIFrameElement = THTMLIFrameElement
+ 
+data THTMLSubElement = THTMLSubElement
+ 
+data THTMLSupElement = THTMLSupElement
+ 
+data THTMLSpanElement = THTMLSpanElement
+ 
+data THTMLBdoElement = THTMLBdoElement
+ 
+data THTMLIElement = THTMLIElement
+ 
+data THTMLBElement = THTMLBElement
+ 
+data THTMLUElement = THTMLUElement
+ 
+data THTMLSElement = THTMLSElement
+ 
+data THTMLStrikeElement = THTMLStrikeElement
+ 
+data THTMLBigElement = THTMLBigElement
+ 
+data THTMLSmallElement = THTMLSmallElement
+ 
+data THTMLEmElement = THTMLEmElement
+ 
+data THTMLStrongElement = THTMLStrongElement
+ 
+data THTMLDfnElement = THTMLDfnElement
+ 
+data THTMLCodeElement = THTMLCodeElement
+ 
+data THTMLSampElement = THTMLSampElement
+ 
+data THTMLKbdElement = THTMLKbdElement
+ 
+data THTMLVarElement = THTMLVarElement
+ 
+data THTMLCiteElement = THTMLCiteElement
+ 
+data THTMLAcronymElement = THTMLAcronymElement
+ 
+data THTMLAbbrElement = THTMLAbbrElement
+ 
+data THTMLDdElement = THTMLDdElement
+ 
+data THTMLDtElement = THTMLDtElement
+ 
+data THTMLNoframesElement = THTMLNoframesElement
+ 
+data THTMLNoscriptElement = THTMLNoscriptElement
+ 
+data THTMLAddressElement = THTMLAddressElement
+ 
+data THTMLCenterElement = THTMLCenterElement
+ 
+class CHTMLCollection a
+ 
+class CHTMLOptionsCollection a
+ 
+class (CDocument a) => CHTMLDocument a
+ 
+class (CElement a) => CHTMLElement a
+ 
+class (CHTMLElement a) => CHTMLHtmlElement a
+ 
+class (CHTMLElement a) => CHTMLHeadElement a
+ 
+class (CHTMLElement a) => CHTMLLinkElement a
+ 
+class (CHTMLElement a) => CHTMLTitleElement a
+ 
+class (CHTMLElement a) => CHTMLMetaElement a
+ 
+class (CHTMLElement a) => CHTMLBaseElement a
+ 
+class (CHTMLElement a) => CHTMLIsIndexElement a
+ 
+class (CHTMLElement a) => CHTMLStyleElement a
+ 
+class (CHTMLElement a) => CHTMLBodyElement a
+ 
+class (CHTMLElement a) => CHTMLFormElement a
+ 
+class (CHTMLElement a) => CHTMLSelectElement a
+ 
+class (CHTMLElement a) => CHTMLOptGroupElement a
+ 
+class (CHTMLElement a) => CHTMLOptionElement a
+ 
+class (CHTMLElement a) => CHTMLInputElement a
+ 
+class (CHTMLElement a) => CHTMLTextAreaElement a
+ 
+class (CHTMLElement a) => CHTMLButtonElement a
+ 
+class (CHTMLElement a) => CHTMLLabelElement a
+ 
+class (CHTMLElement a) => CHTMLFieldSetElement a
+ 
+class (CHTMLElement a) => CHTMLLegendElement a
+ 
+class (CHTMLElement a) => CHTMLUListElement a
+ 
+class (CHTMLElement a) => CHTMLOListElement a
+ 
+class (CHTMLElement a) => CHTMLDListElement a
+ 
+class (CHTMLElement a) => CHTMLDirectoryElement a
+ 
+class (CHTMLElement a) => CHTMLMenuElement a
+ 
+class (CHTMLElement a) => CHTMLLIElement a
+ 
+class (CHTMLElement a) => CHTMLDivElement a
+ 
+class (CHTMLElement a) => CHTMLParagraphElement a
+ 
+class (CHTMLElement a) => CHTMLHeadingElement a
+ 
+class (CHTMLElement a) => CHTMLQuoteElement a
+ 
+class (CHTMLElement a) => CHTMLPreElement a
+ 
+class (CHTMLElement a) => CHTMLBRElement a
+ 
+class (CHTMLElement a) => CHTMLBaseFontElement a
+ 
+class (CHTMLElement a) => CHTMLFontElement a
+ 
+class (CHTMLElement a) => CHTMLHRElement a
+ 
+class (CHTMLElement a) => CHTMLModElement a
+ 
+class (CHTMLElement a) => CHTMLAnchorElement a
+ 
+class (CHTMLElement a) => CHTMLImageElement a
+ 
+class (CHTMLElement a) => CHTMLObjectElement a
+ 
+class (CHTMLElement a) => CHTMLParamElement a
+ 
+class (CHTMLElement a) => CHTMLAppletElement a
+ 
+class (CHTMLElement a) => CHTMLMapElement a
+ 
+class (CHTMLElement a) => CHTMLAreaElement a
+ 
+class (CHTMLElement a) => CHTMLScriptElement a
+ 
+class (CHTMLElement a) => CHTMLTableElement a
+ 
+class (CHTMLElement a) => CHTMLTableCaptionElement a
+ 
+class (CHTMLElement a) => CHTMLTableColElement a
+ 
+class (CHTMLElement a) => CHTMLTableSectionElement a
+ 
+class (CHTMLElement a) => CHTMLTableRowElement a
+ 
+class (CHTMLElement a) => CHTMLTableCellElement a
+ 
+class (CHTMLElement a) => CHTMLFrameSetElement a
+ 
+class (CHTMLElement a) => CHTMLFrameElement a
+ 
+class (CHTMLElement a) => CHTMLIFrameElement a
+ 
+class (CHTMLElement a) => CHTMLSubElement a
+ 
+class (CHTMLElement a) => CHTMLSupElement a
+ 
+class (CHTMLElement a) => CHTMLSpanElement a
+ 
+class (CHTMLElement a) => CHTMLBdoElement a
+ 
+class (CHTMLElement a) => CHTMLIElement a
+ 
+class (CHTMLElement a) => CHTMLBElement a
+ 
+class (CHTMLElement a) => CHTMLUElement a
+ 
+class (CHTMLElement a) => CHTMLSElement a
+ 
+class (CHTMLElement a) => CHTMLStrikeElement a
+ 
+class (CHTMLElement a) => CHTMLBigElement a
+ 
+class (CHTMLElement a) => CHTMLSmallElement a
+ 
+class (CHTMLElement a) => CHTMLEmElement a
+ 
+class (CHTMLElement a) => CHTMLStrongElement a
+ 
+class (CHTMLElement a) => CHTMLDfnElement a
+ 
+class (CHTMLElement a) => CHTMLCodeElement a
+ 
+class (CHTMLElement a) => CHTMLSampElement a
+ 
+class (CHTMLElement a) => CHTMLKbdElement a
+ 
+class (CHTMLElement a) => CHTMLVarElement a
+ 
+class (CHTMLElement a) => CHTMLCiteElement a
+ 
+class (CHTMLElement a) => CHTMLAcronymElement a
+ 
+class (CHTMLElement a) => CHTMLAbbrElement a
+ 
+class (CHTMLElement a) => CHTMLDdElement a
+ 
+class (CHTMLElement a) => CHTMLDtElement a
+ 
+class (CHTMLElement a) => CHTMLNoframesElement a
+ 
+class (CHTMLElement a) => CHTMLNoscriptElement a
+ 
+class (CHTMLElement a) => CHTMLAddressElement a
+ 
+class (CHTMLElement a) => CHTMLCenterElement a
+ 
+instance CHTMLCollection THTMLCollection
+ 
+instance CHTMLOptionsCollection THTMLOptionsCollection
+ 
+instance CHTMLDocument THTMLDocument
+ 
+instance CDocument THTMLDocument
+ 
+instance CNode THTMLDocument
+ 
+instance CHTMLElement THTMLElement
+ 
+instance CElement THTMLElement
+ 
+instance CNode THTMLElement
+ 
+instance CHTMLHtmlElement THTMLHtmlElement
+ 
+instance CHTMLElement THTMLHtmlElement
+ 
+instance CElement THTMLHtmlElement
+ 
+instance CNode THTMLHtmlElement
+ 
+instance CHTMLHeadElement THTMLHeadElement
+ 
+instance CHTMLElement THTMLHeadElement
+ 
+instance CElement THTMLHeadElement
+ 
+instance CNode THTMLHeadElement
+ 
+instance CHTMLLinkElement THTMLLinkElement
+ 
+instance CHTMLElement THTMLLinkElement
+ 
+instance CElement THTMLLinkElement
+ 
+instance CNode THTMLLinkElement
+ 
+instance CHTMLTitleElement THTMLTitleElement
+ 
+instance CHTMLElement THTMLTitleElement
+ 
+instance CElement THTMLTitleElement
+ 
+instance CNode THTMLTitleElement
+ 
+instance CHTMLMetaElement THTMLMetaElement
+ 
+instance CHTMLElement THTMLMetaElement
+ 
+instance CElement THTMLMetaElement
+ 
+instance CNode THTMLMetaElement
+ 
+instance CHTMLBaseElement THTMLBaseElement
+ 
+instance CHTMLElement THTMLBaseElement
+ 
+instance CElement THTMLBaseElement
+ 
+instance CNode THTMLBaseElement
+ 
+instance CHTMLIsIndexElement THTMLIsIndexElement
+ 
+instance CHTMLElement THTMLIsIndexElement
+ 
+instance CElement THTMLIsIndexElement
+ 
+instance CNode THTMLIsIndexElement
+ 
+instance CHTMLStyleElement THTMLStyleElement
+ 
+instance CHTMLElement THTMLStyleElement
+ 
+instance CElement THTMLStyleElement
+ 
+instance CNode THTMLStyleElement
+ 
+instance CHTMLBodyElement THTMLBodyElement
+ 
+instance CHTMLElement THTMLBodyElement
+ 
+instance CElement THTMLBodyElement
+ 
+instance CNode THTMLBodyElement
+ 
+instance CHTMLFormElement THTMLFormElement
+ 
+instance CHTMLElement THTMLFormElement
+ 
+instance CElement THTMLFormElement
+ 
+instance CNode THTMLFormElement
+ 
+instance CHTMLSelectElement THTMLSelectElement
+ 
+instance CHTMLElement THTMLSelectElement
+ 
+instance CElement THTMLSelectElement
+ 
+instance CNode THTMLSelectElement
+ 
+instance CHTMLOptGroupElement THTMLOptGroupElement
+ 
+instance CHTMLElement THTMLOptGroupElement
+ 
+instance CElement THTMLOptGroupElement
+ 
+instance CNode THTMLOptGroupElement
+ 
+instance CHTMLOptionElement THTMLOptionElement
+ 
+instance CHTMLElement THTMLOptionElement
+ 
+instance CElement THTMLOptionElement
+ 
+instance CNode THTMLOptionElement
+ 
+instance CHTMLInputElement THTMLInputElement
+ 
+instance CHTMLElement THTMLInputElement
+ 
+instance CElement THTMLInputElement
+ 
+instance CNode THTMLInputElement
+ 
+instance CHTMLTextAreaElement THTMLTextAreaElement
+ 
+instance CHTMLElement THTMLTextAreaElement
+ 
+instance CElement THTMLTextAreaElement
+ 
+instance CNode THTMLTextAreaElement
+ 
+instance CHTMLButtonElement THTMLButtonElement
+ 
+instance CHTMLElement THTMLButtonElement
+ 
+instance CElement THTMLButtonElement
+ 
+instance CNode THTMLButtonElement
+ 
+instance CHTMLLabelElement THTMLLabelElement
+ 
+instance CHTMLElement THTMLLabelElement
+ 
+instance CElement THTMLLabelElement
+ 
+instance CNode THTMLLabelElement
+ 
+instance CHTMLFieldSetElement THTMLFieldSetElement
+ 
+instance CHTMLElement THTMLFieldSetElement
+ 
+instance CElement THTMLFieldSetElement
+ 
+instance CNode THTMLFieldSetElement
+ 
+instance CHTMLLegendElement THTMLLegendElement
+ 
+instance CHTMLElement THTMLLegendElement
+ 
+instance CElement THTMLLegendElement
+ 
+instance CNode THTMLLegendElement
+ 
+instance CHTMLUListElement THTMLUListElement
+ 
+instance CHTMLElement THTMLUListElement
+ 
+instance CElement THTMLUListElement
+ 
+instance CNode THTMLUListElement
+ 
+instance CHTMLOListElement THTMLOListElement
+ 
+instance CHTMLElement THTMLOListElement
+ 
+instance CElement THTMLOListElement
+ 
+instance CNode THTMLOListElement
+ 
+instance CHTMLDListElement THTMLDListElement
+ 
+instance CHTMLElement THTMLDListElement
+ 
+instance CElement THTMLDListElement
+ 
+instance CNode THTMLDListElement
+ 
+instance CHTMLDirectoryElement THTMLDirectoryElement
+ 
+instance CHTMLElement THTMLDirectoryElement
+ 
+instance CElement THTMLDirectoryElement
+ 
+instance CNode THTMLDirectoryElement
+ 
+instance CHTMLMenuElement THTMLMenuElement
+ 
+instance CHTMLElement THTMLMenuElement
+ 
+instance CElement THTMLMenuElement
+ 
+instance CNode THTMLMenuElement
+ 
+instance CHTMLLIElement THTMLLIElement
+ 
+instance CHTMLElement THTMLLIElement
+ 
+instance CElement THTMLLIElement
+ 
+instance CNode THTMLLIElement
+ 
+instance CHTMLDivElement THTMLDivElement
+ 
+instance CHTMLElement THTMLDivElement
+ 
+instance CElement THTMLDivElement
+ 
+instance CNode THTMLDivElement
+ 
+instance CHTMLParagraphElement THTMLParagraphElement
+ 
+instance CHTMLElement THTMLParagraphElement
+ 
+instance CElement THTMLParagraphElement
+ 
+instance CNode THTMLParagraphElement
+ 
+instance CHTMLHeadingElement THTMLHeadingElement
+ 
+instance CHTMLElement THTMLHeadingElement
+ 
+instance CElement THTMLHeadingElement
+ 
+instance CNode THTMLHeadingElement
+ 
+instance CHTMLQuoteElement THTMLQuoteElement
+ 
+instance CHTMLElement THTMLQuoteElement
+ 
+instance CElement THTMLQuoteElement
+ 
+instance CNode THTMLQuoteElement
+ 
+instance CHTMLPreElement THTMLPreElement
+ 
+instance CHTMLElement THTMLPreElement
+ 
+instance CElement THTMLPreElement
+ 
+instance CNode THTMLPreElement
+ 
+instance CHTMLBRElement THTMLBRElement
+ 
+instance CHTMLElement THTMLBRElement
+ 
+instance CElement THTMLBRElement
+ 
+instance CNode THTMLBRElement
+ 
+instance CHTMLBaseFontElement THTMLBaseFontElement
+ 
+instance CHTMLElement THTMLBaseFontElement
+ 
+instance CElement THTMLBaseFontElement
+ 
+instance CNode THTMLBaseFontElement
+ 
+instance CHTMLFontElement THTMLFontElement
+ 
+instance CHTMLElement THTMLFontElement
+ 
+instance CElement THTMLFontElement
+ 
+instance CNode THTMLFontElement
+ 
+instance CHTMLHRElement THTMLHRElement
+ 
+instance CHTMLElement THTMLHRElement
+ 
+instance CElement THTMLHRElement
+ 
+instance CNode THTMLHRElement
+ 
+instance CHTMLModElement THTMLModElement
+ 
+instance CHTMLElement THTMLModElement
+ 
+instance CElement THTMLModElement
+ 
+instance CNode THTMLModElement
+ 
+instance CHTMLAnchorElement THTMLAnchorElement
+ 
+instance CHTMLElement THTMLAnchorElement
+ 
+instance CElement THTMLAnchorElement
+ 
+instance CNode THTMLAnchorElement
+ 
+instance CHTMLImageElement THTMLImageElement
+ 
+instance CHTMLElement THTMLImageElement
+ 
+instance CElement THTMLImageElement
+ 
+instance CNode THTMLImageElement
+ 
+instance CHTMLObjectElement THTMLObjectElement
+ 
+instance CHTMLElement THTMLObjectElement
+ 
+instance CElement THTMLObjectElement
+ 
+instance CNode THTMLObjectElement
+ 
+instance CHTMLParamElement THTMLParamElement
+ 
+instance CHTMLElement THTMLParamElement
+ 
+instance CElement THTMLParamElement
+ 
+instance CNode THTMLParamElement
+ 
+instance CHTMLAppletElement THTMLAppletElement
+ 
+instance CHTMLElement THTMLAppletElement
+ 
+instance CElement THTMLAppletElement
+ 
+instance CNode THTMLAppletElement
+ 
+instance CHTMLMapElement THTMLMapElement
+ 
+instance CHTMLElement THTMLMapElement
+ 
+instance CElement THTMLMapElement
+ 
+instance CNode THTMLMapElement
+ 
+instance CHTMLAreaElement THTMLAreaElement
+ 
+instance CHTMLElement THTMLAreaElement
+ 
+instance CElement THTMLAreaElement
+ 
+instance CNode THTMLAreaElement
+ 
+instance CHTMLScriptElement THTMLScriptElement
+ 
+instance CHTMLElement THTMLScriptElement
+ 
+instance CElement THTMLScriptElement
+ 
+instance CNode THTMLScriptElement
+ 
+instance CHTMLTableElement THTMLTableElement
+ 
+instance CHTMLElement THTMLTableElement
+ 
+instance CElement THTMLTableElement
+ 
+instance CNode THTMLTableElement
+ 
+instance CHTMLTableCaptionElement THTMLTableCaptionElement
+ 
+instance CHTMLElement THTMLTableCaptionElement
+ 
+instance CElement THTMLTableCaptionElement
+ 
+instance CNode THTMLTableCaptionElement
+ 
+instance CHTMLTableColElement THTMLTableColElement
+ 
+instance CHTMLElement THTMLTableColElement
+ 
+instance CElement THTMLTableColElement
+ 
+instance CNode THTMLTableColElement
+ 
+instance CHTMLTableSectionElement THTMLTableSectionElement
+ 
+instance CHTMLElement THTMLTableSectionElement
+ 
+instance CElement THTMLTableSectionElement
+ 
+instance CNode THTMLTableSectionElement
+ 
+instance CHTMLTableRowElement THTMLTableRowElement
+ 
+instance CHTMLElement THTMLTableRowElement
+ 
+instance CElement THTMLTableRowElement
+ 
+instance CNode THTMLTableRowElement
+ 
+instance CHTMLTableCellElement THTMLTableCellElement
+ 
+instance CHTMLElement THTMLTableCellElement
+ 
+instance CElement THTMLTableCellElement
+ 
+instance CNode THTMLTableCellElement
+ 
+instance CHTMLFrameSetElement THTMLFrameSetElement
+ 
+instance CHTMLElement THTMLFrameSetElement
+ 
+instance CElement THTMLFrameSetElement
+ 
+instance CNode THTMLFrameSetElement
+ 
+instance CHTMLFrameElement THTMLFrameElement
+ 
+instance CHTMLElement THTMLFrameElement
+ 
+instance CElement THTMLFrameElement
+ 
+instance CNode THTMLFrameElement
+ 
+instance CHTMLIFrameElement THTMLIFrameElement
+ 
+instance CHTMLElement THTMLIFrameElement
+ 
+instance CElement THTMLIFrameElement
+ 
+instance CNode THTMLIFrameElement
+ 
+instance CHTMLSubElement THTMLSubElement
+ 
+instance CHTMLElement THTMLSubElement
+ 
+instance CElement THTMLSubElement
+ 
+instance CNode THTMLSubElement
+ 
+instance CHTMLSupElement THTMLSupElement
+ 
+instance CHTMLElement THTMLSupElement
+ 
+instance CElement THTMLSupElement
+ 
+instance CNode THTMLSupElement
+ 
+instance CHTMLSpanElement THTMLSpanElement
+ 
+instance CHTMLElement THTMLSpanElement
+ 
+instance CElement THTMLSpanElement
+ 
+instance CNode THTMLSpanElement
+ 
+instance CHTMLBdoElement THTMLBdoElement
+ 
+instance CHTMLElement THTMLBdoElement
+ 
+instance CElement THTMLBdoElement
+ 
+instance CNode THTMLBdoElement
+ 
+instance CHTMLIElement THTMLIElement
+ 
+instance CHTMLElement THTMLIElement
+ 
+instance CElement THTMLIElement
+ 
+instance CNode THTMLIElement
+ 
+instance CHTMLBElement THTMLBElement
+ 
+instance CHTMLElement THTMLBElement
+ 
+instance CElement THTMLBElement
+ 
+instance CNode THTMLBElement
+ 
+instance CHTMLUElement THTMLUElement
+ 
+instance CHTMLElement THTMLUElement
+ 
+instance CElement THTMLUElement
+ 
+instance CNode THTMLUElement
+ 
+instance CHTMLSElement THTMLSElement
+ 
+instance CHTMLElement THTMLSElement
+ 
+instance CElement THTMLSElement
+ 
+instance CNode THTMLSElement
+ 
+instance CHTMLStrikeElement THTMLStrikeElement
+ 
+instance CHTMLElement THTMLStrikeElement
+ 
+instance CElement THTMLStrikeElement
+ 
+instance CNode THTMLStrikeElement
+ 
+instance CHTMLBigElement THTMLBigElement
+ 
+instance CHTMLElement THTMLBigElement
+ 
+instance CElement THTMLBigElement
+ 
+instance CNode THTMLBigElement
+ 
+instance CHTMLSmallElement THTMLSmallElement
+ 
+instance CHTMLElement THTMLSmallElement
+ 
+instance CElement THTMLSmallElement
+ 
+instance CNode THTMLSmallElement
+ 
+instance CHTMLEmElement THTMLEmElement
+ 
+instance CHTMLElement THTMLEmElement
+ 
+instance CElement THTMLEmElement
+ 
+instance CNode THTMLEmElement
+ 
+instance CHTMLStrongElement THTMLStrongElement
+ 
+instance CHTMLElement THTMLStrongElement
+ 
+instance CElement THTMLStrongElement
+ 
+instance CNode THTMLStrongElement
+ 
+instance CHTMLDfnElement THTMLDfnElement
+ 
+instance CHTMLElement THTMLDfnElement
+ 
+instance CElement THTMLDfnElement
+ 
+instance CNode THTMLDfnElement
+ 
+instance CHTMLCodeElement THTMLCodeElement
+ 
+instance CHTMLElement THTMLCodeElement
+ 
+instance CElement THTMLCodeElement
+ 
+instance CNode THTMLCodeElement
+ 
+instance CHTMLSampElement THTMLSampElement
+ 
+instance CHTMLElement THTMLSampElement
+ 
+instance CElement THTMLSampElement
+ 
+instance CNode THTMLSampElement
+ 
+instance CHTMLKbdElement THTMLKbdElement
+ 
+instance CHTMLElement THTMLKbdElement
+ 
+instance CElement THTMLKbdElement
+ 
+instance CNode THTMLKbdElement
+ 
+instance CHTMLVarElement THTMLVarElement
+ 
+instance CHTMLElement THTMLVarElement
+ 
+instance CElement THTMLVarElement
+ 
+instance CNode THTMLVarElement
+ 
+instance CHTMLCiteElement THTMLCiteElement
+ 
+instance CHTMLElement THTMLCiteElement
+ 
+instance CElement THTMLCiteElement
+ 
+instance CNode THTMLCiteElement
+ 
+instance CHTMLAcronymElement THTMLAcronymElement
+ 
+instance CHTMLElement THTMLAcronymElement
+ 
+instance CElement THTMLAcronymElement
+ 
+instance CNode THTMLAcronymElement
+ 
+instance CHTMLAbbrElement THTMLAbbrElement
+ 
+instance CHTMLElement THTMLAbbrElement
+ 
+instance CElement THTMLAbbrElement
+ 
+instance CNode THTMLAbbrElement
+ 
+instance CHTMLDdElement THTMLDdElement
+ 
+instance CHTMLElement THTMLDdElement
+ 
+instance CElement THTMLDdElement
+ 
+instance CNode THTMLDdElement
+ 
+instance CHTMLDtElement THTMLDtElement
+ 
+instance CHTMLElement THTMLDtElement
+ 
+instance CElement THTMLDtElement
+ 
+instance CNode THTMLDtElement
+ 
+instance CHTMLNoframesElement THTMLNoframesElement
+ 
+instance CHTMLElement THTMLNoframesElement
+ 
+instance CElement THTMLNoframesElement
+ 
+instance CNode THTMLNoframesElement
+ 
+instance CHTMLNoscriptElement THTMLNoscriptElement
+ 
+instance CHTMLElement THTMLNoscriptElement
+ 
+instance CElement THTMLNoscriptElement
+ 
+instance CNode THTMLNoscriptElement
+ 
+instance CHTMLAddressElement THTMLAddressElement
+ 
+instance CHTMLElement THTMLAddressElement
+ 
+instance CElement THTMLAddressElement
+ 
+instance CNode THTMLAddressElement
+ 
+instance CHTMLCenterElement THTMLCenterElement
+ 
+instance CHTMLElement THTMLCenterElement
+ 
+instance CElement THTMLCenterElement
+ 
+instance CNode THTMLCenterElement
+
diff --git a/Data/DOM/KeyEvent.hs b/Data/DOM/KeyEvent.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/KeyEvent.hs
@@ -0,0 +1,345 @@
+
+module Data.DOM.KeyEvent
+       (initKeyEvent, cCHAR_UNDEFINED, cDOM_VK_0, cDOM_VK_1, cDOM_VK_2,
+        cDOM_VK_3, cDOM_VK_4, cDOM_VK_5, cDOM_VK_6, cDOM_VK_7, cDOM_VK_8,
+        cDOM_VK_9, cDOM_VK_A, cDOM_VK_ACCEPT, cDOM_VK_ADD, cDOM_VK_AGAIN,
+        cDOM_VK_ALL_CANDIDATES, cDOM_VK_ALPHANUMERIC, cDOM_VK_ALT,
+        cDOM_VK_ALT_GRAPH, cDOM_VK_AMPERSAND, cDOM_VK_ASTERISK, cDOM_VK_AT,
+        cDOM_VK_B, cDOM_VK_BACK_QUOTE, cDOM_VK_BACK_SLASH,
+        cDOM_VK_BACK_SPACE, cDOM_VK_BRACELEFT, cDOM_VK_BRACERIGHT,
+        cDOM_VK_C, cDOM_VK_CANCEL, cDOM_VK_CAPS_LOCK, cDOM_VK_CIRCUMFLEX,
+        cDOM_VK_CLEAR, cDOM_VK_CLOSE_BRACKET, cDOM_VK_CODE_INPUT,
+        cDOM_VK_COLON, cDOM_VK_COMMA, cDOM_VK_COMPOSE, cDOM_VK_CONTROL,
+        cDOM_VK_CONVERT, cDOM_VK_COPY, cDOM_VK_CUT, cDOM_VK_D,
+        cDOM_VK_DEAD_ABOVEDOT, cDOM_VK_DEAD_ABOVERING, cDOM_VK_DEAD_ACUTE,
+        cDOM_VK_DEAD_BREVE, cDOM_VK_DEAD_CARON, cDOM_VK_DEAD_CEDILLA,
+        cDOM_VK_DEAD_CIRCUMFLEX, cDOM_VK_DEAD_DIAERESIS,
+        cDOM_VK_DEAD_DOUBLEACUTE, cDOM_VK_DEAD_GRAVE, cDOM_VK_DEAD_IOTA,
+        cDOM_VK_DEAD_MACRON, cDOM_VK_DEAD_OGONEK,
+        cDOM_VK_DEAD_SEMIVOICED_SOUND, cDOM_VK_DEAD_TILDE,
+        cDOM_VK_DEAD_VOICED_SOUND, cDOM_VK_DECIMAL, cDOM_VK_DELETE,
+        cDOM_VK_DIVIDE, cDOM_VK_DOLLAR, cDOM_VK_DOWN, cDOM_VK_E,
+        cDOM_VK_END, cDOM_VK_ENTER, cDOM_VK_EQUALS, cDOM_VK_ESCAPE,
+        cDOM_VK_EURO_SIGN, cDOM_VK_EXCLAMATION_MARK, cDOM_VK_F, cDOM_VK_F1,
+        cDOM_VK_F10, cDOM_VK_F11, cDOM_VK_F12, cDOM_VK_F13, cDOM_VK_F14,
+        cDOM_VK_F15, cDOM_VK_F16, cDOM_VK_F17, cDOM_VK_F18, cDOM_VK_F19,
+        cDOM_VK_F2, cDOM_VK_F20, cDOM_VK_F21, cDOM_VK_F22, cDOM_VK_F23,
+        cDOM_VK_F24, cDOM_VK_F3, cDOM_VK_F4, cDOM_VK_F5, cDOM_VK_F6,
+        cDOM_VK_F7, cDOM_VK_F8, cDOM_VK_F9, cDOM_VK_FINAL, cDOM_VK_FIND,
+        cDOM_VK_FULL_WIDTH, cDOM_VK_G, cDOM_VK_GREATER, cDOM_VK_H,
+        cDOM_VK_HALF_WIDTH, cDOM_VK_HELP, cDOM_VK_HIRAGANA, cDOM_VK_HOME,
+        cDOM_VK_I, cDOM_VK_INSERT, cDOM_VK_INVERTED_EXCLAMATION_MARK,
+        cDOM_VK_J, cDOM_VK_JAPANESE_HIRAGANA, cDOM_VK_JAPANESE_KATAKANA,
+        cDOM_VK_JAPANESE_ROMAN, cDOM_VK_K, cDOM_VK_KANA, cDOM_VK_KANJI,
+        cDOM_VK_KATAKANA, cDOM_VK_KP_DOWN, cDOM_VK_KP_LEFT,
+        cDOM_VK_KP_RIGHT, cDOM_VK_KP_UP, cDOM_VK_L, cDOM_VK_LEFT,
+        cDOM_VK_LEFT_PARENTHESIS, cDOM_VK_LESS, cDOM_VK_M, cDOM_VK_META,
+        cDOM_VK_MINUS, cDOM_VK_MODECHANGE, cDOM_VK_MULTIPLY, cDOM_VK_N,
+        cDOM_VK_NONCONVERT, cDOM_VK_NUM_LOCK, cDOM_VK_NUMBER_SIGN,
+        cDOM_VK_NUMPAD0, cDOM_VK_NUMPAD1, cDOM_VK_NUMPAD2, cDOM_VK_NUMPAD3,
+        cDOM_VK_NUMPAD4, cDOM_VK_NUMPAD5, cDOM_VK_NUMPAD6, cDOM_VK_NUMPAD7,
+        cDOM_VK_NUMPAD8, cDOM_VK_NUMPAD9, cDOM_VK_O, cDOM_VK_OPEN_BRACKET,
+        cDOM_VK_P, cDOM_VK_PAGE_DOWN, cDOM_VK_PAGE_UP, cDOM_VK_PASTE,
+        cDOM_VK_PAUSE, cDOM_VK_PERIOD, cDOM_VK_PLUS,
+        cDOM_VK_PREVIOUS_CANDIDATE, cDOM_VK_PRINTSCREEN, cDOM_VK_PROPS,
+        cDOM_VK_Q, cDOM_VK_QUOTE, cDOM_VK_QUOTEDBL, cDOM_VK_R,
+        cDOM_VK_RIGHT, cDOM_VK_RIGHT_PARENTHESIS, cDOM_VK_ROMAN_CHARACTERS,
+        cDOM_VK_S, cDOM_VK_SCROLL_LOCK, cDOM_VK_SEMICOLON,
+        cDOM_VK_SEPARATER, cDOM_VK_SHIFT, cDOM_VK_SLASH, cDOM_VK_SPACE,
+        cDOM_VK_STOP, cDOM_VK_SUBTRACT, cDOM_VK_T, cDOM_VK_TAB, cDOM_VK_U,
+        cDOM_VK_UNDEFINED, cDOM_VK_UNDERSCORE, cDOM_VK_UNDO, cDOM_VK_UP,
+        cDOM_VK_V, cDOM_VK_W, cDOM_VK_X, cDOM_VK_Y, cDOM_VK_Z, get'ctrlKey,
+        getm'ctrlKey, get'shiftKey, getm'shiftKey, get'altKey, getm'altKey,
+        get'metaKey, getm'metaKey, get'keyCode, getm'keyCode, get'charCode,
+        getm'charCode)
+       where
+import Data.DOM.Events
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Views
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+initKeyEvent ::
+             (Monad mn, CKeyEvent this, CAbstractView viewArg) =>
+               Expression String ->
+                 Expression Bool ->
+                   Expression Bool ->
+                     Expression Bool ->
+                       Expression Bool ->
+                         Expression Bool ->
+                           Expression Bool ->
+                             Expression Double ->
+                               Expression Double ->
+                                 Expression viewArg -> Expression this -> mn (Expression ())
+initKeyEvent a b c d e f g h i j thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "initKeyEvent")
+       return
+         (CallExpr et r
+            [a /\ et, b /\ et, c /\ et, d /\ et, e /\ et, f /\ et, g /\ et,
+             h /\ et, i /\ et, j /\ et])
+cCHAR_UNDEFINED = 65535
+cDOM_VK_0 = 48
+cDOM_VK_1 = 49
+cDOM_VK_2 = 50
+cDOM_VK_3 = 51
+cDOM_VK_4 = 52
+cDOM_VK_5 = 53
+cDOM_VK_6 = 54
+cDOM_VK_7 = 55
+cDOM_VK_8 = 56
+cDOM_VK_9 = 57
+cDOM_VK_A = 65
+cDOM_VK_ACCEPT = 30
+cDOM_VK_ADD = 107
+cDOM_VK_AGAIN = 65481
+cDOM_VK_ALL_CANDIDATES = 256
+cDOM_VK_ALPHANUMERIC = 240
+cDOM_VK_ALT = 18
+cDOM_VK_ALT_GRAPH = 65406
+cDOM_VK_AMPERSAND = 150
+cDOM_VK_ASTERISK = 151
+cDOM_VK_AT = 512
+cDOM_VK_B = 66
+cDOM_VK_BACK_QUOTE = 192
+cDOM_VK_BACK_SLASH = 92
+cDOM_VK_BACK_SPACE = 8
+cDOM_VK_BRACELEFT = 161
+cDOM_VK_BRACERIGHT = 162
+cDOM_VK_C = 67
+cDOM_VK_CANCEL = 3
+cDOM_VK_CAPS_LOCK = 20
+cDOM_VK_CIRCUMFLEX = 514
+cDOM_VK_CLEAR = 12
+cDOM_VK_CLOSE_BRACKET = 93
+cDOM_VK_CODE_INPUT = 258
+cDOM_VK_COLON = 513
+cDOM_VK_COMMA = 44
+cDOM_VK_COMPOSE = 65312
+cDOM_VK_CONTROL = 17
+cDOM_VK_CONVERT = 28
+cDOM_VK_COPY = 65485
+cDOM_VK_CUT = 65489
+cDOM_VK_D = 68
+cDOM_VK_DEAD_ABOVEDOT = 134
+cDOM_VK_DEAD_ABOVERING = 136
+cDOM_VK_DEAD_ACUTE = 129
+cDOM_VK_DEAD_BREVE = 133
+cDOM_VK_DEAD_CARON = 138
+cDOM_VK_DEAD_CEDILLA = 139
+cDOM_VK_DEAD_CIRCUMFLEX = 130
+cDOM_VK_DEAD_DIAERESIS = 135
+cDOM_VK_DEAD_DOUBLEACUTE = 137
+cDOM_VK_DEAD_GRAVE = 128
+cDOM_VK_DEAD_IOTA = 141
+cDOM_VK_DEAD_MACRON = 132
+cDOM_VK_DEAD_OGONEK = 140
+cDOM_VK_DEAD_SEMIVOICED_SOUND = 143
+cDOM_VK_DEAD_TILDE = 131
+cDOM_VK_DEAD_VOICED_SOUND = 142
+cDOM_VK_DECIMAL = 110
+cDOM_VK_DELETE = 127
+cDOM_VK_DIVIDE = 111
+cDOM_VK_DOLLAR = 515
+cDOM_VK_DOWN = 40
+cDOM_VK_E = 69
+cDOM_VK_END = 35
+cDOM_VK_ENTER = 13
+cDOM_VK_EQUALS = 61
+cDOM_VK_ESCAPE = 27
+cDOM_VK_EURO_SIGN = 516
+cDOM_VK_EXCLAMATION_MARK = 517
+cDOM_VK_F = 70
+cDOM_VK_F1 = 112
+cDOM_VK_F10 = 121
+cDOM_VK_F11 = 122
+cDOM_VK_F12 = 123
+cDOM_VK_F13 = 61440
+cDOM_VK_F14 = 61441
+cDOM_VK_F15 = 61442
+cDOM_VK_F16 = 61443
+cDOM_VK_F17 = 61444
+cDOM_VK_F18 = 61445
+cDOM_VK_F19 = 61446
+cDOM_VK_F2 = 113
+cDOM_VK_F20 = 61447
+cDOM_VK_F21 = 61448
+cDOM_VK_F22 = 61449
+cDOM_VK_F23 = 61450
+cDOM_VK_F24 = 61451
+cDOM_VK_F3 = 114
+cDOM_VK_F4 = 115
+cDOM_VK_F5 = 116
+cDOM_VK_F6 = 117
+cDOM_VK_F7 = 118
+cDOM_VK_F8 = 119
+cDOM_VK_F9 = 120
+cDOM_VK_FINAL = 24
+cDOM_VK_FIND = 65488
+cDOM_VK_FULL_WIDTH = 243
+cDOM_VK_G = 71
+cDOM_VK_GREATER = 160
+cDOM_VK_H = 72
+cDOM_VK_HALF_WIDTH = 244
+cDOM_VK_HELP = 156
+cDOM_VK_HIRAGANA = 242
+cDOM_VK_HOME = 36
+cDOM_VK_I = 73
+cDOM_VK_INSERT = 155
+cDOM_VK_INVERTED_EXCLAMATION_MARK = 518
+cDOM_VK_J = 74
+cDOM_VK_JAPANESE_HIRAGANA = 260
+cDOM_VK_JAPANESE_KATAKANA = 259
+cDOM_VK_JAPANESE_ROMAN = 261
+cDOM_VK_K = 75
+cDOM_VK_KANA = 21
+cDOM_VK_KANJI = 25
+cDOM_VK_KATAKANA = 241
+cDOM_VK_KP_DOWN = 225
+cDOM_VK_KP_LEFT = 226
+cDOM_VK_KP_RIGHT = 227
+cDOM_VK_KP_UP = 224
+cDOM_VK_L = 76
+cDOM_VK_LEFT = 37
+cDOM_VK_LEFT_PARENTHESIS = 519
+cDOM_VK_LESS = 153
+cDOM_VK_M = 77
+cDOM_VK_META = 157
+cDOM_VK_MINUS = 45
+cDOM_VK_MODECHANGE = 31
+cDOM_VK_MULTIPLY = 106
+cDOM_VK_N = 78
+cDOM_VK_NONCONVERT = 29
+cDOM_VK_NUM_LOCK = 144
+cDOM_VK_NUMBER_SIGN = 520
+cDOM_VK_NUMPAD0 = 96
+cDOM_VK_NUMPAD1 = 97
+cDOM_VK_NUMPAD2 = 98
+cDOM_VK_NUMPAD3 = 99
+cDOM_VK_NUMPAD4 = 100
+cDOM_VK_NUMPAD5 = 101
+cDOM_VK_NUMPAD6 = 102
+cDOM_VK_NUMPAD7 = 103
+cDOM_VK_NUMPAD8 = 104
+cDOM_VK_NUMPAD9 = 105
+cDOM_VK_O = 79
+cDOM_VK_OPEN_BRACKET = 91
+cDOM_VK_P = 80
+cDOM_VK_PAGE_DOWN = 34
+cDOM_VK_PAGE_UP = 33
+cDOM_VK_PASTE = 65487
+cDOM_VK_PAUSE = 19
+cDOM_VK_PERIOD = 46
+cDOM_VK_PLUS = 521
+cDOM_VK_PREVIOUS_CANDIDATE = 257
+cDOM_VK_PRINTSCREEN = 154
+cDOM_VK_PROPS = 65482
+cDOM_VK_Q = 81
+cDOM_VK_QUOTE = 222
+cDOM_VK_QUOTEDBL = 152
+cDOM_VK_R = 82
+cDOM_VK_RIGHT = 39
+cDOM_VK_RIGHT_PARENTHESIS = 522
+cDOM_VK_ROMAN_CHARACTERS = 245
+cDOM_VK_S = 83
+cDOM_VK_SCROLL_LOCK = 145
+cDOM_VK_SEMICOLON = 59
+cDOM_VK_SEPARATER = 108
+cDOM_VK_SHIFT = 16
+cDOM_VK_SLASH = 47
+cDOM_VK_SPACE = 32
+cDOM_VK_STOP = 65480
+cDOM_VK_SUBTRACT = 109
+cDOM_VK_T = 84
+cDOM_VK_TAB = 9
+cDOM_VK_U = 85
+cDOM_VK_UNDEFINED = 0
+cDOM_VK_UNDERSCORE = 523
+cDOM_VK_UNDO = 65483
+cDOM_VK_UP = 38
+cDOM_VK_V = 86
+cDOM_VK_W = 87
+cDOM_VK_X = 88
+cDOM_VK_Y = 89
+cDOM_VK_Z = 90
+ 
+get'ctrlKey ::
+            (Monad mn, CKeyEvent this) =>
+              Expression this -> mn (Expression Bool)
+get'ctrlKey thisp
+  = do let et = undefined :: Bool
+       let r = DotRef et (thisp /\ et) (Id et "ctrlKey")
+       return r
+ 
+getm'ctrlKey ::
+             (Monad mn, CKeyEvent this) =>
+               Expression this -> mn (Expression Bool)
+getm'ctrlKey = get'ctrlKey
+ 
+get'shiftKey ::
+             (Monad mn, CKeyEvent this) =>
+               Expression this -> mn (Expression Bool)
+get'shiftKey thisp
+  = do let et = undefined :: Bool
+       let r = DotRef et (thisp /\ et) (Id et "shiftKey")
+       return r
+ 
+getm'shiftKey ::
+              (Monad mn, CKeyEvent this) =>
+                Expression this -> mn (Expression Bool)
+getm'shiftKey = get'shiftKey
+ 
+get'altKey ::
+           (Monad mn, CKeyEvent this) =>
+             Expression this -> mn (Expression Bool)
+get'altKey thisp
+  = do let et = undefined :: Bool
+       let r = DotRef et (thisp /\ et) (Id et "altKey")
+       return r
+ 
+getm'altKey ::
+            (Monad mn, CKeyEvent this) =>
+              Expression this -> mn (Expression Bool)
+getm'altKey = get'altKey
+ 
+get'metaKey ::
+            (Monad mn, CKeyEvent this) =>
+              Expression this -> mn (Expression Bool)
+get'metaKey thisp
+  = do let et = undefined :: Bool
+       let r = DotRef et (thisp /\ et) (Id et "metaKey")
+       return r
+ 
+getm'metaKey ::
+             (Monad mn, CKeyEvent this) =>
+               Expression this -> mn (Expression Bool)
+getm'metaKey = get'metaKey
+ 
+get'keyCode ::
+            (Monad mn, CKeyEvent this) =>
+              Expression this -> mn (Expression Double)
+get'keyCode thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "keyCode")
+       return r
+ 
+getm'keyCode ::
+             (Monad mn, CKeyEvent this) =>
+               Expression this -> mn (Expression Double)
+getm'keyCode = get'keyCode
+ 
+get'charCode ::
+             (Monad mn, CKeyEvent this) =>
+               Expression this -> mn (Expression Double)
+get'charCode thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "charCode")
+       return r
+ 
+getm'charCode ::
+              (Monad mn, CKeyEvent this) =>
+                Expression this -> mn (Expression Double)
+getm'charCode = get'charCode
+
diff --git a/Data/DOM/KeyboardEvent.hs b/Data/DOM/KeyboardEvent.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/KeyboardEvent.hs
@@ -0,0 +1,123 @@
+
+module Data.DOM.KeyboardEvent
+       (getModifierState, initKeyboardEvent, cDOM_KEY_LOCATION_STANDARD,
+        cDOM_KEY_LOCATION_LEFT, cDOM_KEY_LOCATION_RIGHT,
+        cDOM_KEY_LOCATION_NUMPAD, get'keyIdentifier, getm'keyIdentifier,
+        get'keyLocation, getm'keyLocation, get'ctrlKey, getm'ctrlKey,
+        get'shiftKey, getm'shiftKey, get'altKey, getm'altKey, get'metaKey,
+        getm'metaKey)
+       where
+import Data.DOM.Events
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Views
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+getModifierState ::
+                 (Monad mn, CKeyboardEvent this) =>
+                   Expression String -> Expression this -> mn (Expression Bool)
+getModifierState a thisp
+  = do let et = undefined :: Bool
+       let r = DotRef et (thisp /\ et) (Id et "getModifierState")
+       return (CallExpr et r [a /\ et])
+ 
+initKeyboardEvent ::
+                  (Monad mn, CKeyboardEvent this, CAbstractView viewArg) =>
+                    Expression String ->
+                      Expression Bool ->
+                        Expression Bool ->
+                          Expression viewArg ->
+                            Expression String ->
+                              Expression Double ->
+                                Expression String -> Expression this -> mn (Expression ())
+initKeyboardEvent a b c d e f g thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "initKeyboardEvent")
+       return
+         (CallExpr et r
+            [a /\ et, b /\ et, c /\ et, d /\ et, e /\ et, f /\ et, g /\ et])
+cDOM_KEY_LOCATION_STANDARD = 0
+cDOM_KEY_LOCATION_LEFT = 1
+cDOM_KEY_LOCATION_RIGHT = 2
+cDOM_KEY_LOCATION_NUMPAD = 3
+ 
+get'keyIdentifier ::
+                  (Monad mn, CKeyboardEvent this) =>
+                    Expression this -> mn (Expression String)
+get'keyIdentifier thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "keyIdentifier")
+       return r
+ 
+getm'keyIdentifier ::
+                   (Monad mn, CKeyboardEvent this) =>
+                     Expression this -> mn (Expression String)
+getm'keyIdentifier = get'keyIdentifier
+ 
+get'keyLocation ::
+                (Monad mn, CKeyboardEvent this) =>
+                  Expression this -> mn (Expression Double)
+get'keyLocation thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "keyLocation")
+       return r
+ 
+getm'keyLocation ::
+                 (Monad mn, CKeyboardEvent this) =>
+                   Expression this -> mn (Expression Double)
+getm'keyLocation = get'keyLocation
+ 
+get'ctrlKey ::
+            (Monad mn, CKeyboardEvent this) =>
+              Expression this -> mn (Expression Bool)
+get'ctrlKey thisp
+  = do let et = undefined :: Bool
+       let r = DotRef et (thisp /\ et) (Id et "ctrlKey")
+       return r
+ 
+getm'ctrlKey ::
+             (Monad mn, CKeyboardEvent this) =>
+               Expression this -> mn (Expression Bool)
+getm'ctrlKey = get'ctrlKey
+ 
+get'shiftKey ::
+             (Monad mn, CKeyboardEvent this) =>
+               Expression this -> mn (Expression Bool)
+get'shiftKey thisp
+  = do let et = undefined :: Bool
+       let r = DotRef et (thisp /\ et) (Id et "shiftKey")
+       return r
+ 
+getm'shiftKey ::
+              (Monad mn, CKeyboardEvent this) =>
+                Expression this -> mn (Expression Bool)
+getm'shiftKey = get'shiftKey
+ 
+get'altKey ::
+           (Monad mn, CKeyboardEvent this) =>
+             Expression this -> mn (Expression Bool)
+get'altKey thisp
+  = do let et = undefined :: Bool
+       let r = DotRef et (thisp /\ et) (Id et "altKey")
+       return r
+ 
+getm'altKey ::
+            (Monad mn, CKeyboardEvent this) =>
+              Expression this -> mn (Expression Bool)
+getm'altKey = get'altKey
+ 
+get'metaKey ::
+            (Monad mn, CKeyboardEvent this) =>
+              Expression this -> mn (Expression Bool)
+get'metaKey thisp
+  = do let et = undefined :: Bool
+       let r = DotRef et (thisp /\ et) (Id et "metaKey")
+       return r
+ 
+getm'metaKey ::
+             (Monad mn, CKeyboardEvent this) =>
+               Expression this -> mn (Expression Bool)
+getm'metaKey = get'metaKey
+
diff --git a/Data/DOM/LinkStyle.hs b/Data/DOM/LinkStyle.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/LinkStyle.hs
@@ -0,0 +1,22 @@
+
+module Data.DOM.LinkStyle (get'sheet, getm'sheet) where
+import Data.DOM.Stylesheets
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+get'sheet ::
+          (Monad mn, CLinkStyle this, CStyleSheet zz) =>
+            Expression this -> mn (Expression zz)
+get'sheet thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "sheet")
+       return r
+ 
+getm'sheet ::
+           (Monad mn, CLinkStyle this) =>
+             Expression this -> mn (Expression TStyleSheet)
+getm'sheet = get'sheet
+
diff --git a/Data/DOM/Location.hs b/Data/DOM/Location.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/Location.hs
@@ -0,0 +1,192 @@
+
+module Data.DOM.Location
+       (assign, replace, reload, toString, set'href, get'href, getm'href,
+        set'hash, get'hash, getm'hash, set'host, get'host, getm'host,
+        set'hostname, get'hostname, getm'hostname, set'pathname,
+        get'pathname, getm'pathname, set'port, get'port, getm'port,
+        set'protocol, get'protocol, getm'protocol, set'search, get'search,
+        getm'search)
+       where
+import Data.DOM.WindowObj
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Views
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+assign ::
+       (Monad mn, CLocation this) =>
+         Expression String -> Expression this -> mn (Expression ())
+assign a thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "assign")
+       return (CallExpr et r [a /\ et])
+ 
+replace ::
+        (Monad mn, CLocation this) =>
+          Expression String -> Expression this -> mn (Expression ())
+replace a thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "replace")
+       return (CallExpr et r [a /\ et])
+ 
+reload ::
+       (Monad mn, CLocation this) => Expression this -> mn (Expression ())
+reload thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "reload")
+       return (CallExpr et r [])
+ 
+toString ::
+         (Monad mn, CLocation this) =>
+           Expression this -> mn (Expression String)
+toString thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "toString")
+       return (CallExpr et r [])
+ 
+set'href ::
+         (Monad mn, CLocation zz) =>
+           Expression String -> Expression zz -> mn (Expression zz)
+set'href = setjsProperty "href"
+ 
+get'href ::
+         (Monad mn, CLocation this) =>
+           Expression this -> mn (Expression String)
+get'href thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "href")
+       return r
+ 
+getm'href ::
+          (Monad mn, CLocation this) =>
+            Expression this -> mn (Expression String)
+getm'href = get'href
+ 
+set'hash ::
+         (Monad mn, CLocation zz) =>
+           Expression String -> Expression zz -> mn (Expression zz)
+set'hash = setjsProperty "hash"
+ 
+get'hash ::
+         (Monad mn, CLocation this) =>
+           Expression this -> mn (Expression String)
+get'hash thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "hash")
+       return r
+ 
+getm'hash ::
+          (Monad mn, CLocation this) =>
+            Expression this -> mn (Expression String)
+getm'hash = get'hash
+ 
+set'host ::
+         (Monad mn, CLocation zz) =>
+           Expression String -> Expression zz -> mn (Expression zz)
+set'host = setjsProperty "host"
+ 
+get'host ::
+         (Monad mn, CLocation this) =>
+           Expression this -> mn (Expression String)
+get'host thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "host")
+       return r
+ 
+getm'host ::
+          (Monad mn, CLocation this) =>
+            Expression this -> mn (Expression String)
+getm'host = get'host
+ 
+set'hostname ::
+             (Monad mn, CLocation zz) =>
+               Expression String -> Expression zz -> mn (Expression zz)
+set'hostname = setjsProperty "hostname"
+ 
+get'hostname ::
+             (Monad mn, CLocation this) =>
+               Expression this -> mn (Expression String)
+get'hostname thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "hostname")
+       return r
+ 
+getm'hostname ::
+              (Monad mn, CLocation this) =>
+                Expression this -> mn (Expression String)
+getm'hostname = get'hostname
+ 
+set'pathname ::
+             (Monad mn, CLocation zz) =>
+               Expression String -> Expression zz -> mn (Expression zz)
+set'pathname = setjsProperty "pathname"
+ 
+get'pathname ::
+             (Monad mn, CLocation this) =>
+               Expression this -> mn (Expression String)
+get'pathname thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "pathname")
+       return r
+ 
+getm'pathname ::
+              (Monad mn, CLocation this) =>
+                Expression this -> mn (Expression String)
+getm'pathname = get'pathname
+ 
+set'port ::
+         (Monad mn, CLocation zz) =>
+           Expression String -> Expression zz -> mn (Expression zz)
+set'port = setjsProperty "port"
+ 
+get'port ::
+         (Monad mn, CLocation this) =>
+           Expression this -> mn (Expression String)
+get'port thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "port")
+       return r
+ 
+getm'port ::
+          (Monad mn, CLocation this) =>
+            Expression this -> mn (Expression String)
+getm'port = get'port
+ 
+set'protocol ::
+             (Monad mn, CLocation zz) =>
+               Expression String -> Expression zz -> mn (Expression zz)
+set'protocol = setjsProperty "protocol"
+ 
+get'protocol ::
+             (Monad mn, CLocation this) =>
+               Expression this -> mn (Expression String)
+get'protocol thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "protocol")
+       return r
+ 
+getm'protocol ::
+              (Monad mn, CLocation this) =>
+                Expression this -> mn (Expression String)
+getm'protocol = get'protocol
+ 
+set'search ::
+           (Monad mn, CLocation zz) =>
+             Expression String -> Expression zz -> mn (Expression zz)
+set'search = setjsProperty "search"
+ 
+get'search ::
+           (Monad mn, CLocation this) =>
+             Expression this -> mn (Expression String)
+get'search thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "search")
+       return r
+ 
+getm'search ::
+            (Monad mn, CLocation this) =>
+              Expression this -> mn (Expression String)
+getm'search = get'search
+
diff --git a/Data/DOM/MediaList.hs b/Data/DOM/MediaList.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/MediaList.hs
@@ -0,0 +1,67 @@
+
+module Data.DOM.MediaList
+       (item, deleteMedium, appendMedium, set'mediaText, get'mediaText,
+        getm'mediaText, get'length, getm'length)
+       where
+import Data.DOM.Stylesheets
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+item ::
+     (Monad mn, CMediaList this) =>
+       Expression Double -> Expression this -> mn (Expression String)
+item a thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "item")
+       return (CallExpr et r [a /\ et])
+ 
+deleteMedium ::
+             (Monad mn, CMediaList this) =>
+               Expression String -> Expression this -> mn (Expression ())
+deleteMedium a thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "deleteMedium")
+       return (CallExpr et r [a /\ et])
+ 
+appendMedium ::
+             (Monad mn, CMediaList this) =>
+               Expression String -> Expression this -> mn (Expression ())
+appendMedium a thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "appendMedium")
+       return (CallExpr et r [a /\ et])
+ 
+set'mediaText ::
+              (Monad mn, CMediaList zz) =>
+                Expression String -> Expression zz -> mn (Expression zz)
+set'mediaText = setjsProperty "mediaText"
+ 
+get'mediaText ::
+              (Monad mn, CMediaList this) =>
+                Expression this -> mn (Expression String)
+get'mediaText thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "mediaText")
+       return r
+ 
+getm'mediaText ::
+               (Monad mn, CMediaList this) =>
+                 Expression this -> mn (Expression String)
+getm'mediaText = get'mediaText
+ 
+get'length ::
+           (Monad mn, CMediaList this) =>
+             Expression this -> mn (Expression Double)
+get'length thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "length")
+       return r
+ 
+getm'length ::
+            (Monad mn, CMediaList this) =>
+              Expression this -> mn (Expression Double)
+getm'length = get'length
+
diff --git a/Data/DOM/MouseEvent.hs b/Data/DOM/MouseEvent.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/MouseEvent.hs
@@ -0,0 +1,174 @@
+
+module Data.DOM.MouseEvent
+       (initMouseEvent, get'screenX, getm'screenX, get'screenY,
+        getm'screenY, get'clientX, getm'clientX, get'clientY, getm'clientY,
+        get'ctrlKey, getm'ctrlKey, get'shiftKey, getm'shiftKey, get'altKey,
+        getm'altKey, get'metaKey, getm'metaKey, get'button, getm'button,
+        get'relatedTarget, getm'relatedTarget)
+       where
+import Data.DOM.Events
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Views
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+initMouseEvent ::
+               (Monad mn, CMouseEvent this, CAbstractView viewArg,
+                CEventTarget relatedTargetArg) =>
+                 Expression String ->
+                   Expression Bool ->
+                     Expression Bool ->
+                       Expression viewArg ->
+                         Expression Double ->
+                           Expression Double ->
+                             Expression Double ->
+                               Expression Double ->
+                                 Expression Double ->
+                                   Expression Bool ->
+                                     Expression Bool ->
+                                       Expression Bool ->
+                                         Expression Bool ->
+                                           Expression Double ->
+                                             Expression relatedTargetArg ->
+                                               Expression this -> mn (Expression ())
+initMouseEvent a b c d e f g h i j k l m n o thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "initMouseEvent")
+       return
+         (CallExpr et r
+            [a /\ et, b /\ et, c /\ et, d /\ et, e /\ et, f /\ et, g /\ et,
+             h /\ et, i /\ et, j /\ et, k /\ et, l /\ et, m /\ et, n /\ et,
+             o /\ et])
+ 
+get'screenX ::
+            (Monad mn, CMouseEvent this) =>
+              Expression this -> mn (Expression Double)
+get'screenX thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "screenX")
+       return r
+ 
+getm'screenX ::
+             (Monad mn, CMouseEvent this) =>
+               Expression this -> mn (Expression Double)
+getm'screenX = get'screenX
+ 
+get'screenY ::
+            (Monad mn, CMouseEvent this) =>
+              Expression this -> mn (Expression Double)
+get'screenY thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "screenY")
+       return r
+ 
+getm'screenY ::
+             (Monad mn, CMouseEvent this) =>
+               Expression this -> mn (Expression Double)
+getm'screenY = get'screenY
+ 
+get'clientX ::
+            (Monad mn, CMouseEvent this) =>
+              Expression this -> mn (Expression Double)
+get'clientX thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "clientX")
+       return r
+ 
+getm'clientX ::
+             (Monad mn, CMouseEvent this) =>
+               Expression this -> mn (Expression Double)
+getm'clientX = get'clientX
+ 
+get'clientY ::
+            (Monad mn, CMouseEvent this) =>
+              Expression this -> mn (Expression Double)
+get'clientY thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "clientY")
+       return r
+ 
+getm'clientY ::
+             (Monad mn, CMouseEvent this) =>
+               Expression this -> mn (Expression Double)
+getm'clientY = get'clientY
+ 
+get'ctrlKey ::
+            (Monad mn, CMouseEvent this) =>
+              Expression this -> mn (Expression Bool)
+get'ctrlKey thisp
+  = do let et = undefined :: Bool
+       let r = DotRef et (thisp /\ et) (Id et "ctrlKey")
+       return r
+ 
+getm'ctrlKey ::
+             (Monad mn, CMouseEvent this) =>
+               Expression this -> mn (Expression Bool)
+getm'ctrlKey = get'ctrlKey
+ 
+get'shiftKey ::
+             (Monad mn, CMouseEvent this) =>
+               Expression this -> mn (Expression Bool)
+get'shiftKey thisp
+  = do let et = undefined :: Bool
+       let r = DotRef et (thisp /\ et) (Id et "shiftKey")
+       return r
+ 
+getm'shiftKey ::
+              (Monad mn, CMouseEvent this) =>
+                Expression this -> mn (Expression Bool)
+getm'shiftKey = get'shiftKey
+ 
+get'altKey ::
+           (Monad mn, CMouseEvent this) =>
+             Expression this -> mn (Expression Bool)
+get'altKey thisp
+  = do let et = undefined :: Bool
+       let r = DotRef et (thisp /\ et) (Id et "altKey")
+       return r
+ 
+getm'altKey ::
+            (Monad mn, CMouseEvent this) =>
+              Expression this -> mn (Expression Bool)
+getm'altKey = get'altKey
+ 
+get'metaKey ::
+            (Monad mn, CMouseEvent this) =>
+              Expression this -> mn (Expression Bool)
+get'metaKey thisp
+  = do let et = undefined :: Bool
+       let r = DotRef et (thisp /\ et) (Id et "metaKey")
+       return r
+ 
+getm'metaKey ::
+             (Monad mn, CMouseEvent this) =>
+               Expression this -> mn (Expression Bool)
+getm'metaKey = get'metaKey
+ 
+get'button ::
+           (Monad mn, CMouseEvent this) =>
+             Expression this -> mn (Expression Double)
+get'button thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "button")
+       return r
+ 
+getm'button ::
+            (Monad mn, CMouseEvent this) =>
+              Expression this -> mn (Expression Double)
+getm'button = get'button
+ 
+get'relatedTarget ::
+                  (Monad mn, CMouseEvent this, CEventTarget zz) =>
+                    Expression this -> mn (Expression zz)
+get'relatedTarget thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "relatedTarget")
+       return r
+ 
+getm'relatedTarget ::
+                   (Monad mn, CMouseEvent this) =>
+                     Expression this -> mn (Expression TEventTarget)
+getm'relatedTarget = get'relatedTarget
+
diff --git a/Data/DOM/MutationEvent.hs b/Data/DOM/MutationEvent.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/MutationEvent.hs
@@ -0,0 +1,101 @@
+
+module Data.DOM.MutationEvent
+       (initMutationEvent, cMODIFICATION, cADDITION, cREMOVAL,
+        get'relatedNode, getm'relatedNode, get'prevValue, getm'prevValue,
+        get'newValue, getm'newValue, get'attrName, getm'attrName,
+        get'attrChange, getm'attrChange)
+       where
+import Data.DOM.Events
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Views
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+initMutationEvent ::
+                  (Monad mn, CMutationEvent this, CNode relatedNodeArg) =>
+                    Expression String ->
+                      Expression Bool ->
+                        Expression Bool ->
+                          Expression relatedNodeArg ->
+                            Expression String ->
+                              Expression String ->
+                                Expression String ->
+                                  Expression Double -> Expression this -> mn (Expression ())
+initMutationEvent a b c d e f g h thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "initMutationEvent")
+       return
+         (CallExpr et r
+            [a /\ et, b /\ et, c /\ et, d /\ et, e /\ et, f /\ et, g /\ et,
+             h /\ et])
+cMODIFICATION = 1
+cADDITION = 2
+cREMOVAL = 3
+ 
+get'relatedNode ::
+                (Monad mn, CMutationEvent this, CNode zz) =>
+                  Expression this -> mn (Expression zz)
+get'relatedNode thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "relatedNode")
+       return r
+ 
+getm'relatedNode ::
+                 (Monad mn, CMutationEvent this) =>
+                   Expression this -> mn (Expression TNode)
+getm'relatedNode = get'relatedNode
+ 
+get'prevValue ::
+              (Monad mn, CMutationEvent this) =>
+                Expression this -> mn (Expression String)
+get'prevValue thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "prevValue")
+       return r
+ 
+getm'prevValue ::
+               (Monad mn, CMutationEvent this) =>
+                 Expression this -> mn (Expression String)
+getm'prevValue = get'prevValue
+ 
+get'newValue ::
+             (Monad mn, CMutationEvent this) =>
+               Expression this -> mn (Expression String)
+get'newValue thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "newValue")
+       return r
+ 
+getm'newValue ::
+              (Monad mn, CMutationEvent this) =>
+                Expression this -> mn (Expression String)
+getm'newValue = get'newValue
+ 
+get'attrName ::
+             (Monad mn, CMutationEvent this) =>
+               Expression this -> mn (Expression String)
+get'attrName thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "attrName")
+       return r
+ 
+getm'attrName ::
+              (Monad mn, CMutationEvent this) =>
+                Expression this -> mn (Expression String)
+getm'attrName = get'attrName
+ 
+get'attrChange ::
+               (Monad mn, CMutationEvent this) =>
+                 Expression this -> mn (Expression Double)
+get'attrChange thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "attrChange")
+       return r
+ 
+getm'attrChange ::
+                (Monad mn, CMutationEvent this) =>
+                  Expression this -> mn (Expression Double)
+getm'attrChange = get'attrChange
+
diff --git a/Data/DOM/NamedNodeMap.hs b/Data/DOM/NamedNodeMap.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/NamedNodeMap.hs
@@ -0,0 +1,82 @@
+
+module Data.DOM.NamedNodeMap
+       (getNamedItem, setNamedItem, removeNamedItem, item, getNamedItemNS,
+        setNamedItemNS, removeNamedItemNS, get'length, getm'length)
+       where
+import Data.DOM.Dom
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Document (createElement)
+ 
+getNamedItem ::
+             (Monad mn, CNamedNodeMap this, CNode zz) =>
+               Expression String -> Expression this -> mn (Expression zz)
+getNamedItem a thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "getNamedItem")
+       return (CallExpr et r [a /\ et])
+ 
+setNamedItem ::
+             (Monad mn, CNamedNodeMap this, CNode arg, CNode zz) =>
+               Expression arg -> Expression this -> mn (Expression zz)
+setNamedItem a thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "setNamedItem")
+       return (CallExpr et r [a /\ et])
+ 
+removeNamedItem ::
+                (Monad mn, CNamedNodeMap this, CNode zz) =>
+                  Expression String -> Expression this -> mn (Expression zz)
+removeNamedItem a thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "removeNamedItem")
+       return (CallExpr et r [a /\ et])
+ 
+item ::
+     (Monad mn, CNamedNodeMap this, CNode zz) =>
+       Expression Double -> Expression this -> mn (Expression zz)
+item a thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "item")
+       return (CallExpr et r [a /\ et])
+ 
+getNamedItemNS ::
+               (Monad mn, CNamedNodeMap this, CNode zz) =>
+                 Expression String ->
+                   Expression String -> Expression this -> mn (Expression zz)
+getNamedItemNS a b thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "getNamedItemNS")
+       return (CallExpr et r [a /\ et, b /\ et])
+ 
+setNamedItemNS ::
+               (Monad mn, CNamedNodeMap this, CNode arg, CNode zz) =>
+                 Expression arg -> Expression this -> mn (Expression zz)
+setNamedItemNS a thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "setNamedItemNS")
+       return (CallExpr et r [a /\ et])
+ 
+removeNamedItemNS ::
+                  (Monad mn, CNamedNodeMap this, CNode zz) =>
+                    Expression String ->
+                      Expression String -> Expression this -> mn (Expression zz)
+removeNamedItemNS a b thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "removeNamedItemNS")
+       return (CallExpr et r [a /\ et, b /\ et])
+ 
+get'length ::
+           (Monad mn, CNamedNodeMap this) =>
+             Expression this -> mn (Expression Double)
+get'length thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "length")
+       return r
+ 
+getm'length ::
+            (Monad mn, CNamedNodeMap this) =>
+              Expression this -> mn (Expression Double)
+getm'length = get'length
+
diff --git a/Data/DOM/Node.hs b/Data/DOM/Node.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/Node.hs
@@ -0,0 +1,282 @@
+
+module Data.DOM.Node
+       (insertBefore, replaceChild, removeChild, appendChild,
+        hasChildNodes, cloneNode, normalize, isSupported, hasAttributes,
+        cELEMENT_NODE, cATTRIBUTE_NODE, cTEXT_NODE, cCDATA_SECTION_NODE,
+        cENTITY_REFERENCE_NODE, cENTITY_NODE, cPROCESSING_INSTRUCTION_NODE,
+        cCOMMENT_NODE, cDOCUMENT_NODE, cDOCUMENT_TYPE_NODE,
+        cDOCUMENT_FRAGMENT_NODE, cNOTATION_NODE, get'nodeName,
+        getm'nodeName, set'nodeValue, get'nodeValue, getm'nodeValue,
+        get'nodeType, getm'nodeType, get'parentNode, getm'parentNode,
+        get'childNodes, getm'childNodes, get'firstChild, getm'firstChild,
+        get'lastChild, getm'lastChild, get'previousSibling,
+        getm'previousSibling, get'nextSibling, getm'nextSibling,
+        get'attributes, getm'attributes, get'ownerDocument,
+        getm'ownerDocument, get'namespaceURI, getm'namespaceURI,
+        set'prefix, get'prefix, getm'prefix, get'localName, getm'localName)
+       where
+import Data.DOM.Dom
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Document (createElement)
+ 
+insertBefore ::
+             (Monad mn, CNode this, CNode newChild, CNode refChild, CNode zz) =>
+               Expression newChild ->
+                 Expression refChild -> Expression this -> mn (Expression zz)
+insertBefore a b thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "insertBefore")
+       return (CallExpr et r [a /\ et, b /\ et])
+ 
+replaceChild ::
+             (Monad mn, CNode this, CNode newChild, CNode oldChild, CNode zz) =>
+               Expression newChild ->
+                 Expression oldChild -> Expression this -> mn (Expression zz)
+replaceChild a b thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "replaceChild")
+       return (CallExpr et r [a /\ et, b /\ et])
+ 
+removeChild ::
+            (Monad mn, CNode this, CNode oldChild, CNode zz) =>
+              Expression oldChild -> Expression this -> mn (Expression zz)
+removeChild a thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "removeChild")
+       return (CallExpr et r [a /\ et])
+ 
+appendChild ::
+            (Monad mn, CNode this, CNode newChild, CNode zz) =>
+              Expression newChild -> Expression this -> mn (Expression zz)
+appendChild a thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "appendChild")
+       return (CallExpr et r [a /\ et])
+ 
+hasChildNodes ::
+              (Monad mn, CNode this) => Expression this -> mn (Expression Bool)
+hasChildNodes thisp
+  = do let et = undefined :: Bool
+       let r = DotRef et (thisp /\ et) (Id et "hasChildNodes")
+       return (CallExpr et r [])
+ 
+cloneNode ::
+          (Monad mn, CNode this, CNode zz) =>
+            Expression Bool -> Expression this -> mn (Expression zz)
+cloneNode a thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "cloneNode")
+       return (CallExpr et r [a /\ et])
+ 
+normalize ::
+          (Monad mn, CNode this) => Expression this -> mn (Expression ())
+normalize thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "normalize")
+       return (CallExpr et r [])
+ 
+isSupported ::
+            (Monad mn, CNode this) =>
+              Expression String ->
+                Expression String -> Expression this -> mn (Expression Bool)
+isSupported a b thisp
+  = do let et = undefined :: Bool
+       let r = DotRef et (thisp /\ et) (Id et "isSupported")
+       return (CallExpr et r [a /\ et, b /\ et])
+ 
+hasAttributes ::
+              (Monad mn, CNode this) => Expression this -> mn (Expression Bool)
+hasAttributes thisp
+  = do let et = undefined :: Bool
+       let r = DotRef et (thisp /\ et) (Id et "hasAttributes")
+       return (CallExpr et r [])
+cELEMENT_NODE = 1
+cATTRIBUTE_NODE = 2
+cTEXT_NODE = 3
+cCDATA_SECTION_NODE = 4
+cENTITY_REFERENCE_NODE = 5
+cENTITY_NODE = 6
+cPROCESSING_INSTRUCTION_NODE = 7
+cCOMMENT_NODE = 8
+cDOCUMENT_NODE = 9
+cDOCUMENT_TYPE_NODE = 10
+cDOCUMENT_FRAGMENT_NODE = 11
+cNOTATION_NODE = 12
+ 
+get'nodeName ::
+             (Monad mn, CNode this) => Expression this -> mn (Expression String)
+get'nodeName thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "nodeName")
+       return r
+ 
+getm'nodeName ::
+              (Monad mn, CNode this) => Expression this -> mn (Expression String)
+getm'nodeName = get'nodeName
+ 
+set'nodeValue ::
+              (Monad mn, CNode zz) =>
+                Expression String -> Expression zz -> mn (Expression zz)
+set'nodeValue = setjsProperty "nodeValue"
+ 
+get'nodeValue ::
+              (Monad mn, CNode this) => Expression this -> mn (Expression String)
+get'nodeValue thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "nodeValue")
+       return r
+ 
+getm'nodeValue ::
+               (Monad mn, CNode this) => Expression this -> mn (Expression String)
+getm'nodeValue = get'nodeValue
+ 
+get'nodeType ::
+             (Monad mn, CNode this) => Expression this -> mn (Expression Double)
+get'nodeType thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "nodeType")
+       return r
+ 
+getm'nodeType ::
+              (Monad mn, CNode this) => Expression this -> mn (Expression Double)
+getm'nodeType = get'nodeType
+ 
+get'parentNode ::
+               (Monad mn, CNode this, CNode zz) =>
+                 Expression this -> mn (Expression zz)
+get'parentNode thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "parentNode")
+       return r
+ 
+getm'parentNode ::
+                (Monad mn, CNode this) => Expression this -> mn (Expression TNode)
+getm'parentNode = get'parentNode
+ 
+get'childNodes ::
+               (Monad mn, CNode this, CNodeList zz) =>
+                 Expression this -> mn (Expression zz)
+get'childNodes thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "childNodes")
+       return r
+ 
+getm'childNodes ::
+                (Monad mn, CNode this) =>
+                  Expression this -> mn (Expression TNodeList)
+getm'childNodes = get'childNodes
+ 
+get'firstChild ::
+               (Monad mn, CNode this, CNode zz) =>
+                 Expression this -> mn (Expression zz)
+get'firstChild thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "firstChild")
+       return r
+ 
+getm'firstChild ::
+                (Monad mn, CNode this) => Expression this -> mn (Expression TNode)
+getm'firstChild = get'firstChild
+ 
+get'lastChild ::
+              (Monad mn, CNode this, CNode zz) =>
+                Expression this -> mn (Expression zz)
+get'lastChild thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "lastChild")
+       return r
+ 
+getm'lastChild ::
+               (Monad mn, CNode this) => Expression this -> mn (Expression TNode)
+getm'lastChild = get'lastChild
+ 
+get'previousSibling ::
+                    (Monad mn, CNode this, CNode zz) =>
+                      Expression this -> mn (Expression zz)
+get'previousSibling thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "previousSibling")
+       return r
+ 
+getm'previousSibling ::
+                     (Monad mn, CNode this) => Expression this -> mn (Expression TNode)
+getm'previousSibling = get'previousSibling
+ 
+get'nextSibling ::
+                (Monad mn, CNode this, CNode zz) =>
+                  Expression this -> mn (Expression zz)
+get'nextSibling thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "nextSibling")
+       return r
+ 
+getm'nextSibling ::
+                 (Monad mn, CNode this) => Expression this -> mn (Expression TNode)
+getm'nextSibling = get'nextSibling
+ 
+get'attributes ::
+               (Monad mn, CNode this, CNamedNodeMap zz) =>
+                 Expression this -> mn (Expression zz)
+get'attributes thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "attributes")
+       return r
+ 
+getm'attributes ::
+                (Monad mn, CNode this) =>
+                  Expression this -> mn (Expression TNamedNodeMap)
+getm'attributes = get'attributes
+ 
+get'ownerDocument ::
+                  (Monad mn, CNode this, CDocument zz) =>
+                    Expression this -> mn (Expression zz)
+get'ownerDocument thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "ownerDocument")
+       return r
+ 
+getm'ownerDocument ::
+                   (Monad mn, CNode this) =>
+                     Expression this -> mn (Expression TDocument)
+getm'ownerDocument = get'ownerDocument
+ 
+get'namespaceURI ::
+                 (Monad mn, CNode this) => Expression this -> mn (Expression String)
+get'namespaceURI thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "namespaceURI")
+       return r
+ 
+getm'namespaceURI ::
+                  (Monad mn, CNode this) => Expression this -> mn (Expression String)
+getm'namespaceURI = get'namespaceURI
+ 
+set'prefix ::
+           (Monad mn, CNode zz) =>
+             Expression String -> Expression zz -> mn (Expression zz)
+set'prefix = setjsProperty "prefix"
+ 
+get'prefix ::
+           (Monad mn, CNode this) => Expression this -> mn (Expression String)
+get'prefix thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "prefix")
+       return r
+ 
+getm'prefix ::
+            (Monad mn, CNode this) => Expression this -> mn (Expression String)
+getm'prefix = get'prefix
+ 
+get'localName ::
+              (Monad mn, CNode this) => Expression this -> mn (Expression String)
+get'localName thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "localName")
+       return r
+ 
+getm'localName ::
+               (Monad mn, CNode this) => Expression this -> mn (Expression String)
+getm'localName = get'localName
+
diff --git a/Data/DOM/NodeFilter.hs b/Data/DOM/NodeFilter.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/NodeFilter.hs
@@ -0,0 +1,39 @@
+
+module Data.DOM.NodeFilter
+       (acceptNode, cFILTER_ACCEPT, cFILTER_REJECT, cFILTER_SKIP,
+        cSHOW_ALL, cSHOW_ELEMENT, cSHOW_ATTRIBUTE, cSHOW_TEXT,
+        cSHOW_CDATA_SECTION, cSHOW_ENTITY_REFERENCE, cSHOW_ENTITY,
+        cSHOW_PROCESSING_INSTRUCTION, cSHOW_COMMENT, cSHOW_DOCUMENT,
+        cSHOW_DOCUMENT_TYPE, cSHOW_DOCUMENT_FRAGMENT, cSHOW_NOTATION)
+       where
+import Data.DOM.Traversal
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+acceptNode ::
+           (Monad mn, CNodeFilter this, CNode n) =>
+             Expression n -> Expression this -> mn (Expression Double)
+acceptNode a thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "acceptNode")
+       return (CallExpr et r [a /\ et])
+cFILTER_ACCEPT = 1
+cFILTER_REJECT = 2
+cFILTER_SKIP = 3
+cSHOW_ALL = 4294967295
+cSHOW_ELEMENT = 1
+cSHOW_ATTRIBUTE = 2
+cSHOW_TEXT = 4
+cSHOW_CDATA_SECTION = 8
+cSHOW_ENTITY_REFERENCE = 16
+cSHOW_ENTITY = 32
+cSHOW_PROCESSING_INSTRUCTION = 64
+cSHOW_COMMENT = 128
+cSHOW_DOCUMENT = 256
+cSHOW_DOCUMENT_TYPE = 512
+cSHOW_DOCUMENT_FRAGMENT = 1024
+cSHOW_NOTATION = 2048
+
diff --git a/Data/DOM/NodeIterator.hs b/Data/DOM/NodeIterator.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/NodeIterator.hs
@@ -0,0 +1,89 @@
+
+module Data.DOM.NodeIterator
+       (nextNode, previousNode, detach, get'root, getm'root,
+        get'whatToShow, getm'whatToShow, get'filter, getm'filter,
+        get'expandEntityReferences, getm'expandEntityReferences)
+       where
+import Data.DOM.Traversal
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+nextNode ::
+         (Monad mn, CNodeIterator this, CNode zz) =>
+           Expression this -> mn (Expression zz)
+nextNode thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "nextNode")
+       return (CallExpr et r [])
+ 
+previousNode ::
+             (Monad mn, CNodeIterator this, CNode zz) =>
+               Expression this -> mn (Expression zz)
+previousNode thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "previousNode")
+       return (CallExpr et r [])
+ 
+detach ::
+       (Monad mn, CNodeIterator this) =>
+         Expression this -> mn (Expression ())
+detach thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "detach")
+       return (CallExpr et r [])
+ 
+get'root ::
+         (Monad mn, CNodeIterator this, CNode zz) =>
+           Expression this -> mn (Expression zz)
+get'root thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "root")
+       return r
+ 
+getm'root ::
+          (Monad mn, CNodeIterator this) =>
+            Expression this -> mn (Expression TNode)
+getm'root = get'root
+ 
+get'whatToShow ::
+               (Monad mn, CNodeIterator this) =>
+                 Expression this -> mn (Expression Double)
+get'whatToShow thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "whatToShow")
+       return r
+ 
+getm'whatToShow ::
+                (Monad mn, CNodeIterator this) =>
+                  Expression this -> mn (Expression Double)
+getm'whatToShow = get'whatToShow
+ 
+get'filter ::
+           (Monad mn, CNodeIterator this, CNodeFilter zz) =>
+             Expression this -> mn (Expression zz)
+get'filter thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "filter")
+       return r
+ 
+getm'filter ::
+            (Monad mn, CNodeIterator this) =>
+              Expression this -> mn (Expression TNodeFilter)
+getm'filter = get'filter
+ 
+get'expandEntityReferences ::
+                           (Monad mn, CNodeIterator this) =>
+                             Expression this -> mn (Expression Bool)
+get'expandEntityReferences thisp
+  = do let et = undefined :: Bool
+       let r = DotRef et (thisp /\ et) (Id et "expandEntityReferences")
+       return r
+ 
+getm'expandEntityReferences ::
+                            (Monad mn, CNodeIterator this) =>
+                              Expression this -> mn (Expression Bool)
+getm'expandEntityReferences = get'expandEntityReferences
+
diff --git a/Data/DOM/NodeList.hs b/Data/DOM/NodeList.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/NodeList.hs
@@ -0,0 +1,29 @@
+
+module Data.DOM.NodeList (item, get'length, getm'length) where
+import Data.DOM.Dom
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Document (createElement)
+ 
+item ::
+     (Monad mn, CNodeList this, CNode zz) =>
+       Expression Double -> Expression this -> mn (Expression zz)
+item a thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "item")
+       return (CallExpr et r [a /\ et])
+ 
+get'length ::
+           (Monad mn, CNodeList this) =>
+             Expression this -> mn (Expression Double)
+get'length thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "length")
+       return r
+ 
+getm'length ::
+            (Monad mn, CNodeList this) =>
+              Expression this -> mn (Expression Double)
+getm'length = get'length
+
diff --git a/Data/DOM/Notation.hs b/Data/DOM/Notation.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/Notation.hs
@@ -0,0 +1,35 @@
+
+module Data.DOM.Notation
+       (get'publicId, getm'publicId, get'systemId, getm'systemId) where
+import Data.DOM.Dom
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Document (createElement)
+ 
+get'publicId ::
+             (Monad mn, CNotation this) =>
+               Expression this -> mn (Expression String)
+get'publicId thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "publicId")
+       return r
+ 
+getm'publicId ::
+              (Monad mn, CNotation this) =>
+                Expression this -> mn (Expression String)
+getm'publicId = get'publicId
+ 
+get'systemId ::
+             (Monad mn, CNotation this) =>
+               Expression this -> mn (Expression String)
+get'systemId thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "systemId")
+       return r
+ 
+getm'systemId ::
+              (Monad mn, CNotation this) =>
+                Expression this -> mn (Expression String)
+getm'systemId = get'systemId
+
diff --git a/Data/DOM/ProcessingInstruction.hs b/Data/DOM/ProcessingInstruction.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/ProcessingInstruction.hs
@@ -0,0 +1,40 @@
+
+module Data.DOM.ProcessingInstruction
+       (get'target, getm'target, set'data, get'data, getm'data) where
+import Data.DOM.Dom
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Document (createElement)
+ 
+get'target ::
+           (Monad mn, CProcessingInstruction this) =>
+             Expression this -> mn (Expression String)
+get'target thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "target")
+       return r
+ 
+getm'target ::
+            (Monad mn, CProcessingInstruction this) =>
+              Expression this -> mn (Expression String)
+getm'target = get'target
+ 
+set'data ::
+         (Monad mn, CProcessingInstruction zz) =>
+           Expression String -> Expression zz -> mn (Expression zz)
+set'data = setjsProperty "data"
+ 
+get'data ::
+         (Monad mn, CProcessingInstruction this) =>
+           Expression this -> mn (Expression String)
+get'data thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "data")
+       return r
+ 
+getm'data ::
+          (Monad mn, CProcessingInstruction this) =>
+            Expression this -> mn (Expression String)
+getm'data = get'data
+
diff --git a/Data/DOM/RGBColor.hs b/Data/DOM/RGBColor.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/RGBColor.hs
@@ -0,0 +1,52 @@
+
+module Data.DOM.RGBColor
+       (get'red, getm'red, get'green, getm'green, get'blue, getm'blue)
+       where
+import Data.DOM.Css
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Views
+import Data.DOM.Stylesheets
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+get'red ::
+        (Monad mn, CRGBColor this, CCSSPrimitiveValue zz) =>
+          Expression this -> mn (Expression zz)
+get'red thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "red")
+       return r
+ 
+getm'red ::
+         (Monad mn, CRGBColor this) =>
+           Expression this -> mn (Expression TCSSPrimitiveValue)
+getm'red = get'red
+ 
+get'green ::
+          (Monad mn, CRGBColor this, CCSSPrimitiveValue zz) =>
+            Expression this -> mn (Expression zz)
+get'green thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "green")
+       return r
+ 
+getm'green ::
+           (Monad mn, CRGBColor this) =>
+             Expression this -> mn (Expression TCSSPrimitiveValue)
+getm'green = get'green
+ 
+get'blue ::
+         (Monad mn, CRGBColor this, CCSSPrimitiveValue zz) =>
+           Expression this -> mn (Expression zz)
+get'blue thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "blue")
+       return r
+ 
+getm'blue ::
+          (Monad mn, CRGBColor this) =>
+            Expression this -> mn (Expression TCSSPrimitiveValue)
+getm'blue = get'blue
+
diff --git a/Data/DOM/Range.hs b/Data/DOM/Range.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/Range.hs
@@ -0,0 +1,241 @@
+
+module Data.DOM.Range
+       (setStart, setEnd, setStartBefore, setStartAfter, setEndBefore,
+        setEndAfter, collapse, selectNode, selectNodeContents,
+        compareBoundaryPoints, deleteContents, extractContents,
+        cloneContents, insertNode, surroundContents, cloneRange, toString,
+        detach, cSTART_TO_START, cSTART_TO_END, cEND_TO_END, cEND_TO_START,
+        get'startContainer, getm'startContainer, get'startOffset,
+        getm'startOffset, get'endContainer, getm'endContainer,
+        get'endOffset, getm'endOffset, get'collapsed, getm'collapsed,
+        get'commonAncestorContainer, getm'commonAncestorContainer)
+       where
+import Data.DOM.Ranges
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+setStart ::
+         (Monad mn, CRange this, CNode refNode) =>
+           Expression refNode ->
+             Expression Double -> Expression this -> mn (Expression ())
+setStart a b thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "setStart")
+       return (CallExpr et r [a /\ et, b /\ et])
+ 
+setEnd ::
+       (Monad mn, CRange this, CNode refNode) =>
+         Expression refNode ->
+           Expression Double -> Expression this -> mn (Expression ())
+setEnd a b thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "setEnd")
+       return (CallExpr et r [a /\ et, b /\ et])
+ 
+setStartBefore ::
+               (Monad mn, CRange this, CNode refNode) =>
+                 Expression refNode -> Expression this -> mn (Expression ())
+setStartBefore a thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "setStartBefore")
+       return (CallExpr et r [a /\ et])
+ 
+setStartAfter ::
+              (Monad mn, CRange this, CNode refNode) =>
+                Expression refNode -> Expression this -> mn (Expression ())
+setStartAfter a thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "setStartAfter")
+       return (CallExpr et r [a /\ et])
+ 
+setEndBefore ::
+             (Monad mn, CRange this, CNode refNode) =>
+               Expression refNode -> Expression this -> mn (Expression ())
+setEndBefore a thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "setEndBefore")
+       return (CallExpr et r [a /\ et])
+ 
+setEndAfter ::
+            (Monad mn, CRange this, CNode refNode) =>
+              Expression refNode -> Expression this -> mn (Expression ())
+setEndAfter a thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "setEndAfter")
+       return (CallExpr et r [a /\ et])
+ 
+collapse ::
+         (Monad mn, CRange this) =>
+           Expression Bool -> Expression this -> mn (Expression ())
+collapse a thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "collapse")
+       return (CallExpr et r [a /\ et])
+ 
+selectNode ::
+           (Monad mn, CRange this, CNode refNode) =>
+             Expression refNode -> Expression this -> mn (Expression ())
+selectNode a thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "selectNode")
+       return (CallExpr et r [a /\ et])
+ 
+selectNodeContents ::
+                   (Monad mn, CRange this, CNode refNode) =>
+                     Expression refNode -> Expression this -> mn (Expression ())
+selectNodeContents a thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "selectNodeContents")
+       return (CallExpr et r [a /\ et])
+ 
+compareBoundaryPoints ::
+                      (Monad mn, CRange this, CRange sourceRange) =>
+                        Expression Double ->
+                          Expression sourceRange -> Expression this -> mn (Expression Double)
+compareBoundaryPoints a b thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "compareBoundaryPoints")
+       return (CallExpr et r [a /\ et, b /\ et])
+ 
+deleteContents ::
+               (Monad mn, CRange this) => Expression this -> mn (Expression ())
+deleteContents thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "deleteContents")
+       return (CallExpr et r [])
+ 
+extractContents ::
+                (Monad mn, CRange this, CDocumentFragment zz) =>
+                  Expression this -> mn (Expression zz)
+extractContents thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "extractContents")
+       return (CallExpr et r [])
+ 
+cloneContents ::
+              (Monad mn, CRange this, CDocumentFragment zz) =>
+                Expression this -> mn (Expression zz)
+cloneContents thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "cloneContents")
+       return (CallExpr et r [])
+ 
+insertNode ::
+           (Monad mn, CRange this, CNode newNode) =>
+             Expression newNode -> Expression this -> mn (Expression ())
+insertNode a thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "insertNode")
+       return (CallExpr et r [a /\ et])
+ 
+surroundContents ::
+                 (Monad mn, CRange this, CNode newParent) =>
+                   Expression newParent -> Expression this -> mn (Expression ())
+surroundContents a thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "surroundContents")
+       return (CallExpr et r [a /\ et])
+ 
+cloneRange ::
+           (Monad mn, CRange this, CRange zz) =>
+             Expression this -> mn (Expression zz)
+cloneRange thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "cloneRange")
+       return (CallExpr et r [])
+ 
+toString ::
+         (Monad mn, CRange this) =>
+           Expression this -> mn (Expression String)
+toString thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "toString")
+       return (CallExpr et r [])
+ 
+detach ::
+       (Monad mn, CRange this) => Expression this -> mn (Expression ())
+detach thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "detach")
+       return (CallExpr et r [])
+cSTART_TO_START = 0
+cSTART_TO_END = 1
+cEND_TO_END = 2
+cEND_TO_START = 3
+ 
+get'startContainer ::
+                   (Monad mn, CRange this, CNode zz) =>
+                     Expression this -> mn (Expression zz)
+get'startContainer thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "startContainer")
+       return r
+ 
+getm'startContainer ::
+                    (Monad mn, CRange this) => Expression this -> mn (Expression TNode)
+getm'startContainer = get'startContainer
+ 
+get'startOffset ::
+                (Monad mn, CRange this) =>
+                  Expression this -> mn (Expression Double)
+get'startOffset thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "startOffset")
+       return r
+ 
+getm'startOffset ::
+                 (Monad mn, CRange this) =>
+                   Expression this -> mn (Expression Double)
+getm'startOffset = get'startOffset
+ 
+get'endContainer ::
+                 (Monad mn, CRange this, CNode zz) =>
+                   Expression this -> mn (Expression zz)
+get'endContainer thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "endContainer")
+       return r
+ 
+getm'endContainer ::
+                  (Monad mn, CRange this) => Expression this -> mn (Expression TNode)
+getm'endContainer = get'endContainer
+ 
+get'endOffset ::
+              (Monad mn, CRange this) =>
+                Expression this -> mn (Expression Double)
+get'endOffset thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "endOffset")
+       return r
+ 
+getm'endOffset ::
+               (Monad mn, CRange this) =>
+                 Expression this -> mn (Expression Double)
+getm'endOffset = get'endOffset
+ 
+get'collapsed ::
+              (Monad mn, CRange this) => Expression this -> mn (Expression Bool)
+get'collapsed thisp
+  = do let et = undefined :: Bool
+       let r = DotRef et (thisp /\ et) (Id et "collapsed")
+       return r
+ 
+getm'collapsed ::
+               (Monad mn, CRange this) => Expression this -> mn (Expression Bool)
+getm'collapsed = get'collapsed
+ 
+get'commonAncestorContainer ::
+                            (Monad mn, CRange this, CNode zz) =>
+                              Expression this -> mn (Expression zz)
+get'commonAncestorContainer thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "commonAncestorContainer")
+       return r
+ 
+getm'commonAncestorContainer ::
+                             (Monad mn, CRange this) => Expression this -> mn (Expression TNode)
+getm'commonAncestorContainer = get'commonAncestorContainer
+
diff --git a/Data/DOM/Ranges.hs b/Data/DOM/Ranges.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/Ranges.hs
@@ -0,0 +1,20 @@
+
+module Data.DOM.Ranges
+       (TRange(..), TDocumentRange(..), CRange, CDocumentRange) where
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+ 
+data TRange = TRange
+ 
+data TDocumentRange = TDocumentRange
+ 
+class CRange a
+ 
+class CDocumentRange a
+ 
+instance CRange TRange
+ 
+instance CDocumentRange TDocumentRange
+
diff --git a/Data/DOM/Rect.hs b/Data/DOM/Rect.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/Rect.hs
@@ -0,0 +1,66 @@
+
+module Data.DOM.Rect
+       (get'top, getm'top, get'right, getm'right, get'bottom, getm'bottom,
+        get'left, getm'left)
+       where
+import Data.DOM.Css
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Views
+import Data.DOM.Stylesheets
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+get'top ::
+        (Monad mn, CRect this, CCSSPrimitiveValue zz) =>
+          Expression this -> mn (Expression zz)
+get'top thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "top")
+       return r
+ 
+getm'top ::
+         (Monad mn, CRect this) =>
+           Expression this -> mn (Expression TCSSPrimitiveValue)
+getm'top = get'top
+ 
+get'right ::
+          (Monad mn, CRect this, CCSSPrimitiveValue zz) =>
+            Expression this -> mn (Expression zz)
+get'right thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "right")
+       return r
+ 
+getm'right ::
+           (Monad mn, CRect this) =>
+             Expression this -> mn (Expression TCSSPrimitiveValue)
+getm'right = get'right
+ 
+get'bottom ::
+           (Monad mn, CRect this, CCSSPrimitiveValue zz) =>
+             Expression this -> mn (Expression zz)
+get'bottom thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "bottom")
+       return r
+ 
+getm'bottom ::
+            (Monad mn, CRect this) =>
+              Expression this -> mn (Expression TCSSPrimitiveValue)
+getm'bottom = get'bottom
+ 
+get'left ::
+         (Monad mn, CRect this, CCSSPrimitiveValue zz) =>
+           Expression this -> mn (Expression zz)
+get'left thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "left")
+       return r
+ 
+getm'left ::
+          (Monad mn, CRect this) =>
+            Expression this -> mn (Expression TCSSPrimitiveValue)
+getm'left = get'left
+
diff --git a/Data/DOM/StyleSheet.hs b/Data/DOM/StyleSheet.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/StyleSheet.hs
@@ -0,0 +1,110 @@
+
+module Data.DOM.StyleSheet
+       (get'type, getm'type, set'disabled, get'disabled, getm'disabled,
+        get'ownerNode, getm'ownerNode, get'parentStyleSheet,
+        getm'parentStyleSheet, get'href, getm'href, get'title, getm'title,
+        get'media, getm'media)
+       where
+import Data.DOM.Stylesheets
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+get'type ::
+         (Monad mn, CStyleSheet this) =>
+           Expression this -> mn (Expression String)
+get'type thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "type")
+       return r
+ 
+getm'type ::
+          (Monad mn, CStyleSheet this) =>
+            Expression this -> mn (Expression String)
+getm'type = get'type
+ 
+set'disabled ::
+             (Monad mn, CStyleSheet zz) =>
+               Expression Bool -> Expression zz -> mn (Expression zz)
+set'disabled = setjsProperty "disabled"
+ 
+get'disabled ::
+             (Monad mn, CStyleSheet this) =>
+               Expression this -> mn (Expression Bool)
+get'disabled thisp
+  = do let et = undefined :: Bool
+       let r = DotRef et (thisp /\ et) (Id et "disabled")
+       return r
+ 
+getm'disabled ::
+              (Monad mn, CStyleSheet this) =>
+                Expression this -> mn (Expression Bool)
+getm'disabled = get'disabled
+ 
+get'ownerNode ::
+              (Monad mn, CStyleSheet this, CNode zz) =>
+                Expression this -> mn (Expression zz)
+get'ownerNode thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "ownerNode")
+       return r
+ 
+getm'ownerNode ::
+               (Monad mn, CStyleSheet this) =>
+                 Expression this -> mn (Expression TNode)
+getm'ownerNode = get'ownerNode
+ 
+get'parentStyleSheet ::
+                     (Monad mn, CStyleSheet this, CStyleSheet zz) =>
+                       Expression this -> mn (Expression zz)
+get'parentStyleSheet thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "parentStyleSheet")
+       return r
+ 
+getm'parentStyleSheet ::
+                      (Monad mn, CStyleSheet this) =>
+                        Expression this -> mn (Expression TStyleSheet)
+getm'parentStyleSheet = get'parentStyleSheet
+ 
+get'href ::
+         (Monad mn, CStyleSheet this) =>
+           Expression this -> mn (Expression String)
+get'href thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "href")
+       return r
+ 
+getm'href ::
+          (Monad mn, CStyleSheet this) =>
+            Expression this -> mn (Expression String)
+getm'href = get'href
+ 
+get'title ::
+          (Monad mn, CStyleSheet this) =>
+            Expression this -> mn (Expression String)
+get'title thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "title")
+       return r
+ 
+getm'title ::
+           (Monad mn, CStyleSheet this) =>
+             Expression this -> mn (Expression String)
+getm'title = get'title
+ 
+get'media ::
+          (Monad mn, CStyleSheet this, CMediaList zz) =>
+            Expression this -> mn (Expression zz)
+get'media thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "media")
+       return r
+ 
+getm'media ::
+           (Monad mn, CStyleSheet this) =>
+             Expression this -> mn (Expression TMediaList)
+getm'media = get'media
+
diff --git a/Data/DOM/StyleSheetList.hs b/Data/DOM/StyleSheetList.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/StyleSheetList.hs
@@ -0,0 +1,31 @@
+
+module Data.DOM.StyleSheetList (item, get'length, getm'length)
+       where
+import Data.DOM.Stylesheets
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+item ::
+     (Monad mn, CStyleSheetList this, CStyleSheet zz) =>
+       Expression Double -> Expression this -> mn (Expression zz)
+item a thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "item")
+       return (CallExpr et r [a /\ et])
+ 
+get'length ::
+           (Monad mn, CStyleSheetList this) =>
+             Expression this -> mn (Expression Double)
+get'length thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "length")
+       return r
+ 
+getm'length ::
+            (Monad mn, CStyleSheetList this) =>
+              Expression this -> mn (Expression Double)
+getm'length = get'length
+
diff --git a/Data/DOM/Stylesheets.hs b/Data/DOM/Stylesheets.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/Stylesheets.hs
@@ -0,0 +1,41 @@
+
+module Data.DOM.Stylesheets
+       (TStyleSheet(..), TStyleSheetList(..), TMediaList(..),
+        TLinkStyle(..), TDocumentStyle(..), CStyleSheet, CStyleSheetList,
+        CMediaList, CLinkStyle, CDocumentStyle)
+       where
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+ 
+data TStyleSheet = TStyleSheet
+ 
+data TStyleSheetList = TStyleSheetList
+ 
+data TMediaList = TMediaList
+ 
+data TLinkStyle = TLinkStyle
+ 
+data TDocumentStyle = TDocumentStyle
+ 
+class CStyleSheet a
+ 
+class CStyleSheetList a
+ 
+class CMediaList a
+ 
+class CLinkStyle a
+ 
+class CDocumentStyle a
+ 
+instance CStyleSheet TStyleSheet
+ 
+instance CStyleSheetList TStyleSheetList
+ 
+instance CMediaList TMediaList
+ 
+instance CLinkStyle TLinkStyle
+ 
+instance CDocumentStyle TDocumentStyle
+
diff --git a/Data/DOM/Text.hs b/Data/DOM/Text.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/Text.hs
@@ -0,0 +1,16 @@
+
+module Data.DOM.Text (splitText) where
+import Data.DOM.Dom
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Document (createElement)
+ 
+splitText ::
+          (Monad mn, CText this, CText zz) =>
+            Expression Double -> Expression this -> mn (Expression zz)
+splitText a thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "splitText")
+       return (CallExpr et r [a /\ et])
+
diff --git a/Data/DOM/Traversal.hs b/Data/DOM/Traversal.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/Traversal.hs
@@ -0,0 +1,35 @@
+
+module Data.DOM.Traversal
+       (TNodeIterator(..), TNodeFilter(..), TTreeWalker(..),
+        TDocumentTraversal(..), CNodeIterator, CNodeFilter, CTreeWalker,
+        CDocumentTraversal)
+       where
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+ 
+data TNodeIterator = TNodeIterator
+ 
+data TNodeFilter = TNodeFilter
+ 
+data TTreeWalker = TTreeWalker
+ 
+data TDocumentTraversal = TDocumentTraversal
+ 
+class CNodeIterator a
+ 
+class CNodeFilter a
+ 
+class CTreeWalker a
+ 
+class CDocumentTraversal a
+ 
+instance CNodeIterator TNodeIterator
+ 
+instance CNodeFilter TNodeFilter
+ 
+instance CTreeWalker TTreeWalker
+ 
+instance CDocumentTraversal TDocumentTraversal
+
diff --git a/Data/DOM/TreeWalker.hs b/Data/DOM/TreeWalker.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/TreeWalker.hs
@@ -0,0 +1,141 @@
+
+module Data.DOM.TreeWalker
+       (parentNode, firstChild, lastChild, previousSibling, nextSibling,
+        previousNode, nextNode, get'root, getm'root, get'whatToShow,
+        getm'whatToShow, get'filter, getm'filter,
+        get'expandEntityReferences, getm'expandEntityReferences,
+        set'currentNode, get'currentNode, getm'currentNode)
+       where
+import Data.DOM.Traversal
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+parentNode ::
+           (Monad mn, CTreeWalker this, CNode zz) =>
+             Expression this -> mn (Expression zz)
+parentNode thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "parentNode")
+       return (CallExpr et r [])
+ 
+firstChild ::
+           (Monad mn, CTreeWalker this, CNode zz) =>
+             Expression this -> mn (Expression zz)
+firstChild thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "firstChild")
+       return (CallExpr et r [])
+ 
+lastChild ::
+          (Monad mn, CTreeWalker this, CNode zz) =>
+            Expression this -> mn (Expression zz)
+lastChild thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "lastChild")
+       return (CallExpr et r [])
+ 
+previousSibling ::
+                (Monad mn, CTreeWalker this, CNode zz) =>
+                  Expression this -> mn (Expression zz)
+previousSibling thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "previousSibling")
+       return (CallExpr et r [])
+ 
+nextSibling ::
+            (Monad mn, CTreeWalker this, CNode zz) =>
+              Expression this -> mn (Expression zz)
+nextSibling thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "nextSibling")
+       return (CallExpr et r [])
+ 
+previousNode ::
+             (Monad mn, CTreeWalker this, CNode zz) =>
+               Expression this -> mn (Expression zz)
+previousNode thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "previousNode")
+       return (CallExpr et r [])
+ 
+nextNode ::
+         (Monad mn, CTreeWalker this, CNode zz) =>
+           Expression this -> mn (Expression zz)
+nextNode thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "nextNode")
+       return (CallExpr et r [])
+ 
+get'root ::
+         (Monad mn, CTreeWalker this, CNode zz) =>
+           Expression this -> mn (Expression zz)
+get'root thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "root")
+       return r
+ 
+getm'root ::
+          (Monad mn, CTreeWalker this) =>
+            Expression this -> mn (Expression TNode)
+getm'root = get'root
+ 
+get'whatToShow ::
+               (Monad mn, CTreeWalker this) =>
+                 Expression this -> mn (Expression Double)
+get'whatToShow thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "whatToShow")
+       return r
+ 
+getm'whatToShow ::
+                (Monad mn, CTreeWalker this) =>
+                  Expression this -> mn (Expression Double)
+getm'whatToShow = get'whatToShow
+ 
+get'filter ::
+           (Monad mn, CTreeWalker this, CNodeFilter zz) =>
+             Expression this -> mn (Expression zz)
+get'filter thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "filter")
+       return r
+ 
+getm'filter ::
+            (Monad mn, CTreeWalker this) =>
+              Expression this -> mn (Expression TNodeFilter)
+getm'filter = get'filter
+ 
+get'expandEntityReferences ::
+                           (Monad mn, CTreeWalker this) =>
+                             Expression this -> mn (Expression Bool)
+get'expandEntityReferences thisp
+  = do let et = undefined :: Bool
+       let r = DotRef et (thisp /\ et) (Id et "expandEntityReferences")
+       return r
+ 
+getm'expandEntityReferences ::
+                            (Monad mn, CTreeWalker this) =>
+                              Expression this -> mn (Expression Bool)
+getm'expandEntityReferences = get'expandEntityReferences
+ 
+set'currentNode ::
+                (Monad mn, CNode val, CTreeWalker zz) =>
+                  Expression val -> Expression zz -> mn (Expression zz)
+set'currentNode = setjsProperty "currentNode"
+ 
+get'currentNode ::
+                (Monad mn, CTreeWalker this, CNode zz) =>
+                  Expression this -> mn (Expression zz)
+get'currentNode thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "currentNode")
+       return r
+ 
+getm'currentNode ::
+                 (Monad mn, CTreeWalker this) =>
+                   Expression this -> mn (Expression TNode)
+getm'currentNode = get'currentNode
+
diff --git a/Data/DOM/UIEvent.hs b/Data/DOM/UIEvent.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/UIEvent.hs
@@ -0,0 +1,50 @@
+
+module Data.DOM.UIEvent
+       (initUIEvent, get'view, getm'view, get'detail, getm'detail) where
+import Data.DOM.Events
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Views
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+initUIEvent ::
+            (Monad mn, CUIEvent this, CAbstractView viewArg) =>
+              Expression String ->
+                Expression Bool ->
+                  Expression Bool ->
+                    Expression viewArg ->
+                      Expression Double -> Expression this -> mn (Expression ())
+initUIEvent a b c d e thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "initUIEvent")
+       return
+         (CallExpr et r [a /\ et, b /\ et, c /\ et, d /\ et, e /\ et])
+ 
+get'view ::
+         (Monad mn, CUIEvent this, CAbstractView zz) =>
+           Expression this -> mn (Expression zz)
+get'view thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "view")
+       return r
+ 
+getm'view ::
+          (Monad mn, CUIEvent this) =>
+            Expression this -> mn (Expression TAbstractView)
+getm'view = get'view
+ 
+get'detail ::
+           (Monad mn, CUIEvent this) =>
+             Expression this -> mn (Expression Double)
+get'detail thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "detail")
+       return r
+ 
+getm'detail ::
+            (Monad mn, CUIEvent this) =>
+              Expression this -> mn (Expression Double)
+getm'detail = get'detail
+
diff --git a/Data/DOM/ViewCSS.hs b/Data/DOM/ViewCSS.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/ViewCSS.hs
@@ -0,0 +1,20 @@
+
+module Data.DOM.ViewCSS (getComputedStyle) where
+import Data.DOM.Css
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Views
+import Data.DOM.Stylesheets
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+getComputedStyle ::
+                 (Monad mn, CViewCSS this, CElement elt, CCSSStyleDeclaration zz) =>
+                   Expression elt ->
+                     Expression String -> Expression this -> mn (Expression zz)
+getComputedStyle a b thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "getComputedStyle")
+       return (CallExpr et r [a /\ et, b /\ et])
+
diff --git a/Data/DOM/Views.hs b/Data/DOM/Views.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/Views.hs
@@ -0,0 +1,22 @@
+
+module Data.DOM.Views
+       (TAbstractView(..), TDocumentView(..), CAbstractView,
+        CDocumentView)
+       where
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+ 
+data TAbstractView = TAbstractView
+ 
+data TDocumentView = TDocumentView
+ 
+class CAbstractView a
+ 
+class CDocumentView a
+ 
+instance CAbstractView TAbstractView
+ 
+instance CDocumentView TDocumentView
+
diff --git a/Data/DOM/WBTypes.hs b/Data/DOM/WBTypes.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/WBTypes.hs
@@ -0,0 +1,63 @@
+
+------------------------------------------------------------------
+-- |
+-- Module      :  Data.DOM.WBTypes
+-- Copyright   :  (c) Dmitry Golubovsky, 2009
+-- License     :  BSD-style
+-- 
+-- Maintainer  :  golubovsky@gmail.com
+-- Stability   :  experimental
+-- Portability :  portable
+-- 
+--
+--
+-- Minimal glue for WebBits and DOM
+------------------------------------------------------------------
+
+module Data.DOM.WBTypes (
+    castExpr
+   ,exprType
+   ,(/\)
+   ,setjsProperty
+  ) where
+
+import WebBits.JavaScript
+import qualified Data.Foldable as F
+import Control.Monad
+
+-- | Cast a WebBits Javascript expression to the given type. Type is represented
+-- by a value of the desired type (ofter "undefined").
+
+castExpr :: b -> Expression a -> Expression b
+
+castExpr b e = fmap (const b) e
+
+-- | Extract a type from an expression.
+
+exprType :: Expression a -> a
+
+exprType e =
+  let f y z = NullLit (undefined :: a)
+      (NullLit x) = F.foldr f undefined e
+  in  x
+
+-- | An infix version of "castExpr" provided for convenience.
+
+(/\) :: Expression a -> b -> Expression b
+
+(/\) = flip castExpr
+
+-- | A helper function to encode a property setter. This function is mostly called
+-- from converted IDL files for DOM interfaces.
+
+setjsProperty :: (Monad m) => String -> Expression a -> Expression this -> m (Expression this)
+
+setjsProperty pn pv this = do
+  let tht = exprType this
+      fun = FuncExpr tht [Id tht "x"] blk
+      thv = VarRef tht (Id tht "x")
+      blk = BlockStmt tht [setp, retx]
+      setp = ExprStmt tht $ AssignExpr tht OpAssign (DotRef tht thv (Id tht pn)) (pv /\ tht)
+      retx = ReturnStmt tht (Just thv)
+  return $ ParenExpr tht $ CallExpr tht fun [this]
+
diff --git a/Data/DOM/Window.hs b/Data/DOM/Window.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/Window.hs
@@ -0,0 +1,145 @@
+
+module Data.DOM.Window
+       (setTimeout, clearTimeout, setInterval, clearInterval, get'window,
+        getm'window, get'self, getm'self, get'location, getm'location,
+        set'name, get'name, getm'name, get'parent, getm'parent, get'top,
+        getm'top, get'frameElement, getm'frameElement)
+       where
+import Data.DOM.WindowObj
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Views
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+setTimeout ::
+           (Monad mn, CWindow this, CTimerListener listener) =>
+             Expression listener ->
+               Expression Double -> Expression this -> mn (Expression Double)
+setTimeout a b thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "setTimeout")
+       return (CallExpr et r [a /\ et, b /\ et])
+ 
+clearTimeout ::
+             (Monad mn, CWindow this) =>
+               Expression Double -> Expression this -> mn (Expression ())
+clearTimeout a thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "clearTimeout")
+       return (CallExpr et r [a /\ et])
+ 
+setInterval ::
+            (Monad mn, CWindow this, CTimerListener listener) =>
+              Expression listener ->
+                Expression Double -> Expression this -> mn (Expression Double)
+setInterval a b thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "setInterval")
+       return (CallExpr et r [a /\ et, b /\ et])
+ 
+clearInterval ::
+              (Monad mn, CWindow this) =>
+                Expression Double -> Expression this -> mn (Expression ())
+clearInterval a thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "clearInterval")
+       return (CallExpr et r [a /\ et])
+ 
+get'window ::
+           (Monad mn, CWindow this, CWindow zz) =>
+             Expression this -> mn (Expression zz)
+get'window thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "window")
+       return r
+ 
+getm'window ::
+            (Monad mn, CWindow this) =>
+              Expression this -> mn (Expression TWindow)
+getm'window = get'window
+ 
+get'self ::
+         (Monad mn, CWindow this, CWindow zz) =>
+           Expression this -> mn (Expression zz)
+get'self thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "self")
+       return r
+ 
+getm'self ::
+          (Monad mn, CWindow this) =>
+            Expression this -> mn (Expression TWindow)
+getm'self = get'self
+ 
+get'location ::
+             (Monad mn, CWindow this, CLocation zz) =>
+               Expression this -> mn (Expression zz)
+get'location thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "location")
+       return r
+ 
+getm'location ::
+              (Monad mn, CWindow this) =>
+                Expression this -> mn (Expression TLocation)
+getm'location = get'location
+ 
+set'name ::
+         (Monad mn, CWindow zz) =>
+           Expression String -> Expression zz -> mn (Expression zz)
+set'name = setjsProperty "name"
+ 
+get'name ::
+         (Monad mn, CWindow this) =>
+           Expression this -> mn (Expression String)
+get'name thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "name")
+       return r
+ 
+getm'name ::
+          (Monad mn, CWindow this) =>
+            Expression this -> mn (Expression String)
+getm'name = get'name
+ 
+get'parent ::
+           (Monad mn, CWindow this, CWindow zz) =>
+             Expression this -> mn (Expression zz)
+get'parent thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "parent")
+       return r
+ 
+getm'parent ::
+            (Monad mn, CWindow this) =>
+              Expression this -> mn (Expression TWindow)
+getm'parent = get'parent
+ 
+get'top ::
+        (Monad mn, CWindow this, CWindow zz) =>
+          Expression this -> mn (Expression zz)
+get'top thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "top")
+       return r
+ 
+getm'top ::
+         (Monad mn, CWindow this) =>
+           Expression this -> mn (Expression TWindow)
+getm'top = get'top
+ 
+get'frameElement ::
+                 (Monad mn, CWindow this, CElement zz) =>
+                   Expression this -> mn (Expression zz)
+get'frameElement thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "frameElement")
+       return r
+ 
+getm'frameElement ::
+                  (Monad mn, CWindow this) =>
+                    Expression this -> mn (Expression TElement)
+getm'frameElement = get'frameElement
+
diff --git a/Data/DOM/WindowObj.hs b/Data/DOM/WindowObj.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/WindowObj.hs
@@ -0,0 +1,46 @@
+
+module Data.DOM.WindowObj
+       (TWindow(..), TDocumentWindow(..), TLocation(..),
+        TEmbeddingElement(..), TTimerListener(..), CWindow,
+        CDocumentWindow, CLocation, CEmbeddingElement, CTimerListener)
+       where
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Views
+import Data.DOM.Dom
+ 
+data TWindow = TWindow
+ 
+data TDocumentWindow = TDocumentWindow
+ 
+data TLocation = TLocation
+ 
+data TEmbeddingElement = TEmbeddingElement
+ 
+data TTimerListener = TTimerListener
+ 
+class (CAbstractView a) => CWindow a
+ 
+class (CDocumentView a) => CDocumentWindow a
+ 
+class CLocation a
+ 
+class CEmbeddingElement a
+ 
+class CTimerListener a
+ 
+instance CWindow TWindow
+ 
+instance CAbstractView TWindow
+ 
+instance CDocumentWindow TDocumentWindow
+ 
+instance CDocumentView TDocumentWindow
+ 
+instance CLocation TLocation
+ 
+instance CEmbeddingElement TEmbeddingElement
+ 
+instance CTimerListener TTimerListener
+
diff --git a/Data/DOM/XMLHTTP.hs b/Data/DOM/XMLHTTP.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/XMLHTTP.hs
@@ -0,0 +1,18 @@
+
+module Data.DOM.XMLHTTP (TXMLHttpRequest(..), CXMLHttpRequest)
+       where
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+ 
+data TXMLHttpRequest = TXMLHttpRequest
+ 
+class (CElement a) => CXMLHttpRequest a
+ 
+instance CXMLHttpRequest TXMLHttpRequest
+ 
+instance CElement TXMLHttpRequest
+ 
+instance CNode TXMLHttpRequest
+
diff --git a/Data/DOM/XMLHttpRequest.hs b/Data/DOM/XMLHttpRequest.hs
new file mode 100644
--- /dev/null
+++ b/Data/DOM/XMLHttpRequest.hs
@@ -0,0 +1,173 @@
+
+module Data.DOM.XMLHttpRequest
+       (openSync, openAsync, openUser, openAuth, setRequestHeader,
+        sendString, sendDocument, abort, getAllResponseHeaders,
+        getResponseHeader, get'readyState, getm'readyState,
+        get'responseText, getm'responseText, get'responseXML,
+        getm'responseXML, get'status, getm'status, get'statusText,
+        getm'statusText)
+       where
+import Data.DOM.XMLHTTP
+import Control.Monad
+import WebBits.JavaScript
+import Data.DOM.WBTypes
+import Data.DOM.Dom
+import Data.DOM.Document (createElement)
+ 
+openSync ::
+         (Monad mn, CXMLHttpRequest this) =>
+           Expression String ->
+             Expression String -> Expression this -> mn (Expression ())
+openSync a b thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "open")
+       return (CallExpr et r [a /\ et, b /\ et])
+ 
+openAsync ::
+          (Monad mn, CXMLHttpRequest this) =>
+            Expression String ->
+              Expression String ->
+                Expression Bool -> Expression this -> mn (Expression ())
+openAsync a b c thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "open")
+       return (CallExpr et r [a /\ et, b /\ et, c /\ et])
+ 
+openUser ::
+         (Monad mn, CXMLHttpRequest this) =>
+           Expression String ->
+             Expression String ->
+               Expression Bool ->
+                 Expression String -> Expression this -> mn (Expression ())
+openUser a b c d thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "open")
+       return (CallExpr et r [a /\ et, b /\ et, c /\ et, d /\ et])
+ 
+openAuth ::
+         (Monad mn, CXMLHttpRequest this) =>
+           Expression String ->
+             Expression String ->
+               Expression Bool ->
+                 Expression String ->
+                   Expression String -> Expression this -> mn (Expression ())
+openAuth a b c d e thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "open")
+       return
+         (CallExpr et r [a /\ et, b /\ et, c /\ et, d /\ et, e /\ et])
+ 
+setRequestHeader ::
+                 (Monad mn, CXMLHttpRequest this) =>
+                   Expression String ->
+                     Expression String -> Expression this -> mn (Expression ())
+setRequestHeader a b thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "setRequestHeader")
+       return (CallExpr et r [a /\ et, b /\ et])
+ 
+sendString ::
+           (Monad mn, CXMLHttpRequest this) =>
+             Expression String -> Expression this -> mn (Expression ())
+sendString a thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "send")
+       return (CallExpr et r [a /\ et])
+ 
+sendDocument ::
+             (Monad mn, CXMLHttpRequest this, CDocument doc) =>
+               Expression doc -> Expression this -> mn (Expression ())
+sendDocument a thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "send")
+       return (CallExpr et r [a /\ et])
+ 
+abort ::
+      (Monad mn, CXMLHttpRequest this) =>
+        Expression this -> mn (Expression ())
+abort thisp
+  = do let et = undefined :: ()
+       let r = DotRef et (thisp /\ et) (Id et "abort")
+       return (CallExpr et r [])
+ 
+getAllResponseHeaders ::
+                      (Monad mn, CXMLHttpRequest this) =>
+                        Expression this -> mn (Expression String)
+getAllResponseHeaders thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "getAllResponseHeaders")
+       return (CallExpr et r [])
+ 
+getResponseHeader ::
+                  (Monad mn, CXMLHttpRequest this) =>
+                    Expression String -> Expression this -> mn (Expression String)
+getResponseHeader a thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "getResponseHeader")
+       return (CallExpr et r [a /\ et])
+ 
+get'readyState ::
+               (Monad mn, CXMLHttpRequest this) =>
+                 Expression this -> mn (Expression Double)
+get'readyState thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "readyState")
+       return r
+ 
+getm'readyState ::
+                (Monad mn, CXMLHttpRequest this) =>
+                  Expression this -> mn (Expression Double)
+getm'readyState = get'readyState
+ 
+get'responseText ::
+                 (Monad mn, CXMLHttpRequest this) =>
+                   Expression this -> mn (Expression String)
+get'responseText thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "responseText")
+       return r
+ 
+getm'responseText ::
+                  (Monad mn, CXMLHttpRequest this) =>
+                    Expression this -> mn (Expression String)
+getm'responseText = get'responseText
+ 
+get'responseXML ::
+                (Monad mn, CXMLHttpRequest this, CDocument zz) =>
+                  Expression this -> mn (Expression zz)
+get'responseXML thisp
+  = do let et = undefined :: zz
+       let r = DotRef et (thisp /\ et) (Id et "responseXML")
+       return r
+ 
+getm'responseXML ::
+                 (Monad mn, CXMLHttpRequest this) =>
+                   Expression this -> mn (Expression TDocument)
+getm'responseXML = get'responseXML
+ 
+get'status ::
+           (Monad mn, CXMLHttpRequest this) =>
+             Expression this -> mn (Expression Double)
+get'status thisp
+  = do let et = undefined :: Double
+       let r = DotRef et (thisp /\ et) (Id et "status")
+       return r
+ 
+getm'status ::
+            (Monad mn, CXMLHttpRequest this) =>
+              Expression this -> mn (Expression Double)
+getm'status = get'status
+ 
+get'statusText ::
+               (Monad mn, CXMLHttpRequest this) =>
+                 Expression this -> mn (Expression String)
+get'statusText thisp
+  = do let et = undefined :: String
+       let r = DotRef et (thisp /\ et) (Id et "statusText")
+       return r
+ 
+getm'statusText ::
+                (Monad mn, CXMLHttpRequest this) =>
+                  Expression this -> mn (Expression String)
+getm'statusText = get'statusText
+
diff --git a/LICENSE b/LICENSE
new file mode 100644
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,33 @@
+Copyright Dmitry Golubovsky 2008, 2009.
+All rights reserved.
+
+For Haskell code derived from IDL files provided by the World Wide Web 
+Consortium, see also: http://www.w3.org/Consortium/Legal/copyright-documents-19990405
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+    * Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above
+      copyright notice, this list of conditions and the following
+      disclaimer in the documentation and/or other materials provided
+      with the distribution.
+
+    * Neither the name of Dmitry Golubovsky nor the names of other
+      contributors may be used to endorse or promote products derived
+      from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/Setup.hs b/Setup.hs
new file mode 100644
--- /dev/null
+++ b/Setup.hs
@@ -0,0 +1,2 @@
+import Distribution.Simple
+main = defaultMain
