diff --git a/LICENSE b/LICENSE
new file mode 100644
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,21 @@
+Copyright (c) 2010-2012 Hamish Mackenzie, Victor Nazarov, Luite Stegeman
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
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
diff --git a/jsaddle-dom.cabal b/jsaddle-dom.cabal
new file mode 100644
--- /dev/null
+++ b/jsaddle-dom.cabal
@@ -0,0 +1,1084 @@
+name: jsaddle-dom
+version: 0.1.0.1
+cabal-version: >=1.10
+build-type: Simple
+license: MIT
+license-file: LICENSE
+maintainer: Hamish Mackenzie <Hamish.K.Mackenzie@googlemail.com>
+synopsis: DOM library that uses jsaddle to support both GHCJS and WebKitGTK
+description:
+    Documentent Object Model (DOM) functions implemented using jsaddle.
+    It works with both GHCJS and GHC.
+category: Web
+author: Hamish Mackenzie
+
+source-repository head
+    type: git
+    location: https://github.com/ghcjs/jsaddle-dom
+
+library
+
+    if impl(ghcjs -any)
+        build-depends:
+            ghcjs-base >=0.2.0.0 && <0.3,
+            ghcjs-prim -any,
+            ghc-prim -any
+    else
+        build-depends:
+            haskell-gi-base >= 0.17 && < 0.18,
+            gi-glib >=2.0.2 && <2.1,
+            gi-gtk >=3.0.2 && <3.1,
+            gi-webkit >=3.0.2 && <3.1
+
+    exposed-modules:
+        Language.Javascript.JSaddle.DOM.Custom.AudioContext
+        Language.Javascript.JSaddle.DOM.Custom.Database
+        Language.Javascript.JSaddle.DOM.Custom.DOMError
+        Language.Javascript.JSaddle.DOM.Custom.Geolocation
+        Language.Javascript.JSaddle.DOM.Custom.MediaStreamTrack
+        Language.Javascript.JSaddle.DOM.Custom.Navigator
+        Language.Javascript.JSaddle.DOM.Custom.NavigatorUserMediaError
+        Language.Javascript.JSaddle.DOM.Custom.PositionError
+        Language.Javascript.JSaddle.DOM.Custom.RTCPeerConnection
+        Language.Javascript.JSaddle.DOM.Custom.RTCPeerConnectionError
+        Language.Javascript.JSaddle.DOM.Custom.SQLError
+        Language.Javascript.JSaddle.DOM.Custom.SQLTransaction
+        Language.Javascript.JSaddle.DOM.Custom.Window
+        Language.Javascript.JSaddle.DOM.Custom.XMLHttpRequest
+        Language.Javascript.JSaddle.DOM.Generated.ANGLEInstancedArrays
+        Language.Javascript.JSaddle.DOM.Generated.AbstractView
+        Language.Javascript.JSaddle.DOM.Generated.AbstractWorker
+        Language.Javascript.JSaddle.DOM.Generated.AllAudioCapabilities
+        Language.Javascript.JSaddle.DOM.Generated.AllVideoCapabilities
+        Language.Javascript.JSaddle.DOM.Generated.AnalyserNode
+        Language.Javascript.JSaddle.DOM.Generated.AnimationEvent
+        Language.Javascript.JSaddle.DOM.Generated.Attr
+        Language.Javascript.JSaddle.DOM.Generated.AudioBuffer
+        Language.Javascript.JSaddle.DOM.Generated.AudioBufferCallback
+        Language.Javascript.JSaddle.DOM.Generated.AudioBufferSourceNode
+        Language.Javascript.JSaddle.DOM.Generated.AudioContext
+        Language.Javascript.JSaddle.DOM.Generated.AudioDestinationNode
+        Language.Javascript.JSaddle.DOM.Generated.AudioListener
+        Language.Javascript.JSaddle.DOM.Generated.AudioNode
+        Language.Javascript.JSaddle.DOM.Generated.AudioParam
+        Language.Javascript.JSaddle.DOM.Generated.AudioProcessingEvent
+        Language.Javascript.JSaddle.DOM.Generated.AudioStreamTrack
+        Language.Javascript.JSaddle.DOM.Generated.AudioTrack
+        Language.Javascript.JSaddle.DOM.Generated.AudioTrackList
+        Language.Javascript.JSaddle.DOM.Generated.AutocompleteErrorEvent
+        Language.Javascript.JSaddle.DOM.Generated.BarProp
+        Language.Javascript.JSaddle.DOM.Generated.BatteryManager
+        Language.Javascript.JSaddle.DOM.Generated.BeforeLoadEvent
+        Language.Javascript.JSaddle.DOM.Generated.BeforeUnloadEvent
+        Language.Javascript.JSaddle.DOM.Generated.BiquadFilterNode
+        Language.Javascript.JSaddle.DOM.Generated.Blob
+        Language.Javascript.JSaddle.DOM.Generated.CSSCharsetRule
+        Language.Javascript.JSaddle.DOM.Generated.CSSFontFaceLoadEvent
+        Language.Javascript.JSaddle.DOM.Generated.CSSFontFaceRule
+        Language.Javascript.JSaddle.DOM.Generated.CSSImportRule
+        Language.Javascript.JSaddle.DOM.Generated.CSSKeyframeRule
+        Language.Javascript.JSaddle.DOM.Generated.CSSKeyframesRule
+        Language.Javascript.JSaddle.DOM.Generated.CSSMediaRule
+        Language.Javascript.JSaddle.DOM.Generated.CSSPageRule
+        Language.Javascript.JSaddle.DOM.Generated.CSSPrimitiveValue
+        Language.Javascript.JSaddle.DOM.Generated.CSSRule
+        Language.Javascript.JSaddle.DOM.Generated.CSSRuleList
+        Language.Javascript.JSaddle.DOM.Generated.CSSStyleDeclaration
+        Language.Javascript.JSaddle.DOM.Generated.CSSStyleRule
+        Language.Javascript.JSaddle.DOM.Generated.CSSStyleSheet
+        Language.Javascript.JSaddle.DOM.Generated.CSSSupportsRule
+        Language.Javascript.JSaddle.DOM.Generated.CSSValue
+        Language.Javascript.JSaddle.DOM.Generated.CSSValueList
+        Language.Javascript.JSaddle.DOM.Generated.CanvasGradient
+        Language.Javascript.JSaddle.DOM.Generated.CanvasRenderingContext
+        Language.Javascript.JSaddle.DOM.Generated.CanvasRenderingContext2D
+        Language.Javascript.JSaddle.DOM.Generated.CapabilityRange
+        Language.Javascript.JSaddle.DOM.Generated.CharacterData
+        Language.Javascript.JSaddle.DOM.Generated.ChildNode
+        Language.Javascript.JSaddle.DOM.Generated.ClientRect
+        Language.Javascript.JSaddle.DOM.Generated.ClientRectList
+        Language.Javascript.JSaddle.DOM.Generated.CloseEvent
+        Language.Javascript.JSaddle.DOM.Generated.CommandLineAPIHost
+        Language.Javascript.JSaddle.DOM.Generated.Comment
+        Language.Javascript.JSaddle.DOM.Generated.CompositionEvent
+        Language.Javascript.JSaddle.DOM.Generated.ConvolverNode
+        Language.Javascript.JSaddle.DOM.Generated.Coordinates
+        Language.Javascript.JSaddle.DOM.Generated.Counter
+        Language.Javascript.JSaddle.DOM.Generated.Crypto
+        Language.Javascript.JSaddle.DOM.Generated.CryptoKey
+        Language.Javascript.JSaddle.DOM.Generated.CryptoKeyPair
+        Language.Javascript.JSaddle.DOM.Generated.CustomEvent
+        Language.Javascript.JSaddle.DOM.Generated.ApplicationCache
+        Language.Javascript.JSaddle.DOM.Generated.DOMError
+        Language.Javascript.JSaddle.DOM.Generated.FormData
+        Language.Javascript.JSaddle.DOM.Generated.DOMImplementation
+        Language.Javascript.JSaddle.DOM.Generated.MimeType
+        Language.Javascript.JSaddle.DOM.Generated.MimeTypeArray
+        Language.Javascript.JSaddle.DOM.Generated.DOMNamedFlowCollection
+        Language.Javascript.JSaddle.DOM.Generated.DOMParser
+        Language.Javascript.JSaddle.DOM.Generated.Path2D
+        Language.Javascript.JSaddle.DOM.Generated.Plugin
+        Language.Javascript.JSaddle.DOM.Generated.PluginArray
+        Language.Javascript.JSaddle.DOM.Generated.SecurityPolicy
+        Language.Javascript.JSaddle.DOM.Generated.Selection
+        Language.Javascript.JSaddle.DOM.Generated.DOMSettableTokenList
+        Language.Javascript.JSaddle.DOM.Generated.DOMStringList
+        Language.Javascript.JSaddle.DOM.Generated.DOMTokenList
+        Language.Javascript.JSaddle.DOM.Generated.URL
+        Language.Javascript.JSaddle.DOM.Generated.Window
+        Language.Javascript.JSaddle.DOM.Generated.CSS
+        Language.Javascript.JSaddle.DOM.Generated.DataCue
+        Language.Javascript.JSaddle.DOM.Generated.DataTransfer
+        Language.Javascript.JSaddle.DOM.Generated.DataTransferItem
+        Language.Javascript.JSaddle.DOM.Generated.DataTransferItemList
+        Language.Javascript.JSaddle.DOM.Generated.Database
+        Language.Javascript.JSaddle.DOM.Generated.DatabaseCallback
+        Language.Javascript.JSaddle.DOM.Generated.DedicatedWorkerGlobalScope
+        Language.Javascript.JSaddle.DOM.Generated.DelayNode
+        Language.Javascript.JSaddle.DOM.Generated.DeviceMotionEvent
+        Language.Javascript.JSaddle.DOM.Generated.DeviceOrientationEvent
+        Language.Javascript.JSaddle.DOM.Generated.DeviceProximityEvent
+        Language.Javascript.JSaddle.DOM.Generated.Document
+        Language.Javascript.JSaddle.DOM.Generated.DocumentFragment
+        Language.Javascript.JSaddle.DOM.Generated.DocumentType
+        Language.Javascript.JSaddle.DOM.Generated.DynamicsCompressorNode
+        Language.Javascript.JSaddle.DOM.Generated.EXTBlendMinMax
+        Language.Javascript.JSaddle.DOM.Generated.EXTsRGB
+        Language.Javascript.JSaddle.DOM.Generated.EXTTextureFilterAnisotropic
+        Language.Javascript.JSaddle.DOM.Generated.Element
+        Language.Javascript.JSaddle.DOM.Generated.Entity
+        Language.Javascript.JSaddle.DOM.Generated.Enums
+        Language.Javascript.JSaddle.DOM.Generated.ErrorEvent
+        Language.Javascript.JSaddle.DOM.Generated.Event
+        Language.Javascript.JSaddle.DOM.Generated.EventListener
+        Language.Javascript.JSaddle.DOM.Generated.EventSource
+        Language.Javascript.JSaddle.DOM.Generated.EventTarget
+        Language.Javascript.JSaddle.DOM.Generated.File
+        Language.Javascript.JSaddle.DOM.Generated.FileError
+        Language.Javascript.JSaddle.DOM.Generated.FileList
+        Language.Javascript.JSaddle.DOM.Generated.FileReader
+        Language.Javascript.JSaddle.DOM.Generated.FileReaderSync
+        Language.Javascript.JSaddle.DOM.Generated.FocusEvent
+        Language.Javascript.JSaddle.DOM.Generated.FontLoader
+        Language.Javascript.JSaddle.DOM.Generated.GainNode
+        Language.Javascript.JSaddle.DOM.Generated.Gamepad
+        Language.Javascript.JSaddle.DOM.Generated.GamepadButton
+        Language.Javascript.JSaddle.DOM.Generated.GamepadEvent
+        Language.Javascript.JSaddle.DOM.Generated.Geolocation
+        Language.Javascript.JSaddle.DOM.Generated.Geoposition
+        Language.Javascript.JSaddle.DOM.Generated.HTMLAllCollection
+        Language.Javascript.JSaddle.DOM.Generated.HTMLAnchorElement
+        Language.Javascript.JSaddle.DOM.Generated.HTMLAppletElement
+        Language.Javascript.JSaddle.DOM.Generated.HTMLAreaElement
+        Language.Javascript.JSaddle.DOM.Generated.HTMLBRElement
+        Language.Javascript.JSaddle.DOM.Generated.HTMLBaseElement
+        Language.Javascript.JSaddle.DOM.Generated.HTMLBaseFontElement
+        Language.Javascript.JSaddle.DOM.Generated.HTMLBodyElement
+        Language.Javascript.JSaddle.DOM.Generated.HTMLButtonElement
+        Language.Javascript.JSaddle.DOM.Generated.HTMLCanvasElement
+        Language.Javascript.JSaddle.DOM.Generated.HTMLCollection
+        Language.Javascript.JSaddle.DOM.Generated.HTMLDListElement
+        Language.Javascript.JSaddle.DOM.Generated.HTMLDataListElement
+        Language.Javascript.JSaddle.DOM.Generated.HTMLDetailsElement
+        Language.Javascript.JSaddle.DOM.Generated.HTMLDirectoryElement
+        Language.Javascript.JSaddle.DOM.Generated.HTMLDivElement
+        Language.Javascript.JSaddle.DOM.Generated.HTMLDocument
+        Language.Javascript.JSaddle.DOM.Generated.HTMLElement
+        Language.Javascript.JSaddle.DOM.Generated.HTMLEmbedElement
+        Language.Javascript.JSaddle.DOM.Generated.HTMLFieldSetElement
+        Language.Javascript.JSaddle.DOM.Generated.HTMLFontElement
+        Language.Javascript.JSaddle.DOM.Generated.HTMLFormControlsCollection
+        Language.Javascript.JSaddle.DOM.Generated.HTMLFormElement
+        Language.Javascript.JSaddle.DOM.Generated.HTMLFrameElement
+        Language.Javascript.JSaddle.DOM.Generated.HTMLFrameSetElement
+        Language.Javascript.JSaddle.DOM.Generated.HTMLHRElement
+        Language.Javascript.JSaddle.DOM.Generated.HTMLHeadElement
+        Language.Javascript.JSaddle.DOM.Generated.HTMLHeadingElement
+        Language.Javascript.JSaddle.DOM.Generated.HTMLHtmlElement
+        Language.Javascript.JSaddle.DOM.Generated.HTMLIFrameElement
+        Language.Javascript.JSaddle.DOM.Generated.HTMLImageElement
+        Language.Javascript.JSaddle.DOM.Generated.HTMLInputElement
+        Language.Javascript.JSaddle.DOM.Generated.HTMLKeygenElement
+        Language.Javascript.JSaddle.DOM.Generated.HTMLLIElement
+        Language.Javascript.JSaddle.DOM.Generated.HTMLLabelElement
+        Language.Javascript.JSaddle.DOM.Generated.HTMLLegendElement
+        Language.Javascript.JSaddle.DOM.Generated.HTMLLinkElement
+        Language.Javascript.JSaddle.DOM.Generated.HTMLMapElement
+        Language.Javascript.JSaddle.DOM.Generated.HTMLMarqueeElement
+        Language.Javascript.JSaddle.DOM.Generated.HTMLMediaElement
+        Language.Javascript.JSaddle.DOM.Generated.HTMLMenuElement
+        Language.Javascript.JSaddle.DOM.Generated.HTMLMetaElement
+        Language.Javascript.JSaddle.DOM.Generated.HTMLMeterElement
+        Language.Javascript.JSaddle.DOM.Generated.HTMLModElement
+        Language.Javascript.JSaddle.DOM.Generated.HTMLOListElement
+        Language.Javascript.JSaddle.DOM.Generated.HTMLObjectElement
+        Language.Javascript.JSaddle.DOM.Generated.HTMLOptGroupElement
+        Language.Javascript.JSaddle.DOM.Generated.HTMLOptionElement
+        Language.Javascript.JSaddle.DOM.Generated.HTMLOptionsCollection
+        Language.Javascript.JSaddle.DOM.Generated.HTMLOutputElement
+        Language.Javascript.JSaddle.DOM.Generated.HTMLParagraphElement
+        Language.Javascript.JSaddle.DOM.Generated.HTMLParamElement
+        Language.Javascript.JSaddle.DOM.Generated.HTMLPreElement
+        Language.Javascript.JSaddle.DOM.Generated.HTMLProgressElement
+        Language.Javascript.JSaddle.DOM.Generated.HTMLQuoteElement
+        Language.Javascript.JSaddle.DOM.Generated.HTMLScriptElement
+        Language.Javascript.JSaddle.DOM.Generated.HTMLSelectElement
+        Language.Javascript.JSaddle.DOM.Generated.HTMLSourceElement
+        Language.Javascript.JSaddle.DOM.Generated.HTMLStyleElement
+        Language.Javascript.JSaddle.DOM.Generated.HTMLTableCaptionElement
+        Language.Javascript.JSaddle.DOM.Generated.HTMLTableCellElement
+        Language.Javascript.JSaddle.DOM.Generated.HTMLTableColElement
+        Language.Javascript.JSaddle.DOM.Generated.HTMLTableElement
+        Language.Javascript.JSaddle.DOM.Generated.HTMLTableRowElement
+        Language.Javascript.JSaddle.DOM.Generated.HTMLTableSectionElement
+        Language.Javascript.JSaddle.DOM.Generated.HTMLTemplateElement
+        Language.Javascript.JSaddle.DOM.Generated.HTMLTextAreaElement
+        Language.Javascript.JSaddle.DOM.Generated.HTMLTitleElement
+        Language.Javascript.JSaddle.DOM.Generated.HTMLTrackElement
+        Language.Javascript.JSaddle.DOM.Generated.HTMLUListElement
+        Language.Javascript.JSaddle.DOM.Generated.HTMLVideoElement
+        Language.Javascript.JSaddle.DOM.Generated.HashChangeEvent
+        Language.Javascript.JSaddle.DOM.Generated.History
+        Language.Javascript.JSaddle.DOM.Generated.IDBCursor
+        Language.Javascript.JSaddle.DOM.Generated.IDBCursorWithValue
+        Language.Javascript.JSaddle.DOM.Generated.IDBDatabase
+        Language.Javascript.JSaddle.DOM.Generated.IDBFactory
+        Language.Javascript.JSaddle.DOM.Generated.IDBIndex
+        Language.Javascript.JSaddle.DOM.Generated.IDBKeyRange
+        Language.Javascript.JSaddle.DOM.Generated.IDBObjectStore
+        Language.Javascript.JSaddle.DOM.Generated.IDBOpenDBRequest
+        Language.Javascript.JSaddle.DOM.Generated.IDBRequest
+        Language.Javascript.JSaddle.DOM.Generated.IDBTransaction
+        Language.Javascript.JSaddle.DOM.Generated.IDBVersionChangeEvent
+        Language.Javascript.JSaddle.DOM.Generated.ImageData
+        Language.Javascript.JSaddle.DOM.Generated.InspectorFrontendHost
+        Language.Javascript.JSaddle.DOM.Generated.InternalSettings
+        Language.Javascript.JSaddle.DOM.Generated.Internals
+        Language.Javascript.JSaddle.DOM.Generated.KeyboardEvent
+        Language.Javascript.JSaddle.DOM.Generated.Location
+        Language.Javascript.JSaddle.DOM.Generated.MallocStatistics
+        Language.Javascript.JSaddle.DOM.Generated.MediaController
+        Language.Javascript.JSaddle.DOM.Generated.MediaControlsHost
+        Language.Javascript.JSaddle.DOM.Generated.MediaElementAudioSourceNode
+        Language.Javascript.JSaddle.DOM.Generated.MediaError
+        Language.Javascript.JSaddle.DOM.Generated.MediaKeyError
+        Language.Javascript.JSaddle.DOM.Generated.MediaKeyEvent
+        Language.Javascript.JSaddle.DOM.Generated.MediaKeyMessageEvent
+        Language.Javascript.JSaddle.DOM.Generated.MediaKeyNeededEvent
+        Language.Javascript.JSaddle.DOM.Generated.MediaKeySession
+        Language.Javascript.JSaddle.DOM.Generated.MediaKeys
+        Language.Javascript.JSaddle.DOM.Generated.MediaList
+        Language.Javascript.JSaddle.DOM.Generated.MediaQueryList
+        Language.Javascript.JSaddle.DOM.Generated.MediaQueryListListener
+        Language.Javascript.JSaddle.DOM.Generated.MediaSource
+        Language.Javascript.JSaddle.DOM.Generated.MediaSourceStates
+        Language.Javascript.JSaddle.DOM.Generated.MediaStream
+        Language.Javascript.JSaddle.DOM.Generated.MediaStreamAudioDestinationNode
+        Language.Javascript.JSaddle.DOM.Generated.MediaStreamAudioSourceNode
+        Language.Javascript.JSaddle.DOM.Generated.MediaStreamEvent
+        Language.Javascript.JSaddle.DOM.Generated.MediaStreamTrack
+        Language.Javascript.JSaddle.DOM.Generated.MediaStreamTrackEvent
+        Language.Javascript.JSaddle.DOM.Generated.MediaStreamTrackSourcesCallback
+        Language.Javascript.JSaddle.DOM.Generated.MediaTrackConstraints
+        Language.Javascript.JSaddle.DOM.Generated.MemoryInfo
+        Language.Javascript.JSaddle.DOM.Generated.MessageChannel
+        Language.Javascript.JSaddle.DOM.Generated.MessageEvent
+        Language.Javascript.JSaddle.DOM.Generated.MessagePort
+        Language.Javascript.JSaddle.DOM.Generated.MouseEvent
+        Language.Javascript.JSaddle.DOM.Generated.MutationEvent
+        Language.Javascript.JSaddle.DOM.Generated.MutationObserver
+        Language.Javascript.JSaddle.DOM.Generated.MutationRecord
+        Language.Javascript.JSaddle.DOM.Generated.NamedNodeMap
+        Language.Javascript.JSaddle.DOM.Generated.Navigator
+        Language.Javascript.JSaddle.DOM.Generated.NavigatorUserMediaError
+        Language.Javascript.JSaddle.DOM.Generated.NavigatorUserMediaErrorCallback
+        Language.Javascript.JSaddle.DOM.Generated.NavigatorUserMediaSuccessCallback
+        Language.Javascript.JSaddle.DOM.Generated.Node
+        Language.Javascript.JSaddle.DOM.Generated.NodeFilter
+        Language.Javascript.JSaddle.DOM.Generated.NodeIterator
+        Language.Javascript.JSaddle.DOM.Generated.NodeList
+        Language.Javascript.JSaddle.DOM.Generated.Notification
+        Language.Javascript.JSaddle.DOM.Generated.NotificationCenter
+        Language.Javascript.JSaddle.DOM.Generated.NotificationPermissionCallback
+        Language.Javascript.JSaddle.DOM.Generated.OESStandardDerivatives
+        Language.Javascript.JSaddle.DOM.Generated.OESTextureHalfFloat
+        Language.Javascript.JSaddle.DOM.Generated.OESVertexArrayObject
+        Language.Javascript.JSaddle.DOM.Generated.OfflineAudioCompletionEvent
+        Language.Javascript.JSaddle.DOM.Generated.OfflineAudioContext
+        Language.Javascript.JSaddle.DOM.Generated.OscillatorNode
+        Language.Javascript.JSaddle.DOM.Generated.OverflowEvent
+        Language.Javascript.JSaddle.DOM.Generated.PageTransitionEvent
+        Language.Javascript.JSaddle.DOM.Generated.PannerNode
+        Language.Javascript.JSaddle.DOM.Generated.Performance
+        Language.Javascript.JSaddle.DOM.Generated.PerformanceEntry
+        Language.Javascript.JSaddle.DOM.Generated.PerformanceEntryList
+        Language.Javascript.JSaddle.DOM.Generated.PerformanceNavigation
+        Language.Javascript.JSaddle.DOM.Generated.PerformanceResourceTiming
+        Language.Javascript.JSaddle.DOM.Generated.PerformanceTiming
+        Language.Javascript.JSaddle.DOM.Generated.PopStateEvent
+        Language.Javascript.JSaddle.DOM.Generated.PositionCallback
+        Language.Javascript.JSaddle.DOM.Generated.PositionError
+        Language.Javascript.JSaddle.DOM.Generated.PositionErrorCallback
+        Language.Javascript.JSaddle.DOM.Generated.ProcessingInstruction
+        Language.Javascript.JSaddle.DOM.Generated.ProgressEvent
+        Language.Javascript.JSaddle.DOM.Generated.QuickTimePluginReplacement
+        Language.Javascript.JSaddle.DOM.Generated.RGBColor
+        Language.Javascript.JSaddle.DOM.Generated.RTCConfiguration
+        Language.Javascript.JSaddle.DOM.Generated.RTCDTMFSender
+        Language.Javascript.JSaddle.DOM.Generated.RTCDTMFToneChangeEvent
+        Language.Javascript.JSaddle.DOM.Generated.RTCDataChannel
+        Language.Javascript.JSaddle.DOM.Generated.RTCDataChannelEvent
+        Language.Javascript.JSaddle.DOM.Generated.RTCIceCandidate
+        Language.Javascript.JSaddle.DOM.Generated.RTCIceCandidateEvent
+        Language.Javascript.JSaddle.DOM.Generated.RTCIceServer
+        Language.Javascript.JSaddle.DOM.Generated.RTCPeerConnection
+        Language.Javascript.JSaddle.DOM.Generated.RTCPeerConnectionErrorCallback
+        Language.Javascript.JSaddle.DOM.Generated.RTCSessionDescription
+        Language.Javascript.JSaddle.DOM.Generated.RTCSessionDescriptionCallback
+        Language.Javascript.JSaddle.DOM.Generated.RTCStatsCallback
+        Language.Javascript.JSaddle.DOM.Generated.RTCStatsReport
+        Language.Javascript.JSaddle.DOM.Generated.RTCStatsResponse
+        Language.Javascript.JSaddle.DOM.Generated.RadioNodeList
+        Language.Javascript.JSaddle.DOM.Generated.Range
+        Language.Javascript.JSaddle.DOM.Generated.ReadableStream
+        Language.Javascript.JSaddle.DOM.Generated.Rect
+        Language.Javascript.JSaddle.DOM.Generated.RequestAnimationFrameCallback
+        Language.Javascript.JSaddle.DOM.Generated.SQLError
+        Language.Javascript.JSaddle.DOM.Generated.SQLResultSet
+        Language.Javascript.JSaddle.DOM.Generated.SQLResultSetRowList
+        Language.Javascript.JSaddle.DOM.Generated.SQLStatementCallback
+        Language.Javascript.JSaddle.DOM.Generated.SQLStatementErrorCallback
+        Language.Javascript.JSaddle.DOM.Generated.SQLTransaction
+        Language.Javascript.JSaddle.DOM.Generated.SQLTransactionCallback
+        Language.Javascript.JSaddle.DOM.Generated.SQLTransactionErrorCallback
+        Language.Javascript.JSaddle.DOM.Generated.SVGAElement
+        Language.Javascript.JSaddle.DOM.Generated.SVGAltGlyphElement
+        Language.Javascript.JSaddle.DOM.Generated.SVGAngle
+        Language.Javascript.JSaddle.DOM.Generated.SVGAnimatedAngle
+        Language.Javascript.JSaddle.DOM.Generated.SVGAnimatedBoolean
+        Language.Javascript.JSaddle.DOM.Generated.SVGAnimatedEnumeration
+        Language.Javascript.JSaddle.DOM.Generated.SVGAnimatedInteger
+        Language.Javascript.JSaddle.DOM.Generated.SVGAnimatedLength
+        Language.Javascript.JSaddle.DOM.Generated.SVGAnimatedLengthList
+        Language.Javascript.JSaddle.DOM.Generated.SVGAnimatedNumber
+        Language.Javascript.JSaddle.DOM.Generated.SVGAnimatedNumberList
+        Language.Javascript.JSaddle.DOM.Generated.SVGAnimatedPreserveAspectRatio
+        Language.Javascript.JSaddle.DOM.Generated.SVGAnimatedRect
+        Language.Javascript.JSaddle.DOM.Generated.SVGAnimatedString
+        Language.Javascript.JSaddle.DOM.Generated.SVGAnimatedTransformList
+        Language.Javascript.JSaddle.DOM.Generated.SVGAnimationElement
+        Language.Javascript.JSaddle.DOM.Generated.SVGCircleElement
+        Language.Javascript.JSaddle.DOM.Generated.SVGClipPathElement
+        Language.Javascript.JSaddle.DOM.Generated.SVGColor
+        Language.Javascript.JSaddle.DOM.Generated.SVGComponentTransferFunctionElement
+        Language.Javascript.JSaddle.DOM.Generated.SVGCursorElement
+        Language.Javascript.JSaddle.DOM.Generated.SVGDocument
+        Language.Javascript.JSaddle.DOM.Generated.SVGElement
+        Language.Javascript.JSaddle.DOM.Generated.SVGEllipseElement
+        Language.Javascript.JSaddle.DOM.Generated.SVGExternalResourcesRequired
+        Language.Javascript.JSaddle.DOM.Generated.SVGFEBlendElement
+        Language.Javascript.JSaddle.DOM.Generated.SVGFEColorMatrixElement
+        Language.Javascript.JSaddle.DOM.Generated.SVGFEComponentTransferElement
+        Language.Javascript.JSaddle.DOM.Generated.SVGFECompositeElement
+        Language.Javascript.JSaddle.DOM.Generated.SVGFEConvolveMatrixElement
+        Language.Javascript.JSaddle.DOM.Generated.SVGFEDiffuseLightingElement
+        Language.Javascript.JSaddle.DOM.Generated.SVGFEDisplacementMapElement
+        Language.Javascript.JSaddle.DOM.Generated.SVGFEDistantLightElement
+        Language.Javascript.JSaddle.DOM.Generated.SVGFEDropShadowElement
+        Language.Javascript.JSaddle.DOM.Generated.SVGFEGaussianBlurElement
+        Language.Javascript.JSaddle.DOM.Generated.SVGFEImageElement
+        Language.Javascript.JSaddle.DOM.Generated.SVGFEMergeNodeElement
+        Language.Javascript.JSaddle.DOM.Generated.SVGFEMorphologyElement
+        Language.Javascript.JSaddle.DOM.Generated.SVGFEOffsetElement
+        Language.Javascript.JSaddle.DOM.Generated.SVGFEPointLightElement
+        Language.Javascript.JSaddle.DOM.Generated.SVGFESpecularLightingElement
+        Language.Javascript.JSaddle.DOM.Generated.SVGFESpotLightElement
+        Language.Javascript.JSaddle.DOM.Generated.SVGFETileElement
+        Language.Javascript.JSaddle.DOM.Generated.SVGFETurbulenceElement
+        Language.Javascript.JSaddle.DOM.Generated.SVGFilterElement
+        Language.Javascript.JSaddle.DOM.Generated.SVGFilterPrimitiveStandardAttributes
+        Language.Javascript.JSaddle.DOM.Generated.SVGFitToViewBox
+        Language.Javascript.JSaddle.DOM.Generated.SVGForeignObjectElement
+        Language.Javascript.JSaddle.DOM.Generated.SVGGlyphRefElement
+        Language.Javascript.JSaddle.DOM.Generated.SVGGradientElement
+        Language.Javascript.JSaddle.DOM.Generated.SVGGraphicsElement
+        Language.Javascript.JSaddle.DOM.Generated.SVGImageElement
+        Language.Javascript.JSaddle.DOM.Generated.SVGLength
+        Language.Javascript.JSaddle.DOM.Generated.SVGLengthList
+        Language.Javascript.JSaddle.DOM.Generated.SVGLineElement
+        Language.Javascript.JSaddle.DOM.Generated.SVGLinearGradientElement
+        Language.Javascript.JSaddle.DOM.Generated.SVGMarkerElement
+        Language.Javascript.JSaddle.DOM.Generated.SVGMaskElement
+        Language.Javascript.JSaddle.DOM.Generated.SVGMatrix
+        Language.Javascript.JSaddle.DOM.Generated.SVGNumber
+        Language.Javascript.JSaddle.DOM.Generated.SVGNumberList
+        Language.Javascript.JSaddle.DOM.Generated.SVGPaint
+        Language.Javascript.JSaddle.DOM.Generated.SVGPathElement
+        Language.Javascript.JSaddle.DOM.Generated.SVGPathSeg
+        Language.Javascript.JSaddle.DOM.Generated.SVGPathSegArcAbs
+        Language.Javascript.JSaddle.DOM.Generated.SVGPathSegArcRel
+        Language.Javascript.JSaddle.DOM.Generated.SVGPathSegCurvetoCubicAbs
+        Language.Javascript.JSaddle.DOM.Generated.SVGPathSegCurvetoCubicRel
+        Language.Javascript.JSaddle.DOM.Generated.SVGPathSegCurvetoCubicSmoothAbs
+        Language.Javascript.JSaddle.DOM.Generated.SVGPathSegCurvetoCubicSmoothRel
+        Language.Javascript.JSaddle.DOM.Generated.SVGPathSegCurvetoQuadraticAbs
+        Language.Javascript.JSaddle.DOM.Generated.SVGPathSegCurvetoQuadraticRel
+        Language.Javascript.JSaddle.DOM.Generated.SVGPathSegCurvetoQuadraticSmoothAbs
+        Language.Javascript.JSaddle.DOM.Generated.SVGPathSegCurvetoQuadraticSmoothRel
+        Language.Javascript.JSaddle.DOM.Generated.SVGPathSegLinetoAbs
+        Language.Javascript.JSaddle.DOM.Generated.SVGPathSegLinetoHorizontalAbs
+        Language.Javascript.JSaddle.DOM.Generated.SVGPathSegLinetoHorizontalRel
+        Language.Javascript.JSaddle.DOM.Generated.SVGPathSegLinetoRel
+        Language.Javascript.JSaddle.DOM.Generated.SVGPathSegLinetoVerticalAbs
+        Language.Javascript.JSaddle.DOM.Generated.SVGPathSegLinetoVerticalRel
+        Language.Javascript.JSaddle.DOM.Generated.SVGPathSegList
+        Language.Javascript.JSaddle.DOM.Generated.SVGPathSegMovetoAbs
+        Language.Javascript.JSaddle.DOM.Generated.SVGPathSegMovetoRel
+        Language.Javascript.JSaddle.DOM.Generated.SVGPatternElement
+        Language.Javascript.JSaddle.DOM.Generated.SVGPoint
+        Language.Javascript.JSaddle.DOM.Generated.SVGPointList
+        Language.Javascript.JSaddle.DOM.Generated.SVGPolygonElement
+        Language.Javascript.JSaddle.DOM.Generated.SVGPolylineElement
+        Language.Javascript.JSaddle.DOM.Generated.SVGPreserveAspectRatio
+        Language.Javascript.JSaddle.DOM.Generated.SVGRadialGradientElement
+        Language.Javascript.JSaddle.DOM.Generated.SVGRect
+        Language.Javascript.JSaddle.DOM.Generated.SVGRectElement
+        Language.Javascript.JSaddle.DOM.Generated.SVGRenderingIntent
+        Language.Javascript.JSaddle.DOM.Generated.SVGScriptElement
+        Language.Javascript.JSaddle.DOM.Generated.SVGSVGElement
+        Language.Javascript.JSaddle.DOM.Generated.SVGStopElement
+        Language.Javascript.JSaddle.DOM.Generated.SVGStringList
+        Language.Javascript.JSaddle.DOM.Generated.SVGStyleElement
+        Language.Javascript.JSaddle.DOM.Generated.SVGTests
+        Language.Javascript.JSaddle.DOM.Generated.SVGTextContentElement
+        Language.Javascript.JSaddle.DOM.Generated.SVGTextPathElement
+        Language.Javascript.JSaddle.DOM.Generated.SVGTextPositioningElement
+        Language.Javascript.JSaddle.DOM.Generated.SVGTransform
+        Language.Javascript.JSaddle.DOM.Generated.SVGTransformList
+        Language.Javascript.JSaddle.DOM.Generated.SVGURIReference
+        Language.Javascript.JSaddle.DOM.Generated.SVGUnitTypes
+        Language.Javascript.JSaddle.DOM.Generated.SVGUseElement
+        Language.Javascript.JSaddle.DOM.Generated.SVGViewElement
+        Language.Javascript.JSaddle.DOM.Generated.SVGViewSpec
+        Language.Javascript.JSaddle.DOM.Generated.SVGZoomAndPan
+        Language.Javascript.JSaddle.DOM.Generated.SVGZoomEvent
+        Language.Javascript.JSaddle.DOM.Generated.Screen
+        Language.Javascript.JSaddle.DOM.Generated.ScriptProcessorNode
+        Language.Javascript.JSaddle.DOM.Generated.ScriptProfile
+        Language.Javascript.JSaddle.DOM.Generated.ScriptProfileNode
+        Language.Javascript.JSaddle.DOM.Generated.SecurityPolicyViolationEvent
+        Language.Javascript.JSaddle.DOM.Generated.SourceBuffer
+        Language.Javascript.JSaddle.DOM.Generated.SourceBufferList
+        Language.Javascript.JSaddle.DOM.Generated.SourceInfo
+        Language.Javascript.JSaddle.DOM.Generated.SpeechSynthesis
+        Language.Javascript.JSaddle.DOM.Generated.SpeechSynthesisEvent
+        Language.Javascript.JSaddle.DOM.Generated.SpeechSynthesisUtterance
+        Language.Javascript.JSaddle.DOM.Generated.SpeechSynthesisVoice
+        Language.Javascript.JSaddle.DOM.Generated.Storage
+        Language.Javascript.JSaddle.DOM.Generated.StorageErrorCallback
+        Language.Javascript.JSaddle.DOM.Generated.StorageEvent
+        Language.Javascript.JSaddle.DOM.Generated.StorageInfo
+        Language.Javascript.JSaddle.DOM.Generated.StorageQuota
+        Language.Javascript.JSaddle.DOM.Generated.StorageQuotaCallback
+        Language.Javascript.JSaddle.DOM.Generated.StorageUsageCallback
+        Language.Javascript.JSaddle.DOM.Generated.StringCallback
+        Language.Javascript.JSaddle.DOM.Generated.StyleMedia
+        Language.Javascript.JSaddle.DOM.Generated.StyleSheet
+        Language.Javascript.JSaddle.DOM.Generated.StyleSheetList
+        Language.Javascript.JSaddle.DOM.Generated.SubtleCrypto
+        Language.Javascript.JSaddle.DOM.Generated.Text
+        Language.Javascript.JSaddle.DOM.Generated.TextEvent
+        Language.Javascript.JSaddle.DOM.Generated.TextMetrics
+        Language.Javascript.JSaddle.DOM.Generated.TextTrack
+        Language.Javascript.JSaddle.DOM.Generated.TextTrackCue
+        Language.Javascript.JSaddle.DOM.Generated.TextTrackCueList
+        Language.Javascript.JSaddle.DOM.Generated.TextTrackList
+        Language.Javascript.JSaddle.DOM.Generated.TimeRanges
+        Language.Javascript.JSaddle.DOM.Generated.Touch
+        Language.Javascript.JSaddle.DOM.Generated.TouchEvent
+        Language.Javascript.JSaddle.DOM.Generated.TouchList
+        Language.Javascript.JSaddle.DOM.Generated.TrackEvent
+        Language.Javascript.JSaddle.DOM.Generated.TransitionEvent
+        Language.Javascript.JSaddle.DOM.Generated.TreeWalker
+        Language.Javascript.JSaddle.DOM.Generated.TypeConversions
+        Language.Javascript.JSaddle.DOM.Generated.UIEvent
+        Language.Javascript.JSaddle.DOM.Generated.UIRequestEvent
+        Language.Javascript.JSaddle.DOM.Generated.URLUtils
+        Language.Javascript.JSaddle.DOM.Generated.UserMessageHandler
+        Language.Javascript.JSaddle.DOM.Generated.VTTCue
+        Language.Javascript.JSaddle.DOM.Generated.VTTRegion
+        Language.Javascript.JSaddle.DOM.Generated.VTTRegionList
+        Language.Javascript.JSaddle.DOM.Generated.ValidityState
+        Language.Javascript.JSaddle.DOM.Generated.VideoPlaybackQuality
+        Language.Javascript.JSaddle.DOM.Generated.VideoStreamTrack
+        Language.Javascript.JSaddle.DOM.Generated.VideoTrack
+        Language.Javascript.JSaddle.DOM.Generated.VideoTrackList
+        Language.Javascript.JSaddle.DOM.Generated.VoidCallback
+        Language.Javascript.JSaddle.DOM.Generated.WaveShaperNode
+        Language.Javascript.JSaddle.DOM.Generated.WebGL2RenderingContext
+        Language.Javascript.JSaddle.DOM.Generated.WebGLActiveInfo
+        Language.Javascript.JSaddle.DOM.Generated.WebGLCompressedTextureATC
+        Language.Javascript.JSaddle.DOM.Generated.WebGLCompressedTexturePVRTC
+        Language.Javascript.JSaddle.DOM.Generated.WebGLCompressedTextureS3TC
+        Language.Javascript.JSaddle.DOM.Generated.WebGLContextAttributes
+        Language.Javascript.JSaddle.DOM.Generated.WebGLContextEvent
+        Language.Javascript.JSaddle.DOM.Generated.WebGLDebugRendererInfo
+        Language.Javascript.JSaddle.DOM.Generated.WebGLDebugShaders
+        Language.Javascript.JSaddle.DOM.Generated.WebGLDepthTexture
+        Language.Javascript.JSaddle.DOM.Generated.WebGLDrawBuffers
+        Language.Javascript.JSaddle.DOM.Generated.WebGLLoseContext
+        Language.Javascript.JSaddle.DOM.Generated.WebGLRenderingContextBase
+        Language.Javascript.JSaddle.DOM.Generated.WebGLShaderPrecisionFormat
+        Language.Javascript.JSaddle.DOM.Generated.WebKitAnimationEvent
+        Language.Javascript.JSaddle.DOM.Generated.WebKitCSSFilterValue
+        Language.Javascript.JSaddle.DOM.Generated.WebKitCSSMatrix
+        Language.Javascript.JSaddle.DOM.Generated.WebKitCSSRegionRule
+        Language.Javascript.JSaddle.DOM.Generated.WebKitCSSTransformValue
+        Language.Javascript.JSaddle.DOM.Generated.WebKitCSSViewportRule
+        Language.Javascript.JSaddle.DOM.Generated.WebKitNamedFlow
+        Language.Javascript.JSaddle.DOM.Generated.WebKitNamespace
+        Language.Javascript.JSaddle.DOM.Generated.WebKitPlaybackTargetAvailabilityEvent
+        Language.Javascript.JSaddle.DOM.Generated.WebKitPoint
+        Language.Javascript.JSaddle.DOM.Generated.WebKitTransitionEvent
+        Language.Javascript.JSaddle.DOM.Generated.WebSocket
+        Language.Javascript.JSaddle.DOM.Generated.WheelEvent
+        Language.Javascript.JSaddle.DOM.Generated.WindowBase64
+        Language.Javascript.JSaddle.DOM.Generated.WindowTimers
+        Language.Javascript.JSaddle.DOM.Generated.Worker
+        Language.Javascript.JSaddle.DOM.Generated.WorkerGlobalScope
+        Language.Javascript.JSaddle.DOM.Generated.WorkerLocation
+        Language.Javascript.JSaddle.DOM.Generated.WorkerNavigator
+        Language.Javascript.JSaddle.DOM.Generated.XMLHttpRequest
+        Language.Javascript.JSaddle.DOM.Generated.XMLHttpRequestProgressEvent
+        Language.Javascript.JSaddle.DOM.Generated.XMLHttpRequestUpload
+        Language.Javascript.JSaddle.DOM.Generated.XMLSerializer
+        Language.Javascript.JSaddle.DOM.Generated.XPathEvaluator
+        Language.Javascript.JSaddle.DOM.Generated.XPathExpression
+        Language.Javascript.JSaddle.DOM.Generated.XPathNSResolver
+        Language.Javascript.JSaddle.DOM.Generated.XPathResult
+        Language.Javascript.JSaddle.DOM.Generated.XSLTProcessor
+        Language.Javascript.JSaddle.DOM
+        Language.Javascript.JSaddle.DOM.ANGLEInstancedArrays
+        Language.Javascript.JSaddle.DOM.AbstractView
+        Language.Javascript.JSaddle.DOM.AbstractWorker
+        Language.Javascript.JSaddle.DOM.AllAudioCapabilities
+        Language.Javascript.JSaddle.DOM.AllVideoCapabilities
+        Language.Javascript.JSaddle.DOM.AnalyserNode
+        Language.Javascript.JSaddle.DOM.AnimationEvent
+        Language.Javascript.JSaddle.DOM.Attr
+        Language.Javascript.JSaddle.DOM.AudioBuffer
+        Language.Javascript.JSaddle.DOM.AudioBufferCallback
+        Language.Javascript.JSaddle.DOM.AudioBufferSourceNode
+        Language.Javascript.JSaddle.DOM.AudioContext
+        Language.Javascript.JSaddle.DOM.AudioDestinationNode
+        Language.Javascript.JSaddle.DOM.AudioListener
+        Language.Javascript.JSaddle.DOM.AudioNode
+        Language.Javascript.JSaddle.DOM.AudioParam
+        Language.Javascript.JSaddle.DOM.AudioProcessingEvent
+        Language.Javascript.JSaddle.DOM.AudioStreamTrack
+        Language.Javascript.JSaddle.DOM.AudioTrack
+        Language.Javascript.JSaddle.DOM.AudioTrackList
+        Language.Javascript.JSaddle.DOM.AutocompleteErrorEvent
+        Language.Javascript.JSaddle.DOM.BarProp
+        Language.Javascript.JSaddle.DOM.BatteryManager
+        Language.Javascript.JSaddle.DOM.BeforeLoadEvent
+        Language.Javascript.JSaddle.DOM.BeforeUnloadEvent
+        Language.Javascript.JSaddle.DOM.BiquadFilterNode
+        Language.Javascript.JSaddle.DOM.Blob
+        Language.Javascript.JSaddle.DOM.CSSCharsetRule
+        Language.Javascript.JSaddle.DOM.CSSFontFaceLoadEvent
+        Language.Javascript.JSaddle.DOM.CSSFontFaceRule
+        Language.Javascript.JSaddle.DOM.CSSImportRule
+        Language.Javascript.JSaddle.DOM.CSSKeyframeRule
+        Language.Javascript.JSaddle.DOM.CSSKeyframesRule
+        Language.Javascript.JSaddle.DOM.CSSMediaRule
+        Language.Javascript.JSaddle.DOM.CSSPageRule
+        Language.Javascript.JSaddle.DOM.CSSPrimitiveValue
+        Language.Javascript.JSaddle.DOM.CSSRule
+        Language.Javascript.JSaddle.DOM.CSSRuleList
+        Language.Javascript.JSaddle.DOM.CSSStyleDeclaration
+        Language.Javascript.JSaddle.DOM.CSSStyleRule
+        Language.Javascript.JSaddle.DOM.CSSStyleSheet
+        Language.Javascript.JSaddle.DOM.CSSSupportsRule
+        Language.Javascript.JSaddle.DOM.CSSValue
+        Language.Javascript.JSaddle.DOM.CSSValueList
+        Language.Javascript.JSaddle.DOM.CanvasGradient
+        Language.Javascript.JSaddle.DOM.CanvasRenderingContext
+        Language.Javascript.JSaddle.DOM.CanvasRenderingContext2D
+        Language.Javascript.JSaddle.DOM.CapabilityRange
+        Language.Javascript.JSaddle.DOM.CharacterData
+        Language.Javascript.JSaddle.DOM.ChildNode
+        Language.Javascript.JSaddle.DOM.ClientRect
+        Language.Javascript.JSaddle.DOM.ClientRectList
+        Language.Javascript.JSaddle.DOM.CloseEvent
+        Language.Javascript.JSaddle.DOM.CommandLineAPIHost
+        Language.Javascript.JSaddle.DOM.Comment
+        Language.Javascript.JSaddle.DOM.CompositionEvent
+        Language.Javascript.JSaddle.DOM.ConvolverNode
+        Language.Javascript.JSaddle.DOM.Coordinates
+        Language.Javascript.JSaddle.DOM.Counter
+        Language.Javascript.JSaddle.DOM.Crypto
+        Language.Javascript.JSaddle.DOM.CryptoKey
+        Language.Javascript.JSaddle.DOM.CryptoKeyPair
+        Language.Javascript.JSaddle.DOM.CustomEvent
+        Language.Javascript.JSaddle.DOM.ApplicationCache
+        Language.Javascript.JSaddle.DOM.DOMError
+        Language.Javascript.JSaddle.DOM.FormData
+        Language.Javascript.JSaddle.DOM.DOMImplementation
+        Language.Javascript.JSaddle.DOM.MimeType
+        Language.Javascript.JSaddle.DOM.MimeTypeArray
+        Language.Javascript.JSaddle.DOM.DOMNamedFlowCollection
+        Language.Javascript.JSaddle.DOM.DOMParser
+        Language.Javascript.JSaddle.DOM.Path2D
+        Language.Javascript.JSaddle.DOM.Plugin
+        Language.Javascript.JSaddle.DOM.PluginArray
+        Language.Javascript.JSaddle.DOM.SecurityPolicy
+        Language.Javascript.JSaddle.DOM.Selection
+        Language.Javascript.JSaddle.DOM.DOMSettableTokenList
+        Language.Javascript.JSaddle.DOM.DOMStringList
+        Language.Javascript.JSaddle.DOM.DOMTokenList
+        Language.Javascript.JSaddle.DOM.URL
+        Language.Javascript.JSaddle.DOM.Window
+        Language.Javascript.JSaddle.DOM.CSS
+        Language.Javascript.JSaddle.DOM.DataCue
+        Language.Javascript.JSaddle.DOM.DataTransfer
+        Language.Javascript.JSaddle.DOM.DataTransferItem
+        Language.Javascript.JSaddle.DOM.DataTransferItemList
+        Language.Javascript.JSaddle.DOM.Database
+        Language.Javascript.JSaddle.DOM.DatabaseCallback
+        Language.Javascript.JSaddle.DOM.DedicatedWorkerGlobalScope
+        Language.Javascript.JSaddle.DOM.DelayNode
+        Language.Javascript.JSaddle.DOM.DeviceMotionEvent
+        Language.Javascript.JSaddle.DOM.DeviceOrientationEvent
+        Language.Javascript.JSaddle.DOM.DeviceProximityEvent
+        Language.Javascript.JSaddle.DOM.Document
+        Language.Javascript.JSaddle.DOM.DocumentFragment
+        Language.Javascript.JSaddle.DOM.DocumentType
+        Language.Javascript.JSaddle.DOM.DynamicsCompressorNode
+        Language.Javascript.JSaddle.DOM.EXTBlendMinMax
+        Language.Javascript.JSaddle.DOM.EXTsRGB
+        Language.Javascript.JSaddle.DOM.EXTTextureFilterAnisotropic
+        Language.Javascript.JSaddle.DOM.Element
+        Language.Javascript.JSaddle.DOM.Entity
+        Language.Javascript.JSaddle.DOM.Enums
+        Language.Javascript.JSaddle.DOM.ErrorEvent
+        Language.Javascript.JSaddle.DOM.Event
+        Language.Javascript.JSaddle.DOM.EventListener
+        Language.Javascript.JSaddle.DOM.EventM
+        Language.Javascript.JSaddle.DOM.EventSource
+        Language.Javascript.JSaddle.DOM.EventTarget
+        Language.Javascript.JSaddle.DOM.EventTargetClosures
+        Language.Javascript.JSaddle.DOM.File
+        Language.Javascript.JSaddle.DOM.FileError
+        Language.Javascript.JSaddle.DOM.FileList
+        Language.Javascript.JSaddle.DOM.FileReader
+        Language.Javascript.JSaddle.DOM.FileReaderSync
+        Language.Javascript.JSaddle.DOM.FocusEvent
+        Language.Javascript.JSaddle.DOM.FontLoader
+        Language.Javascript.JSaddle.DOM.GainNode
+        Language.Javascript.JSaddle.DOM.Gamepad
+        Language.Javascript.JSaddle.DOM.GamepadButton
+        Language.Javascript.JSaddle.DOM.GamepadEvent
+        Language.Javascript.JSaddle.DOM.Geolocation
+        Language.Javascript.JSaddle.DOM.Geoposition
+        Language.Javascript.JSaddle.DOM.HTMLAllCollection
+        Language.Javascript.JSaddle.DOM.HTMLAnchorElement
+        Language.Javascript.JSaddle.DOM.HTMLAppletElement
+        Language.Javascript.JSaddle.DOM.HTMLAreaElement
+        Language.Javascript.JSaddle.DOM.HTMLBRElement
+        Language.Javascript.JSaddle.DOM.HTMLBaseElement
+        Language.Javascript.JSaddle.DOM.HTMLBaseFontElement
+        Language.Javascript.JSaddle.DOM.HTMLBodyElement
+        Language.Javascript.JSaddle.DOM.HTMLButtonElement
+        Language.Javascript.JSaddle.DOM.HTMLCanvasElement
+        Language.Javascript.JSaddle.DOM.HTMLCollection
+        Language.Javascript.JSaddle.DOM.HTMLDListElement
+        Language.Javascript.JSaddle.DOM.HTMLDataListElement
+        Language.Javascript.JSaddle.DOM.HTMLDetailsElement
+        Language.Javascript.JSaddle.DOM.HTMLDirectoryElement
+        Language.Javascript.JSaddle.DOM.HTMLDivElement
+        Language.Javascript.JSaddle.DOM.HTMLDocument
+        Language.Javascript.JSaddle.DOM.HTMLElement
+        Language.Javascript.JSaddle.DOM.HTMLEmbedElement
+        Language.Javascript.JSaddle.DOM.HTMLFieldSetElement
+        Language.Javascript.JSaddle.DOM.HTMLFontElement
+        Language.Javascript.JSaddle.DOM.HTMLFormControlsCollection
+        Language.Javascript.JSaddle.DOM.HTMLFormElement
+        Language.Javascript.JSaddle.DOM.HTMLFrameElement
+        Language.Javascript.JSaddle.DOM.HTMLFrameSetElement
+        Language.Javascript.JSaddle.DOM.HTMLHRElement
+        Language.Javascript.JSaddle.DOM.HTMLHeadElement
+        Language.Javascript.JSaddle.DOM.HTMLHeadingElement
+        Language.Javascript.JSaddle.DOM.HTMLHtmlElement
+        Language.Javascript.JSaddle.DOM.HTMLIFrameElement
+        Language.Javascript.JSaddle.DOM.HTMLImageElement
+        Language.Javascript.JSaddle.DOM.HTMLInputElement
+        Language.Javascript.JSaddle.DOM.HTMLKeygenElement
+        Language.Javascript.JSaddle.DOM.HTMLLIElement
+        Language.Javascript.JSaddle.DOM.HTMLLabelElement
+        Language.Javascript.JSaddle.DOM.HTMLLegendElement
+        Language.Javascript.JSaddle.DOM.HTMLLinkElement
+        Language.Javascript.JSaddle.DOM.HTMLMapElement
+        Language.Javascript.JSaddle.DOM.HTMLMarqueeElement
+        Language.Javascript.JSaddle.DOM.HTMLMediaElement
+        Language.Javascript.JSaddle.DOM.HTMLMenuElement
+        Language.Javascript.JSaddle.DOM.HTMLMetaElement
+        Language.Javascript.JSaddle.DOM.HTMLMeterElement
+        Language.Javascript.JSaddle.DOM.HTMLModElement
+        Language.Javascript.JSaddle.DOM.HTMLOListElement
+        Language.Javascript.JSaddle.DOM.HTMLObjectElement
+        Language.Javascript.JSaddle.DOM.HTMLOptGroupElement
+        Language.Javascript.JSaddle.DOM.HTMLOptionElement
+        Language.Javascript.JSaddle.DOM.HTMLOptionsCollection
+        Language.Javascript.JSaddle.DOM.HTMLOutputElement
+        Language.Javascript.JSaddle.DOM.HTMLParagraphElement
+        Language.Javascript.JSaddle.DOM.HTMLParamElement
+        Language.Javascript.JSaddle.DOM.HTMLPreElement
+        Language.Javascript.JSaddle.DOM.HTMLProgressElement
+        Language.Javascript.JSaddle.DOM.HTMLQuoteElement
+        Language.Javascript.JSaddle.DOM.HTMLScriptElement
+        Language.Javascript.JSaddle.DOM.HTMLSelectElement
+        Language.Javascript.JSaddle.DOM.HTMLSourceElement
+        Language.Javascript.JSaddle.DOM.HTMLStyleElement
+        Language.Javascript.JSaddle.DOM.HTMLTableCaptionElement
+        Language.Javascript.JSaddle.DOM.HTMLTableCellElement
+        Language.Javascript.JSaddle.DOM.HTMLTableColElement
+        Language.Javascript.JSaddle.DOM.HTMLTableElement
+        Language.Javascript.JSaddle.DOM.HTMLTableRowElement
+        Language.Javascript.JSaddle.DOM.HTMLTableSectionElement
+        Language.Javascript.JSaddle.DOM.HTMLTemplateElement
+        Language.Javascript.JSaddle.DOM.HTMLTextAreaElement
+        Language.Javascript.JSaddle.DOM.HTMLTitleElement
+        Language.Javascript.JSaddle.DOM.HTMLTrackElement
+        Language.Javascript.JSaddle.DOM.HTMLUListElement
+        Language.Javascript.JSaddle.DOM.HTMLVideoElement
+        Language.Javascript.JSaddle.DOM.HashChangeEvent
+        Language.Javascript.JSaddle.DOM.History
+        Language.Javascript.JSaddle.DOM.IDBCursor
+        Language.Javascript.JSaddle.DOM.IDBCursorWithValue
+        Language.Javascript.JSaddle.DOM.IDBDatabase
+        Language.Javascript.JSaddle.DOM.IDBFactory
+        Language.Javascript.JSaddle.DOM.IDBIndex
+        Language.Javascript.JSaddle.DOM.IDBKeyRange
+        Language.Javascript.JSaddle.DOM.IDBObjectStore
+        Language.Javascript.JSaddle.DOM.IDBOpenDBRequest
+        Language.Javascript.JSaddle.DOM.IDBRequest
+        Language.Javascript.JSaddle.DOM.IDBTransaction
+        Language.Javascript.JSaddle.DOM.IDBVersionChangeEvent
+        Language.Javascript.JSaddle.DOM.ImageData
+        Language.Javascript.JSaddle.DOM.InspectorFrontendHost
+        Language.Javascript.JSaddle.DOM.InternalSettings
+        Language.Javascript.JSaddle.DOM.Internals
+        Language.Javascript.JSaddle.DOM.KeyboardEvent
+        Language.Javascript.JSaddle.DOM.Location
+        Language.Javascript.JSaddle.DOM.MallocStatistics
+        Language.Javascript.JSaddle.DOM.MediaController
+        Language.Javascript.JSaddle.DOM.MediaControlsHost
+        Language.Javascript.JSaddle.DOM.MediaElementAudioSourceNode
+        Language.Javascript.JSaddle.DOM.MediaError
+        Language.Javascript.JSaddle.DOM.MediaKeyError
+        Language.Javascript.JSaddle.DOM.MediaKeyEvent
+        Language.Javascript.JSaddle.DOM.MediaKeyMessageEvent
+        Language.Javascript.JSaddle.DOM.MediaKeyNeededEvent
+        Language.Javascript.JSaddle.DOM.MediaKeySession
+        Language.Javascript.JSaddle.DOM.MediaKeys
+        Language.Javascript.JSaddle.DOM.MediaList
+        Language.Javascript.JSaddle.DOM.MediaQueryList
+        Language.Javascript.JSaddle.DOM.MediaQueryListListener
+        Language.Javascript.JSaddle.DOM.MediaSource
+        Language.Javascript.JSaddle.DOM.MediaSourceStates
+        Language.Javascript.JSaddle.DOM.MediaStream
+        Language.Javascript.JSaddle.DOM.MediaStreamAudioDestinationNode
+        Language.Javascript.JSaddle.DOM.MediaStreamAudioSourceNode
+        Language.Javascript.JSaddle.DOM.MediaStreamEvent
+        Language.Javascript.JSaddle.DOM.MediaStreamTrack
+        Language.Javascript.JSaddle.DOM.MediaStreamTrackEvent
+        Language.Javascript.JSaddle.DOM.MediaStreamTrackSourcesCallback
+        Language.Javascript.JSaddle.DOM.MediaTrackConstraints
+        Language.Javascript.JSaddle.DOM.MemoryInfo
+        Language.Javascript.JSaddle.DOM.MessageChannel
+        Language.Javascript.JSaddle.DOM.MessageEvent
+        Language.Javascript.JSaddle.DOM.MessagePort
+        Language.Javascript.JSaddle.DOM.MouseEvent
+        Language.Javascript.JSaddle.DOM.MutationEvent
+        Language.Javascript.JSaddle.DOM.MutationObserver
+        Language.Javascript.JSaddle.DOM.MutationRecord
+        Language.Javascript.JSaddle.DOM.NamedNodeMap
+        Language.Javascript.JSaddle.DOM.Navigator
+        Language.Javascript.JSaddle.DOM.NavigatorUserMediaError
+        Language.Javascript.JSaddle.DOM.NavigatorUserMediaErrorCallback
+        Language.Javascript.JSaddle.DOM.NavigatorUserMediaSuccessCallback
+        Language.Javascript.JSaddle.DOM.Node
+        Language.Javascript.JSaddle.DOM.NodeFilter
+        Language.Javascript.JSaddle.DOM.NodeIterator
+        Language.Javascript.JSaddle.DOM.NodeList
+        Language.Javascript.JSaddle.DOM.Notification
+        Language.Javascript.JSaddle.DOM.NotificationCenter
+        Language.Javascript.JSaddle.DOM.NotificationPermissionCallback
+        Language.Javascript.JSaddle.DOM.OESStandardDerivatives
+        Language.Javascript.JSaddle.DOM.OESTextureHalfFloat
+        Language.Javascript.JSaddle.DOM.OESVertexArrayObject
+        Language.Javascript.JSaddle.DOM.OfflineAudioCompletionEvent
+        Language.Javascript.JSaddle.DOM.OfflineAudioContext
+        Language.Javascript.JSaddle.DOM.OscillatorNode
+        Language.Javascript.JSaddle.DOM.OverflowEvent
+        Language.Javascript.JSaddle.DOM.PageTransitionEvent
+        Language.Javascript.JSaddle.DOM.PannerNode
+        Language.Javascript.JSaddle.DOM.Performance
+        Language.Javascript.JSaddle.DOM.PerformanceEntry
+        Language.Javascript.JSaddle.DOM.PerformanceEntryList
+        Language.Javascript.JSaddle.DOM.PerformanceNavigation
+        Language.Javascript.JSaddle.DOM.PerformanceResourceTiming
+        Language.Javascript.JSaddle.DOM.PerformanceTiming
+        Language.Javascript.JSaddle.DOM.PopStateEvent
+        Language.Javascript.JSaddle.DOM.PositionCallback
+        Language.Javascript.JSaddle.DOM.PositionError
+        Language.Javascript.JSaddle.DOM.PositionErrorCallback
+        Language.Javascript.JSaddle.DOM.ProcessingInstruction
+        Language.Javascript.JSaddle.DOM.ProgressEvent
+        Language.Javascript.JSaddle.DOM.QuickTimePluginReplacement
+        Language.Javascript.JSaddle.DOM.RGBColor
+        Language.Javascript.JSaddle.DOM.RTCConfiguration
+        Language.Javascript.JSaddle.DOM.RTCDTMFSender
+        Language.Javascript.JSaddle.DOM.RTCDTMFToneChangeEvent
+        Language.Javascript.JSaddle.DOM.RTCDataChannel
+        Language.Javascript.JSaddle.DOM.RTCDataChannelEvent
+        Language.Javascript.JSaddle.DOM.RTCIceCandidate
+        Language.Javascript.JSaddle.DOM.RTCIceCandidateEvent
+        Language.Javascript.JSaddle.DOM.RTCIceServer
+        Language.Javascript.JSaddle.DOM.RTCPeerConnection
+        Language.Javascript.JSaddle.DOM.RTCPeerConnectionErrorCallback
+        Language.Javascript.JSaddle.DOM.RTCSessionDescription
+        Language.Javascript.JSaddle.DOM.RTCSessionDescriptionCallback
+        Language.Javascript.JSaddle.DOM.RTCStatsCallback
+        Language.Javascript.JSaddle.DOM.RTCStatsReport
+        Language.Javascript.JSaddle.DOM.RTCStatsResponse
+        Language.Javascript.JSaddle.DOM.RadioNodeList
+        Language.Javascript.JSaddle.DOM.Range
+        Language.Javascript.JSaddle.DOM.ReadableStream
+        Language.Javascript.JSaddle.DOM.Rect
+        Language.Javascript.JSaddle.DOM.RequestAnimationFrameCallback
+        Language.Javascript.JSaddle.DOM.SQLError
+        Language.Javascript.JSaddle.DOM.SQLResultSet
+        Language.Javascript.JSaddle.DOM.SQLResultSetRowList
+        Language.Javascript.JSaddle.DOM.SQLStatementCallback
+        Language.Javascript.JSaddle.DOM.SQLStatementErrorCallback
+        Language.Javascript.JSaddle.DOM.SQLTransaction
+        Language.Javascript.JSaddle.DOM.SQLTransactionCallback
+        Language.Javascript.JSaddle.DOM.SQLTransactionErrorCallback
+        Language.Javascript.JSaddle.DOM.SVGAElement
+        Language.Javascript.JSaddle.DOM.SVGAltGlyphElement
+        Language.Javascript.JSaddle.DOM.SVGAngle
+        Language.Javascript.JSaddle.DOM.SVGAnimatedAngle
+        Language.Javascript.JSaddle.DOM.SVGAnimatedBoolean
+        Language.Javascript.JSaddle.DOM.SVGAnimatedEnumeration
+        Language.Javascript.JSaddle.DOM.SVGAnimatedInteger
+        Language.Javascript.JSaddle.DOM.SVGAnimatedLength
+        Language.Javascript.JSaddle.DOM.SVGAnimatedLengthList
+        Language.Javascript.JSaddle.DOM.SVGAnimatedNumber
+        Language.Javascript.JSaddle.DOM.SVGAnimatedNumberList
+        Language.Javascript.JSaddle.DOM.SVGAnimatedPreserveAspectRatio
+        Language.Javascript.JSaddle.DOM.SVGAnimatedRect
+        Language.Javascript.JSaddle.DOM.SVGAnimatedString
+        Language.Javascript.JSaddle.DOM.SVGAnimatedTransformList
+        Language.Javascript.JSaddle.DOM.SVGAnimationElement
+        Language.Javascript.JSaddle.DOM.SVGCircleElement
+        Language.Javascript.JSaddle.DOM.SVGClipPathElement
+        Language.Javascript.JSaddle.DOM.SVGColor
+        Language.Javascript.JSaddle.DOM.SVGComponentTransferFunctionElement
+        Language.Javascript.JSaddle.DOM.SVGCursorElement
+        Language.Javascript.JSaddle.DOM.SVGDocument
+        Language.Javascript.JSaddle.DOM.SVGElement
+        Language.Javascript.JSaddle.DOM.SVGEllipseElement
+        Language.Javascript.JSaddle.DOM.SVGExternalResourcesRequired
+        Language.Javascript.JSaddle.DOM.SVGFEBlendElement
+        Language.Javascript.JSaddle.DOM.SVGFEColorMatrixElement
+        Language.Javascript.JSaddle.DOM.SVGFEComponentTransferElement
+        Language.Javascript.JSaddle.DOM.SVGFECompositeElement
+        Language.Javascript.JSaddle.DOM.SVGFEConvolveMatrixElement
+        Language.Javascript.JSaddle.DOM.SVGFEDiffuseLightingElement
+        Language.Javascript.JSaddle.DOM.SVGFEDisplacementMapElement
+        Language.Javascript.JSaddle.DOM.SVGFEDistantLightElement
+        Language.Javascript.JSaddle.DOM.SVGFEDropShadowElement
+        Language.Javascript.JSaddle.DOM.SVGFEGaussianBlurElement
+        Language.Javascript.JSaddle.DOM.SVGFEImageElement
+        Language.Javascript.JSaddle.DOM.SVGFEMergeNodeElement
+        Language.Javascript.JSaddle.DOM.SVGFEMorphologyElement
+        Language.Javascript.JSaddle.DOM.SVGFEOffsetElement
+        Language.Javascript.JSaddle.DOM.SVGFEPointLightElement
+        Language.Javascript.JSaddle.DOM.SVGFESpecularLightingElement
+        Language.Javascript.JSaddle.DOM.SVGFESpotLightElement
+        Language.Javascript.JSaddle.DOM.SVGFETileElement
+        Language.Javascript.JSaddle.DOM.SVGFETurbulenceElement
+        Language.Javascript.JSaddle.DOM.SVGFilterElement
+        Language.Javascript.JSaddle.DOM.SVGFilterPrimitiveStandardAttributes
+        Language.Javascript.JSaddle.DOM.SVGFitToViewBox
+        Language.Javascript.JSaddle.DOM.SVGForeignObjectElement
+        Language.Javascript.JSaddle.DOM.SVGGlyphRefElement
+        Language.Javascript.JSaddle.DOM.SVGGradientElement
+        Language.Javascript.JSaddle.DOM.SVGGraphicsElement
+        Language.Javascript.JSaddle.DOM.SVGImageElement
+        Language.Javascript.JSaddle.DOM.SVGLength
+        Language.Javascript.JSaddle.DOM.SVGLengthList
+        Language.Javascript.JSaddle.DOM.SVGLineElement
+        Language.Javascript.JSaddle.DOM.SVGLinearGradientElement
+        Language.Javascript.JSaddle.DOM.SVGMarkerElement
+        Language.Javascript.JSaddle.DOM.SVGMaskElement
+        Language.Javascript.JSaddle.DOM.SVGMatrix
+        Language.Javascript.JSaddle.DOM.SVGNumber
+        Language.Javascript.JSaddle.DOM.SVGNumberList
+        Language.Javascript.JSaddle.DOM.SVGPaint
+        Language.Javascript.JSaddle.DOM.SVGPathElement
+        Language.Javascript.JSaddle.DOM.SVGPathSeg
+        Language.Javascript.JSaddle.DOM.SVGPathSegArcAbs
+        Language.Javascript.JSaddle.DOM.SVGPathSegArcRel
+        Language.Javascript.JSaddle.DOM.SVGPathSegCurvetoCubicAbs
+        Language.Javascript.JSaddle.DOM.SVGPathSegCurvetoCubicRel
+        Language.Javascript.JSaddle.DOM.SVGPathSegCurvetoCubicSmoothAbs
+        Language.Javascript.JSaddle.DOM.SVGPathSegCurvetoCubicSmoothRel
+        Language.Javascript.JSaddle.DOM.SVGPathSegCurvetoQuadraticAbs
+        Language.Javascript.JSaddle.DOM.SVGPathSegCurvetoQuadraticRel
+        Language.Javascript.JSaddle.DOM.SVGPathSegCurvetoQuadraticSmoothAbs
+        Language.Javascript.JSaddle.DOM.SVGPathSegCurvetoQuadraticSmoothRel
+        Language.Javascript.JSaddle.DOM.SVGPathSegLinetoAbs
+        Language.Javascript.JSaddle.DOM.SVGPathSegLinetoHorizontalAbs
+        Language.Javascript.JSaddle.DOM.SVGPathSegLinetoHorizontalRel
+        Language.Javascript.JSaddle.DOM.SVGPathSegLinetoRel
+        Language.Javascript.JSaddle.DOM.SVGPathSegLinetoVerticalAbs
+        Language.Javascript.JSaddle.DOM.SVGPathSegLinetoVerticalRel
+        Language.Javascript.JSaddle.DOM.SVGPathSegList
+        Language.Javascript.JSaddle.DOM.SVGPathSegMovetoAbs
+        Language.Javascript.JSaddle.DOM.SVGPathSegMovetoRel
+        Language.Javascript.JSaddle.DOM.SVGPatternElement
+        Language.Javascript.JSaddle.DOM.SVGPoint
+        Language.Javascript.JSaddle.DOM.SVGPointList
+        Language.Javascript.JSaddle.DOM.SVGPolygonElement
+        Language.Javascript.JSaddle.DOM.SVGPolylineElement
+        Language.Javascript.JSaddle.DOM.SVGPreserveAspectRatio
+        Language.Javascript.JSaddle.DOM.SVGRadialGradientElement
+        Language.Javascript.JSaddle.DOM.SVGRect
+        Language.Javascript.JSaddle.DOM.SVGRectElement
+        Language.Javascript.JSaddle.DOM.SVGRenderingIntent
+        Language.Javascript.JSaddle.DOM.SVGScriptElement
+        Language.Javascript.JSaddle.DOM.SVGSVGElement
+        Language.Javascript.JSaddle.DOM.SVGStopElement
+        Language.Javascript.JSaddle.DOM.SVGStringList
+        Language.Javascript.JSaddle.DOM.SVGStyleElement
+        Language.Javascript.JSaddle.DOM.SVGTests
+        Language.Javascript.JSaddle.DOM.SVGTextContentElement
+        Language.Javascript.JSaddle.DOM.SVGTextPathElement
+        Language.Javascript.JSaddle.DOM.SVGTextPositioningElement
+        Language.Javascript.JSaddle.DOM.SVGTransform
+        Language.Javascript.JSaddle.DOM.SVGTransformList
+        Language.Javascript.JSaddle.DOM.SVGURIReference
+        Language.Javascript.JSaddle.DOM.SVGUnitTypes
+        Language.Javascript.JSaddle.DOM.SVGUseElement
+        Language.Javascript.JSaddle.DOM.SVGViewElement
+        Language.Javascript.JSaddle.DOM.SVGViewSpec
+        Language.Javascript.JSaddle.DOM.SVGZoomAndPan
+        Language.Javascript.JSaddle.DOM.SVGZoomEvent
+        Language.Javascript.JSaddle.DOM.Screen
+        Language.Javascript.JSaddle.DOM.ScriptProcessorNode
+        Language.Javascript.JSaddle.DOM.ScriptProfile
+        Language.Javascript.JSaddle.DOM.ScriptProfileNode
+        Language.Javascript.JSaddle.DOM.SecurityPolicyViolationEvent
+        Language.Javascript.JSaddle.DOM.SourceBuffer
+        Language.Javascript.JSaddle.DOM.SourceBufferList
+        Language.Javascript.JSaddle.DOM.SourceInfo
+        Language.Javascript.JSaddle.DOM.SpeechSynthesis
+        Language.Javascript.JSaddle.DOM.SpeechSynthesisEvent
+        Language.Javascript.JSaddle.DOM.SpeechSynthesisUtterance
+        Language.Javascript.JSaddle.DOM.SpeechSynthesisVoice
+        Language.Javascript.JSaddle.DOM.Storage
+        Language.Javascript.JSaddle.DOM.StorageErrorCallback
+        Language.Javascript.JSaddle.DOM.StorageEvent
+        Language.Javascript.JSaddle.DOM.StorageInfo
+        Language.Javascript.JSaddle.DOM.StorageQuota
+        Language.Javascript.JSaddle.DOM.StorageQuotaCallback
+        Language.Javascript.JSaddle.DOM.StorageUsageCallback
+        Language.Javascript.JSaddle.DOM.StringCallback
+        Language.Javascript.JSaddle.DOM.StyleMedia
+        Language.Javascript.JSaddle.DOM.StyleSheet
+        Language.Javascript.JSaddle.DOM.StyleSheetList
+        Language.Javascript.JSaddle.DOM.SubtleCrypto
+        Language.Javascript.JSaddle.DOM.Text
+        Language.Javascript.JSaddle.DOM.TextEvent
+        Language.Javascript.JSaddle.DOM.TextMetrics
+        Language.Javascript.JSaddle.DOM.TextTrack
+        Language.Javascript.JSaddle.DOM.TextTrackCue
+        Language.Javascript.JSaddle.DOM.TextTrackCueList
+        Language.Javascript.JSaddle.DOM.TextTrackList
+        Language.Javascript.JSaddle.DOM.TimeRanges
+        Language.Javascript.JSaddle.DOM.Touch
+        Language.Javascript.JSaddle.DOM.TouchEvent
+        Language.Javascript.JSaddle.DOM.TouchList
+        Language.Javascript.JSaddle.DOM.TrackEvent
+        Language.Javascript.JSaddle.DOM.TransitionEvent
+        Language.Javascript.JSaddle.DOM.TreeWalker
+        Language.Javascript.JSaddle.DOM.TypeConversions
+        Language.Javascript.JSaddle.DOM.Types
+        Language.Javascript.JSaddle.DOM.UIEvent
+        Language.Javascript.JSaddle.DOM.UIRequestEvent
+        Language.Javascript.JSaddle.DOM.URLUtils
+        Language.Javascript.JSaddle.DOM.UserMessageHandler
+        Language.Javascript.JSaddle.DOM.VTTCue
+        Language.Javascript.JSaddle.DOM.VTTRegion
+        Language.Javascript.JSaddle.DOM.VTTRegionList
+        Language.Javascript.JSaddle.DOM.ValidityState
+        Language.Javascript.JSaddle.DOM.VideoPlaybackQuality
+        Language.Javascript.JSaddle.DOM.VideoStreamTrack
+        Language.Javascript.JSaddle.DOM.VideoTrack
+        Language.Javascript.JSaddle.DOM.VideoTrackList
+        Language.Javascript.JSaddle.DOM.VoidCallback
+        Language.Javascript.JSaddle.DOM.WaveShaperNode
+        Language.Javascript.JSaddle.DOM.WebGL2RenderingContext
+        Language.Javascript.JSaddle.DOM.WebGLActiveInfo
+        Language.Javascript.JSaddle.DOM.WebGLCompressedTextureATC
+        Language.Javascript.JSaddle.DOM.WebGLCompressedTexturePVRTC
+        Language.Javascript.JSaddle.DOM.WebGLCompressedTextureS3TC
+        Language.Javascript.JSaddle.DOM.WebGLContextAttributes
+        Language.Javascript.JSaddle.DOM.WebGLContextEvent
+        Language.Javascript.JSaddle.DOM.WebGLDebugRendererInfo
+        Language.Javascript.JSaddle.DOM.WebGLDebugShaders
+        Language.Javascript.JSaddle.DOM.WebGLDepthTexture
+        Language.Javascript.JSaddle.DOM.WebGLDrawBuffers
+        Language.Javascript.JSaddle.DOM.WebGLLoseContext
+        Language.Javascript.JSaddle.DOM.WebGLRenderingContextBase
+        Language.Javascript.JSaddle.DOM.WebGLShaderPrecisionFormat
+        Language.Javascript.JSaddle.DOM.WebKitAnimationEvent
+        Language.Javascript.JSaddle.DOM.WebKitCSSFilterValue
+        Language.Javascript.JSaddle.DOM.WebKitCSSMatrix
+        Language.Javascript.JSaddle.DOM.WebKitCSSRegionRule
+        Language.Javascript.JSaddle.DOM.WebKitCSSTransformValue
+        Language.Javascript.JSaddle.DOM.WebKitCSSViewportRule
+        Language.Javascript.JSaddle.DOM.WebKitNamedFlow
+        Language.Javascript.JSaddle.DOM.WebKitNamespace
+        Language.Javascript.JSaddle.DOM.WebKitPlaybackTargetAvailabilityEvent
+        Language.Javascript.JSaddle.DOM.WebKitPoint
+        Language.Javascript.JSaddle.DOM.WebKitTransitionEvent
+        Language.Javascript.JSaddle.DOM.WebSocket
+        Language.Javascript.JSaddle.DOM.WheelEvent
+        Language.Javascript.JSaddle.DOM.WindowBase64
+        Language.Javascript.JSaddle.DOM.WindowTimers
+        Language.Javascript.JSaddle.DOM.Worker
+        Language.Javascript.JSaddle.DOM.WorkerGlobalScope
+        Language.Javascript.JSaddle.DOM.WorkerLocation
+        Language.Javascript.JSaddle.DOM.WorkerNavigator
+        Language.Javascript.JSaddle.DOM.XMLHttpRequest
+        Language.Javascript.JSaddle.DOM.XMLHttpRequestProgressEvent
+        Language.Javascript.JSaddle.DOM.XMLHttpRequestUpload
+        Language.Javascript.JSaddle.DOM.XMLSerializer
+        Language.Javascript.JSaddle.DOM.XPathEvaluator
+        Language.Javascript.JSaddle.DOM.XPathExpression
+        Language.Javascript.JSaddle.DOM.XPathNSResolver
+        Language.Javascript.JSaddle.DOM.XPathResult
+        Language.Javascript.JSaddle.DOM.XSLTProcessor
+    build-depends:
+        base <5,
+        base-compat >=0.9.0 && <0.10,
+        transformers >=0.2 && <0.6,
+        text >=0.11.0.6 && <1.3,
+        jsaddle >=0.4.0.0 && <0.5,
+        lens >=4.12.3 && <4.15
+    default-language: Haskell2010
+    hs-source-dirs: src
diff --git a/src/Language/Javascript/JSaddle/DOM.hs b/src/Language/Javascript/JSaddle/DOM.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM.hs
@@ -0,0 +1,124 @@
+{-# LANGUAGE CPP, OverloadedStrings, PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM (
+  currentWindow
+, currentDocument
+, WebView
+, runWebGUI
+, enableInspector
+) where
+
+import qualified Data.Text as T
+import Data.Monoid ((<>))
+#ifdef ghcjs_HOST_OS
+import GHCJS.Types (JSVal(..))
+import GHCJS.Nullable (Nullable(..), nullableToMaybe)
+import Control.Applicative ((<$>))
+#else
+import GI.WebKit.Objects.WebView
+       (getWebViewSettings, onWebViewLoadFinished, setWebViewSettings,
+        webViewSetSettings, webViewGetSettings, webViewLoadUri, webViewNew,
+        webViewGetDomDocument, webViewGetInspector, WebView(..))
+import GI.Gtk
+       (widgetShowAll, mainQuit,
+        WindowPosition(..), containerAdd, scrolledWindowNew,
+        windowSetPosition, windowSetDefaultSize, windowNew)
+import qualified GI.Gtk.Functions as Gtk (init, main)
+import GI.WebKit.Objects.WebSettings
+       (setWebSettingsMonospaceFontFamily,
+        setWebSettingsEnableDeveloperExtras, setWebSettingsUserAgent,
+        getWebSettingsUserAgent)
+import GI.Gtk.Objects.Widget (onWidgetDestroy)
+import GI.WebKit.Objects.WebInspector
+       (onWebInspectorShowWindow, onWebInspectorInspectWebView)
+import GI.Gtk.Enums (WindowType(..))
+import GI.GLib.Functions (timeoutAdd)
+import GI.GLib.Constants (pattern PRIORITY_LOW)
+import GI.Gtk.Objects.Adjustment (noAdjustment)
+import Control.Monad.IO.Class (liftIO)
+#endif
+
+import Language.Javascript.JSaddle.DOM.Window (getNavigator, getDocument)
+import Language.Javascript.JSaddle.DOM.Navigator (getUserAgent)
+import Foreign (ForeignPtr, nullPtr, Ptr)
+import Control.Monad (unless, forever, liftM)
+import Control.Concurrent
+       (yield, threadDelay, takeMVar, newEmptyMVar)
+import System.Environment (getArgs)
+import Data.List (isSuffixOf)
+import Language.Javascript.JSaddle (runJSaddle, JSM, jsg)
+import Language.Javascript.JSaddle.DOM.Types
+       (FromJSVal(..), MonadDOM(..), MonadDOM, Document(..), Window(..))
+import Control.Monad.IO.Class (MonadIO)
+
+#ifdef ghcjs_HOST_OS
+foreign import javascript unsafe "$r = window"
+  ghcjs_currentWindow :: IO JSVal
+
+data WebView = WebView
+#endif
+
+currentWindow :: MonadDOM m => m (Maybe Window)
+currentWindow = liftDOM $ jsg ("window" :: String) >>= fromJSVal
+
+currentDocument :: MonadDOM m => m (Maybe Document)
+currentDocument = liftDOM $ jsg ("document" :: String) >>= fromJSVal
+
+runWebGUI :: (WebView -> JSM ()) -> IO ()
+runWebGUI = runWebGUI' "GHCJS"
+
+runWebGUI' :: T.Text -> (WebView -> JSM ()) -> IO ()
+runWebGUI' userAgentKey main = do
+#ifdef ghcjs_HOST_OS
+  window <- Window <$> ghcjs_currentWindow
+  runJSaddle window $ main WebView
+#else
+  Gtk.init Nothing
+  window <- windowNew WindowTypeToplevel
+  timeoutAdd PRIORITY_LOW 10 (yield >> return True)
+  windowSetDefaultSize window 900 600
+  windowSetPosition window WindowPositionCenter
+  scrollWin <- scrolledWindowNew noAdjustment noAdjustment
+  webView <- webViewNew
+  settings <- getWebViewSettings webView
+  userAgent <- getWebSettingsUserAgent settings
+  setWebSettingsUserAgent settings $ userAgent <> " " <> userAgentKey
+  setWebViewSettings webView settings
+  window `containerAdd` scrollWin
+  scrollWin `containerAdd` webView
+  onWidgetDestroy window $ liftIO mainQuit
+  widgetShowAll window
+  onWebViewLoadFinished webView $ \frame ->
+    runJSaddle webView $ main webView
+  args <- getArgs
+  case args of
+    uri:_ -> webViewLoadUri webView (T.pack uri)
+    []    -> runJSaddle webView $ main webView
+  Gtk.main
+#endif
+
+enableInspector :: MonadIO m => WebView -> m ()
+#ifdef ghcjs_HOST_OS
+enableInspector _ = return ()
+#else
+enableInspector webView = liftIO $ do
+  settings <- getWebViewSettings webView
+  setWebSettingsEnableDeveloperExtras settings True
+  setWebViewSettings webView settings
+  inspector <- webViewGetInspector webView
+  window <- windowNew WindowTypeToplevel
+  windowSetDefaultSize window 900 300
+  scrollWin <- scrolledWindowNew noAdjustment noAdjustment
+  onWebInspectorInspectWebView inspector $ \view -> do
+    inspectorView <- webViewNew
+    settings <- getWebViewSettings inspectorView
+    setWebSettingsMonospaceFontFamily settings "Consolas"
+    setWebViewSettings inspectorView settings
+    scrollWin `containerAdd` inspectorView
+    window `containerAdd` scrollWin
+    widgetShowAll window
+    return inspectorView
+  onWebInspectorShowWindow inspector $ do
+    widgetShowAll window
+    return True
+  return ()
+#endif
diff --git a/src/Language/Javascript/JSaddle/DOM/ANGLEInstancedArrays.hs b/src/Language/Javascript/JSaddle/DOM/ANGLEInstancedArrays.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/ANGLEInstancedArrays.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.ANGLEInstancedArrays (
+  module Language.Javascript.JSaddle.DOM.Generated.ANGLEInstancedArrays
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.ANGLEInstancedArrays
diff --git a/src/Language/Javascript/JSaddle/DOM/AbstractView.hs b/src/Language/Javascript/JSaddle/DOM/AbstractView.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/AbstractView.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.AbstractView (
+  module Language.Javascript.JSaddle.DOM.Generated.AbstractView
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.AbstractView
diff --git a/src/Language/Javascript/JSaddle/DOM/AbstractWorker.hs b/src/Language/Javascript/JSaddle/DOM/AbstractWorker.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/AbstractWorker.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.AbstractWorker (
+  module Language.Javascript.JSaddle.DOM.Generated.AbstractWorker
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.AbstractWorker
diff --git a/src/Language/Javascript/JSaddle/DOM/AllAudioCapabilities.hs b/src/Language/Javascript/JSaddle/DOM/AllAudioCapabilities.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/AllAudioCapabilities.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.AllAudioCapabilities (
+  module Language.Javascript.JSaddle.DOM.Generated.AllAudioCapabilities
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.AllAudioCapabilities
diff --git a/src/Language/Javascript/JSaddle/DOM/AllVideoCapabilities.hs b/src/Language/Javascript/JSaddle/DOM/AllVideoCapabilities.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/AllVideoCapabilities.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.AllVideoCapabilities (
+  module Language.Javascript.JSaddle.DOM.Generated.AllVideoCapabilities
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.AllVideoCapabilities
diff --git a/src/Language/Javascript/JSaddle/DOM/AnalyserNode.hs b/src/Language/Javascript/JSaddle/DOM/AnalyserNode.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/AnalyserNode.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.AnalyserNode (
+  module Language.Javascript.JSaddle.DOM.Generated.AnalyserNode
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.AnalyserNode
diff --git a/src/Language/Javascript/JSaddle/DOM/AnimationEvent.hs b/src/Language/Javascript/JSaddle/DOM/AnimationEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/AnimationEvent.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.AnimationEvent (
+  module Language.Javascript.JSaddle.DOM.Generated.AnimationEvent
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.AnimationEvent
diff --git a/src/Language/Javascript/JSaddle/DOM/ApplicationCache.hs b/src/Language/Javascript/JSaddle/DOM/ApplicationCache.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/ApplicationCache.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.ApplicationCache (
+  module Language.Javascript.JSaddle.DOM.Generated.ApplicationCache
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.ApplicationCache
diff --git a/src/Language/Javascript/JSaddle/DOM/Attr.hs b/src/Language/Javascript/JSaddle/DOM/Attr.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Attr.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.Attr (
+  module Language.Javascript.JSaddle.DOM.Generated.Attr
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.Attr
diff --git a/src/Language/Javascript/JSaddle/DOM/AudioBuffer.hs b/src/Language/Javascript/JSaddle/DOM/AudioBuffer.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/AudioBuffer.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.AudioBuffer (
+  module Language.Javascript.JSaddle.DOM.Generated.AudioBuffer
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.AudioBuffer
diff --git a/src/Language/Javascript/JSaddle/DOM/AudioBufferCallback.hs b/src/Language/Javascript/JSaddle/DOM/AudioBufferCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/AudioBufferCallback.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.AudioBufferCallback (
+  module Language.Javascript.JSaddle.DOM.Generated.AudioBufferCallback
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.AudioBufferCallback
diff --git a/src/Language/Javascript/JSaddle/DOM/AudioBufferSourceNode.hs b/src/Language/Javascript/JSaddle/DOM/AudioBufferSourceNode.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/AudioBufferSourceNode.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.AudioBufferSourceNode (
+  module Language.Javascript.JSaddle.DOM.Generated.AudioBufferSourceNode
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.AudioBufferSourceNode
diff --git a/src/Language/Javascript/JSaddle/DOM/AudioContext.hs b/src/Language/Javascript/JSaddle/DOM/AudioContext.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/AudioContext.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.AudioContext (
+  module Language.Javascript.JSaddle.DOM.Custom.AudioContext
+  ) where
+import Language.Javascript.JSaddle.DOM.Custom.AudioContext
diff --git a/src/Language/Javascript/JSaddle/DOM/AudioDestinationNode.hs b/src/Language/Javascript/JSaddle/DOM/AudioDestinationNode.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/AudioDestinationNode.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.AudioDestinationNode (
+  module Language.Javascript.JSaddle.DOM.Generated.AudioDestinationNode
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.AudioDestinationNode
diff --git a/src/Language/Javascript/JSaddle/DOM/AudioListener.hs b/src/Language/Javascript/JSaddle/DOM/AudioListener.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/AudioListener.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.AudioListener (
+  module Language.Javascript.JSaddle.DOM.Generated.AudioListener
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.AudioListener
diff --git a/src/Language/Javascript/JSaddle/DOM/AudioNode.hs b/src/Language/Javascript/JSaddle/DOM/AudioNode.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/AudioNode.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.AudioNode (
+  module Language.Javascript.JSaddle.DOM.Generated.AudioNode
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.AudioNode
diff --git a/src/Language/Javascript/JSaddle/DOM/AudioParam.hs b/src/Language/Javascript/JSaddle/DOM/AudioParam.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/AudioParam.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.AudioParam (
+  module Language.Javascript.JSaddle.DOM.Generated.AudioParam
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.AudioParam
diff --git a/src/Language/Javascript/JSaddle/DOM/AudioProcessingEvent.hs b/src/Language/Javascript/JSaddle/DOM/AudioProcessingEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/AudioProcessingEvent.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.AudioProcessingEvent (
+  module Language.Javascript.JSaddle.DOM.Generated.AudioProcessingEvent
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.AudioProcessingEvent
diff --git a/src/Language/Javascript/JSaddle/DOM/AudioStreamTrack.hs b/src/Language/Javascript/JSaddle/DOM/AudioStreamTrack.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/AudioStreamTrack.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.AudioStreamTrack (
+  module Language.Javascript.JSaddle.DOM.Generated.AudioStreamTrack
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.AudioStreamTrack
diff --git a/src/Language/Javascript/JSaddle/DOM/AudioTrack.hs b/src/Language/Javascript/JSaddle/DOM/AudioTrack.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/AudioTrack.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.AudioTrack (
+  module Language.Javascript.JSaddle.DOM.Generated.AudioTrack
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.AudioTrack
diff --git a/src/Language/Javascript/JSaddle/DOM/AudioTrackList.hs b/src/Language/Javascript/JSaddle/DOM/AudioTrackList.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/AudioTrackList.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.AudioTrackList (
+  module Language.Javascript.JSaddle.DOM.Generated.AudioTrackList
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.AudioTrackList
diff --git a/src/Language/Javascript/JSaddle/DOM/AutocompleteErrorEvent.hs b/src/Language/Javascript/JSaddle/DOM/AutocompleteErrorEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/AutocompleteErrorEvent.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.AutocompleteErrorEvent (
+  module Language.Javascript.JSaddle.DOM.Generated.AutocompleteErrorEvent
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.AutocompleteErrorEvent
diff --git a/src/Language/Javascript/JSaddle/DOM/BarProp.hs b/src/Language/Javascript/JSaddle/DOM/BarProp.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/BarProp.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.BarProp (
+  module Language.Javascript.JSaddle.DOM.Generated.BarProp
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.BarProp
diff --git a/src/Language/Javascript/JSaddle/DOM/BatteryManager.hs b/src/Language/Javascript/JSaddle/DOM/BatteryManager.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/BatteryManager.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.BatteryManager (
+  module Language.Javascript.JSaddle.DOM.Generated.BatteryManager
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.BatteryManager
diff --git a/src/Language/Javascript/JSaddle/DOM/BeforeLoadEvent.hs b/src/Language/Javascript/JSaddle/DOM/BeforeLoadEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/BeforeLoadEvent.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.BeforeLoadEvent (
+  module Language.Javascript.JSaddle.DOM.Generated.BeforeLoadEvent
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.BeforeLoadEvent
diff --git a/src/Language/Javascript/JSaddle/DOM/BeforeUnloadEvent.hs b/src/Language/Javascript/JSaddle/DOM/BeforeUnloadEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/BeforeUnloadEvent.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.BeforeUnloadEvent (
+  module Language.Javascript.JSaddle.DOM.Generated.BeforeUnloadEvent
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.BeforeUnloadEvent
diff --git a/src/Language/Javascript/JSaddle/DOM/BiquadFilterNode.hs b/src/Language/Javascript/JSaddle/DOM/BiquadFilterNode.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/BiquadFilterNode.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.BiquadFilterNode (
+  module Language.Javascript.JSaddle.DOM.Generated.BiquadFilterNode
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.BiquadFilterNode
diff --git a/src/Language/Javascript/JSaddle/DOM/Blob.hs b/src/Language/Javascript/JSaddle/DOM/Blob.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Blob.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.Blob (
+  module Language.Javascript.JSaddle.DOM.Generated.Blob
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.Blob
diff --git a/src/Language/Javascript/JSaddle/DOM/CSS.hs b/src/Language/Javascript/JSaddle/DOM/CSS.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/CSS.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.CSS (
+  module Language.Javascript.JSaddle.DOM.Generated.CSS
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.CSS
diff --git a/src/Language/Javascript/JSaddle/DOM/CSSCharsetRule.hs b/src/Language/Javascript/JSaddle/DOM/CSSCharsetRule.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/CSSCharsetRule.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.CSSCharsetRule (
+  module Language.Javascript.JSaddle.DOM.Generated.CSSCharsetRule
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.CSSCharsetRule
diff --git a/src/Language/Javascript/JSaddle/DOM/CSSFontFaceLoadEvent.hs b/src/Language/Javascript/JSaddle/DOM/CSSFontFaceLoadEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/CSSFontFaceLoadEvent.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.CSSFontFaceLoadEvent (
+  module Language.Javascript.JSaddle.DOM.Generated.CSSFontFaceLoadEvent
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.CSSFontFaceLoadEvent
diff --git a/src/Language/Javascript/JSaddle/DOM/CSSFontFaceRule.hs b/src/Language/Javascript/JSaddle/DOM/CSSFontFaceRule.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/CSSFontFaceRule.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.CSSFontFaceRule (
+  module Language.Javascript.JSaddle.DOM.Generated.CSSFontFaceRule
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.CSSFontFaceRule
diff --git a/src/Language/Javascript/JSaddle/DOM/CSSImportRule.hs b/src/Language/Javascript/JSaddle/DOM/CSSImportRule.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/CSSImportRule.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.CSSImportRule (
+  module Language.Javascript.JSaddle.DOM.Generated.CSSImportRule
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.CSSImportRule
diff --git a/src/Language/Javascript/JSaddle/DOM/CSSKeyframeRule.hs b/src/Language/Javascript/JSaddle/DOM/CSSKeyframeRule.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/CSSKeyframeRule.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.CSSKeyframeRule (
+  module Language.Javascript.JSaddle.DOM.Generated.CSSKeyframeRule
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.CSSKeyframeRule
diff --git a/src/Language/Javascript/JSaddle/DOM/CSSKeyframesRule.hs b/src/Language/Javascript/JSaddle/DOM/CSSKeyframesRule.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/CSSKeyframesRule.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.CSSKeyframesRule (
+  module Language.Javascript.JSaddle.DOM.Generated.CSSKeyframesRule
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.CSSKeyframesRule
diff --git a/src/Language/Javascript/JSaddle/DOM/CSSMediaRule.hs b/src/Language/Javascript/JSaddle/DOM/CSSMediaRule.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/CSSMediaRule.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.CSSMediaRule (
+  module Language.Javascript.JSaddle.DOM.Generated.CSSMediaRule
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.CSSMediaRule
diff --git a/src/Language/Javascript/JSaddle/DOM/CSSPageRule.hs b/src/Language/Javascript/JSaddle/DOM/CSSPageRule.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/CSSPageRule.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.CSSPageRule (
+  module Language.Javascript.JSaddle.DOM.Generated.CSSPageRule
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.CSSPageRule
diff --git a/src/Language/Javascript/JSaddle/DOM/CSSPrimitiveValue.hs b/src/Language/Javascript/JSaddle/DOM/CSSPrimitiveValue.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/CSSPrimitiveValue.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.CSSPrimitiveValue (
+  module Language.Javascript.JSaddle.DOM.Generated.CSSPrimitiveValue
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.CSSPrimitiveValue
diff --git a/src/Language/Javascript/JSaddle/DOM/CSSRule.hs b/src/Language/Javascript/JSaddle/DOM/CSSRule.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/CSSRule.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.CSSRule (
+  module Language.Javascript.JSaddle.DOM.Generated.CSSRule
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.CSSRule
diff --git a/src/Language/Javascript/JSaddle/DOM/CSSRuleList.hs b/src/Language/Javascript/JSaddle/DOM/CSSRuleList.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/CSSRuleList.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.CSSRuleList (
+  module Language.Javascript.JSaddle.DOM.Generated.CSSRuleList
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.CSSRuleList
diff --git a/src/Language/Javascript/JSaddle/DOM/CSSStyleDeclaration.hs b/src/Language/Javascript/JSaddle/DOM/CSSStyleDeclaration.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/CSSStyleDeclaration.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.CSSStyleDeclaration (
+  module Language.Javascript.JSaddle.DOM.Generated.CSSStyleDeclaration
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.CSSStyleDeclaration
diff --git a/src/Language/Javascript/JSaddle/DOM/CSSStyleRule.hs b/src/Language/Javascript/JSaddle/DOM/CSSStyleRule.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/CSSStyleRule.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.CSSStyleRule (
+  module Language.Javascript.JSaddle.DOM.Generated.CSSStyleRule
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.CSSStyleRule
diff --git a/src/Language/Javascript/JSaddle/DOM/CSSStyleSheet.hs b/src/Language/Javascript/JSaddle/DOM/CSSStyleSheet.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/CSSStyleSheet.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.CSSStyleSheet (
+  module Language.Javascript.JSaddle.DOM.Generated.CSSStyleSheet
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.CSSStyleSheet
diff --git a/src/Language/Javascript/JSaddle/DOM/CSSSupportsRule.hs b/src/Language/Javascript/JSaddle/DOM/CSSSupportsRule.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/CSSSupportsRule.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.CSSSupportsRule (
+  module Language.Javascript.JSaddle.DOM.Generated.CSSSupportsRule
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.CSSSupportsRule
diff --git a/src/Language/Javascript/JSaddle/DOM/CSSValue.hs b/src/Language/Javascript/JSaddle/DOM/CSSValue.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/CSSValue.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.CSSValue (
+  module Language.Javascript.JSaddle.DOM.Generated.CSSValue
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.CSSValue
diff --git a/src/Language/Javascript/JSaddle/DOM/CSSValueList.hs b/src/Language/Javascript/JSaddle/DOM/CSSValueList.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/CSSValueList.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.CSSValueList (
+  module Language.Javascript.JSaddle.DOM.Generated.CSSValueList
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.CSSValueList
diff --git a/src/Language/Javascript/JSaddle/DOM/CanvasGradient.hs b/src/Language/Javascript/JSaddle/DOM/CanvasGradient.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/CanvasGradient.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.CanvasGradient (
+  module Language.Javascript.JSaddle.DOM.Generated.CanvasGradient
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.CanvasGradient
diff --git a/src/Language/Javascript/JSaddle/DOM/CanvasRenderingContext.hs b/src/Language/Javascript/JSaddle/DOM/CanvasRenderingContext.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/CanvasRenderingContext.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.CanvasRenderingContext (
+  module Language.Javascript.JSaddle.DOM.Generated.CanvasRenderingContext
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.CanvasRenderingContext
diff --git a/src/Language/Javascript/JSaddle/DOM/CanvasRenderingContext2D.hs b/src/Language/Javascript/JSaddle/DOM/CanvasRenderingContext2D.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/CanvasRenderingContext2D.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.CanvasRenderingContext2D (
+  module Language.Javascript.JSaddle.DOM.Generated.CanvasRenderingContext2D
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.CanvasRenderingContext2D
diff --git a/src/Language/Javascript/JSaddle/DOM/CapabilityRange.hs b/src/Language/Javascript/JSaddle/DOM/CapabilityRange.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/CapabilityRange.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.CapabilityRange (
+  module Language.Javascript.JSaddle.DOM.Generated.CapabilityRange
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.CapabilityRange
diff --git a/src/Language/Javascript/JSaddle/DOM/CharacterData.hs b/src/Language/Javascript/JSaddle/DOM/CharacterData.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/CharacterData.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.CharacterData (
+  module Language.Javascript.JSaddle.DOM.Generated.CharacterData
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.CharacterData
diff --git a/src/Language/Javascript/JSaddle/DOM/ChildNode.hs b/src/Language/Javascript/JSaddle/DOM/ChildNode.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/ChildNode.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.ChildNode (
+  module Language.Javascript.JSaddle.DOM.Generated.ChildNode
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.ChildNode
diff --git a/src/Language/Javascript/JSaddle/DOM/ClientRect.hs b/src/Language/Javascript/JSaddle/DOM/ClientRect.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/ClientRect.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.ClientRect (
+  module Language.Javascript.JSaddle.DOM.Generated.ClientRect
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.ClientRect
diff --git a/src/Language/Javascript/JSaddle/DOM/ClientRectList.hs b/src/Language/Javascript/JSaddle/DOM/ClientRectList.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/ClientRectList.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.ClientRectList (
+  module Language.Javascript.JSaddle.DOM.Generated.ClientRectList
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.ClientRectList
diff --git a/src/Language/Javascript/JSaddle/DOM/CloseEvent.hs b/src/Language/Javascript/JSaddle/DOM/CloseEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/CloseEvent.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.CloseEvent (
+  module Language.Javascript.JSaddle.DOM.Generated.CloseEvent
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.CloseEvent
diff --git a/src/Language/Javascript/JSaddle/DOM/CommandLineAPIHost.hs b/src/Language/Javascript/JSaddle/DOM/CommandLineAPIHost.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/CommandLineAPIHost.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.CommandLineAPIHost (
+  module Language.Javascript.JSaddle.DOM.Generated.CommandLineAPIHost
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.CommandLineAPIHost
diff --git a/src/Language/Javascript/JSaddle/DOM/Comment.hs b/src/Language/Javascript/JSaddle/DOM/Comment.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Comment.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.Comment (
+  module Language.Javascript.JSaddle.DOM.Generated.Comment
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.Comment
diff --git a/src/Language/Javascript/JSaddle/DOM/CompositionEvent.hs b/src/Language/Javascript/JSaddle/DOM/CompositionEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/CompositionEvent.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.CompositionEvent (
+  module Language.Javascript.JSaddle.DOM.Generated.CompositionEvent
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.CompositionEvent
diff --git a/src/Language/Javascript/JSaddle/DOM/ConvolverNode.hs b/src/Language/Javascript/JSaddle/DOM/ConvolverNode.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/ConvolverNode.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.ConvolverNode (
+  module Language.Javascript.JSaddle.DOM.Generated.ConvolverNode
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.ConvolverNode
diff --git a/src/Language/Javascript/JSaddle/DOM/Coordinates.hs b/src/Language/Javascript/JSaddle/DOM/Coordinates.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Coordinates.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.Coordinates (
+  module Language.Javascript.JSaddle.DOM.Generated.Coordinates
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.Coordinates
diff --git a/src/Language/Javascript/JSaddle/DOM/Counter.hs b/src/Language/Javascript/JSaddle/DOM/Counter.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Counter.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.Counter (
+  module Language.Javascript.JSaddle.DOM.Generated.Counter
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.Counter
diff --git a/src/Language/Javascript/JSaddle/DOM/Crypto.hs b/src/Language/Javascript/JSaddle/DOM/Crypto.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Crypto.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.Crypto (
+  module Language.Javascript.JSaddle.DOM.Generated.Crypto
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.Crypto
diff --git a/src/Language/Javascript/JSaddle/DOM/CryptoKey.hs b/src/Language/Javascript/JSaddle/DOM/CryptoKey.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/CryptoKey.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.CryptoKey (
+  module Language.Javascript.JSaddle.DOM.Generated.CryptoKey
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.CryptoKey
diff --git a/src/Language/Javascript/JSaddle/DOM/CryptoKeyPair.hs b/src/Language/Javascript/JSaddle/DOM/CryptoKeyPair.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/CryptoKeyPair.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.CryptoKeyPair (
+  module Language.Javascript.JSaddle.DOM.Generated.CryptoKeyPair
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.CryptoKeyPair
diff --git a/src/Language/Javascript/JSaddle/DOM/Custom/AudioContext.hs b/src/Language/Javascript/JSaddle/DOM/Custom/AudioContext.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Custom/AudioContext.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+module Language.Javascript.JSaddle.DOM.Custom.AudioContext (
+    module Generated
+  , DecodeAudioError(..)
+  , decodeAudioData
+) where
+
+import Prelude ()
+import Prelude.Compat
+import Data.Typeable (Typeable)
+import Control.Exception (Exception(..), throwIO)
+import Control.Monad.IO.Class (MonadIO(..))
+
+import Language.Javascript.JSaddle.DOM.Types
+
+import Control.Concurrent.MVar (takeMVar, putMVar, newEmptyMVar)
+import Language.Javascript.JSaddle.DOM.Generated.AudioBufferCallback
+       (newAudioBufferCallback)
+import Language.Javascript.JSaddle.DOM.Generated.AudioContext as Generated hiding (decodeAudioData)
+import qualified Language.Javascript.JSaddle.DOM.Generated.AudioContext
+       as Generated (decodeAudioData)
+
+data DecodeAudioError = DecodeAudioError deriving (Show, Eq, Typeable)
+
+instance Exception DecodeAudioError
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.decodeAudioData Mozilla AudioContext.decodeAudioData documentation>
+decodeAudioData :: (MonadDOM m, IsAudioContext self, IsArrayBuffer audioData) =>
+                   self -> audioData -> m AudioBuffer
+decodeAudioData self audioData = do
+    result <- liftIO newEmptyMVar
+    success <- newAudioBufferCallback $ \buffer -> liftIO $ putMVar result buffer
+    error <- newAudioBufferCallback . const . liftIO $ putMVar result Nothing
+    Generated.decodeAudioData self (Just audioData) (Just success) (Just error)
+    liftIO $ takeMVar result >>= maybe (throwIO DecodeAudioError) return
diff --git a/src/Language/Javascript/JSaddle/DOM/Custom/DOMError.hs b/src/Language/Javascript/JSaddle/DOM/Custom/DOMError.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Custom/DOMError.hs
@@ -0,0 +1,26 @@
+{-# LANGUAGE ScopedTypeVariables #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+module Language.Javascript.JSaddle.DOM.Custom.DOMError (
+    module Generated
+  , DOMErrorException(..)
+  , throwDOMErrorException
+) where
+
+import Prelude ()
+import Prelude.Compat
+import Data.Typeable (Typeable)
+import Control.Exception (Exception, throwIO)
+import Control.Monad.IO.Class (MonadIO(..))
+
+import Language.Javascript.JSaddle.DOM.Types (MonadDOM)
+import Language.Javascript.JSaddle.DOM.Generated.DOMError as Generated
+
+data DOMErrorException = DOMErrorException { domErrorName :: String } deriving (Show, Eq, Typeable)
+
+instance Exception DOMErrorException
+
+throwDOMErrorException :: MonadDOM m => DOMError -> m a
+throwDOMErrorException error = do
+    domErrorName <- getName error
+    liftIO $ throwIO DOMErrorException{..}
diff --git a/src/Language/Javascript/JSaddle/DOM/Custom/Database.hs b/src/Language/Javascript/JSaddle/DOM/Custom/Database.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Custom/Database.hs
@@ -0,0 +1,78 @@
+{-# LANGUAGE FlexibleContexts #-}
+module Language.Javascript.JSaddle.DOM.Custom.Database (
+    module Generated
+  , changeVersion'
+  , changeVersion
+  , transaction'
+  , transaction
+  , readTransaction'
+  , readTransaction
+) where
+
+import Data.Maybe (fromJust, maybe)
+
+import Control.Monad.IO.Class (MonadIO(..))
+import Control.Exception (Exception, bracket)
+
+import Language.Javascript.JSaddle (JSM, postGUIAsyncJS)
+import Language.Javascript.JSaddle.DOM.Types
+       (MonadDOM, SQLTransaction, SQLError,
+        SQLTransactionCallback(..), ToJSString(..), Callback(..), withCallback,
+        SQLTransactionErrorCallback(..), VoidCallback(..))
+
+import Language.Javascript.JSaddle.DOM.Custom.SQLError (throwSQLException)
+import Language.Javascript.JSaddle.DOM.Generated.SQLTransactionCallback (newSQLTransactionCallbackSync)
+import Language.Javascript.JSaddle.DOM.Generated.Database as Generated hiding (changeVersion, transaction, readTransaction)
+import qualified Language.Javascript.JSaddle.DOM.Generated.Database as Generated (changeVersion, transaction, readTransaction)
+import Control.Concurrent.MVar (takeMVar, putMVar, newEmptyMVar)
+import Language.Javascript.JSaddle.DOM.Generated.SQLTransactionErrorCallback
+       (newSQLTransactionErrorCallback)
+import Language.Javascript.JSaddle.DOM.Generated.VoidCallback
+       (newVoidCallback)
+import Data.Coerce (Coercible, coerce)
+import Control.Monad.Trans.Reader (ReaderT(..), ask)
+
+withSQLTransactionCallback :: MonadDOM m => (SQLTransaction -> JSM ()) -> (SQLTransactionCallback -> JSM a) -> m a
+withSQLTransactionCallback callback = withCallback (newSQLTransactionCallbackSync (callback . fromJust))
+
+withSQLErrorCallbacks :: MonadDOM m => (Maybe SQLTransactionErrorCallback -> Maybe VoidCallback -> JSM ()) -> m (Maybe SQLError)
+withSQLErrorCallbacks f = do
+    result <- liftIO newEmptyMVar
+    withCallback (newSQLTransactionErrorCallback (liftIO . putMVar result)) $ \error ->
+        withCallback (newVoidCallback $ liftIO $ putMVar result Nothing) $ \success -> do
+            postGUIAsyncJS $ f (Just error) (Just success)
+            liftIO $ takeMVar result
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Database.changeVersion Mozilla Database.changeVersion documentation>
+changeVersion' :: (MonadDOM m, ToJSString oldVersion, ToJSString newVersion) =>
+                  Database -> oldVersion -> newVersion -> Maybe (SQLTransaction -> JSM ()) -> m (Maybe SQLError)
+changeVersion' self oldVersion newVersion Nothing = withSQLErrorCallbacks $ Generated.changeVersion self oldVersion newVersion Nothing
+changeVersion' self oldVersion newVersion (Just callback) =
+    withSQLTransactionCallback callback $ \transaction ->
+        withSQLErrorCallbacks $ \e s ->
+            Generated.changeVersion self oldVersion newVersion (Just transaction) e s
+
+changeVersion :: (MonadDOM m, ToJSString oldVersion, ToJSString newVersion) =>
+                 Database -> oldVersion -> newVersion -> Maybe (SQLTransaction -> JSM ()) -> m ()
+changeVersion self oldVersion newVersion callback =
+    changeVersion' self oldVersion newVersion callback >>= maybe (return ()) throwSQLException
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Database.transaction Mozilla Database.transaction documentation>
+transaction' :: (MonadDOM m) => Database -> (SQLTransaction -> JSM ()) -> m (Maybe SQLError)
+transaction' self callback =
+    withSQLTransactionCallback callback $ \transaction ->
+        withSQLErrorCallbacks $ \e s ->
+            Generated.transaction self (Just transaction) e s
+
+transaction :: (MonadDOM m) => Database -> (SQLTransaction -> JSM ()) -> m ()
+transaction self callback = transaction' self callback >>= maybe (return ()) throwSQLException
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Database.readTransaction Mozilla Database.readTransaction documentation>
+readTransaction' :: (MonadDOM m) => Database -> (SQLTransaction -> JSM ()) -> m (Maybe SQLError)
+readTransaction' self callback =
+    withSQLTransactionCallback callback $ \transaction ->
+        withSQLErrorCallbacks $ \e s ->
+            Generated.readTransaction self (Just transaction) e s
+
+readTransaction :: (MonadDOM m) => Database -> (SQLTransaction -> JSM ()) -> m ()
+readTransaction self callback = readTransaction' self callback >>= maybe (return ()) throwSQLException
diff --git a/src/Language/Javascript/JSaddle/DOM/Custom/Geolocation.hs b/src/Language/Javascript/JSaddle/DOM/Custom/Geolocation.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Custom/Geolocation.hs
@@ -0,0 +1,39 @@
+module Language.Javascript.JSaddle.DOM.Custom.Geolocation (
+    module Generated
+  , getCurrentPosition'
+  , getCurrentPosition
+) where
+
+import Data.Maybe (fromJust)
+
+import Control.Monad.IO.Class (MonadIO(..))
+import Control.Concurrent.MVar (takeMVar, putMVar, newEmptyMVar)
+
+import Language.Javascript.JSaddle (postGUIAsyncJS)
+import Language.Javascript.JSaddle.DOM.Types
+
+import Language.Javascript.JSaddle.DOM.Custom.PositionError (throwPositionException)
+
+import Language.Javascript.JSaddle.DOM.Generated.PositionCallback
+       (newPositionCallback)
+import Language.Javascript.JSaddle.DOM.Generated.PositionErrorCallback
+       (newPositionErrorCallback)
+
+import Language.Javascript.JSaddle.DOM.Generated.Geolocation as Generated hiding (getCurrentPosition)
+import qualified
+       Language.Javascript.JSaddle.DOM.Generated.Geolocation as Generated
+       (getCurrentPosition)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Geolocation.getCurrentPosition Mozilla Geolocation.getCurrentPosition documentation>
+getCurrentPosition' :: MonadDOM m => Geolocation -> Maybe PositionOptions -> m (Either PositionError Geoposition)
+getCurrentPosition' self options = do
+    result <- liftIO newEmptyMVar
+    withCallback (newPositionCallback (liftIO . putMVar result . Right . fromJust)) $ \success ->
+        withCallback (newPositionErrorCallback (liftIO . putMVar result . Left . fromJust)) $ \error -> do
+            postGUIAsyncJS $ Generated.getCurrentPosition self (Just success) (Just error) options
+            liftIO $ takeMVar result
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Geolocation.getCurrentPosition Mozilla Geolocation.getCurrentPosition documentation>
+getCurrentPosition :: MonadDOM m => Geolocation -> Maybe PositionOptions -> m Geoposition
+getCurrentPosition self options =
+    getCurrentPosition' self options >>= either throwPositionException return
diff --git a/src/Language/Javascript/JSaddle/DOM/Custom/MediaStreamTrack.hs b/src/Language/Javascript/JSaddle/DOM/Custom/MediaStreamTrack.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Custom/MediaStreamTrack.hs
@@ -0,0 +1,29 @@
+module Language.Javascript.JSaddle.DOM.Custom.MediaStreamTrack (
+    module Generated
+  , getSources
+) where
+
+import Control.Monad.IO.Class (MonadIO(..))
+import Control.Concurrent.MVar (newEmptyMVar, takeMVar, putMVar)
+
+import Language.Javascript.JSaddle (postGUIAsyncJS)
+import Language.Javascript.JSaddle.DOM.Types
+       (withCallback, Callback(..), SourceInfo(..), MonadDOM, MediaStreamTrackSourcesCallback(..))
+
+import Language.Javascript.JSaddle.DOM.Generated.MediaStreamTrackSourcesCallback
+       (newMediaStreamTrackSourcesCallback)
+
+import Language.Javascript.JSaddle.DOM.Generated.MediaStreamTrack as Generated hiding (getSources)
+import qualified
+       Language.Javascript.JSaddle.DOM.Generated.MediaStreamTrack
+       as Generated (getSources)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.getSources Mozilla MediaStreamTrack.getSources documentation>
+getSources :: (MonadDOM m, IsMediaStreamTrack self) => self -> m [Maybe SourceInfo]
+getSources self = do
+    result <- liftIO newEmptyMVar
+    withCallback (newMediaStreamTrackSourcesCallback (liftIO . putMVar result)) $ \callback -> do
+        postGUIAsyncJS $ Generated.getSources self (Just callback)
+        liftIO $ takeMVar result
+
+
diff --git a/src/Language/Javascript/JSaddle/DOM/Custom/Navigator.hs b/src/Language/Javascript/JSaddle/DOM/Custom/Navigator.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Custom/Navigator.hs
@@ -0,0 +1,38 @@
+module Language.Javascript.JSaddle.DOM.Custom.Navigator (
+    module Generated
+  , getUserMedia
+) where
+
+import Data.Maybe (fromJust)
+
+import Control.Monad.IO.Class (MonadIO(..))
+import Control.Concurrent.MVar (takeMVar, putMVar, newEmptyMVar)
+
+import Language.Javascript.JSaddle (postGUIAsyncJS)
+import Language.Javascript.JSaddle.DOM.Types
+       (withCallback, Callback(..), MediaStream(..), NavigatorUserMediaError(..),
+        Dictionary(..), MonadDOM, NavigatorUserMediaSuccessCallback(..),
+        NavigatorUserMediaErrorCallback(..))
+
+import Language.Javascript.JSaddle.DOM.Custom.NavigatorUserMediaError (throwUserMediaException)
+
+import Language.Javascript.JSaddle.DOM.Generated.NavigatorUserMediaSuccessCallback
+       (newNavigatorUserMediaSuccessCallback)
+import Language.Javascript.JSaddle.DOM.Generated.NavigatorUserMediaErrorCallback
+       (newNavigatorUserMediaErrorCallback)
+
+import Language.Javascript.JSaddle.DOM.Generated.Navigator as Generated hiding (getUserMedia)
+import qualified Language.Javascript.JSaddle.DOM.Generated.Navigator
+       as Generated (webkitGetUserMedia)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.webkitGetUserMedia Mozilla Navigator.webkitGetUserMedia documentation>
+getUserMedia' :: MonadDOM m => Navigator -> Maybe Dictionary -> m (Either NavigatorUserMediaError MediaStream)
+getUserMedia' self options = do
+    result <- liftIO newEmptyMVar
+    withCallback (newNavigatorUserMediaSuccessCallback (liftIO . putMVar result . Right . fromJust)) $ \success ->
+        withCallback (newNavigatorUserMediaErrorCallback (liftIO . putMVar result . Left . fromJust)) $ \error -> do
+            postGUIAsyncJS $ Generated.webkitGetUserMedia self options (Just success) (Just error)
+            liftIO $ takeMVar result
+
+getUserMedia :: MonadDOM m => Navigator -> Maybe Dictionary -> m MediaStream
+getUserMedia self options = getUserMedia' self options >>= either throwUserMediaException return
diff --git a/src/Language/Javascript/JSaddle/DOM/Custom/NavigatorUserMediaError.hs b/src/Language/Javascript/JSaddle/DOM/Custom/NavigatorUserMediaError.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Custom/NavigatorUserMediaError.hs
@@ -0,0 +1,31 @@
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+module Language.Javascript.JSaddle.DOM.Custom.NavigatorUserMediaError (
+    module Generated
+  , UserMediaException(..)
+  , throwUserMediaException
+) where
+
+import Data.Typeable (Typeable)
+import Control.Exception (Exception, throwIO)
+import Control.Monad.IO.Class (MonadIO(..))
+
+import Language.Javascript.JSaddle.DOM.Types (MonadDOM)
+
+import Language.Javascript.JSaddle.DOM.Custom.DOMError (getName)
+import Language.Javascript.JSaddle.DOM.Generated.NavigatorUserMediaError as Generated
+
+data UserMediaException = UserMediaException {
+        userMediaErrorName           :: String,
+        userMediaErrorConstraintName :: String } deriving (Show, Eq, Typeable)
+
+instance Exception UserMediaException
+
+throwUserMediaException :: MonadDOM m => NavigatorUserMediaError -> m a
+throwUserMediaException error = do
+    userMediaErrorName           <- getName           error
+    userMediaErrorConstraintName <- getConstraintName error
+    liftIO $ throwIO (UserMediaException{..})
+
+
+
diff --git a/src/Language/Javascript/JSaddle/DOM/Custom/PositionError.hs b/src/Language/Javascript/JSaddle/DOM/Custom/PositionError.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Custom/PositionError.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+module Language.Javascript.JSaddle.DOM.Custom.PositionError (
+    module Generated
+  , PositionErrorCode(..)
+  , PositionException(..)
+  , throwPositionException
+) where
+
+import Prelude ()
+import Prelude.Compat
+import Data.Typeable (Typeable)
+import Control.Exception (Exception, throwIO)
+import Control.Monad.IO.Class (MonadIO(..))
+
+import Language.Javascript.JSaddle.DOM.Types (MonadDOM)
+
+import Language.Javascript.JSaddle.DOM.Generated.PositionError as Generated
+
+data PositionErrorCode = PositionPermissionDenied | PositionUnavailable | PositionTimeout deriving (Show, Eq, Enum)
+data PositionException = PositionException {
+        positionErrorCode    :: PositionErrorCode,
+        positionErrorMessage :: String } deriving (Show, Eq, Typeable)
+
+instance Exception PositionException
+
+throwPositionException :: MonadDOM m => PositionError -> m a
+throwPositionException error = do
+    positionErrorCode    <- (toEnum . subtract 1 . fromIntegral) <$> getCode error
+    positionErrorMessage <- getMessage error
+    liftIO $ throwIO (PositionException{..})
+
diff --git a/src/Language/Javascript/JSaddle/DOM/Custom/RTCPeerConnection.hs b/src/Language/Javascript/JSaddle/DOM/Custom/RTCPeerConnection.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Custom/RTCPeerConnection.hs
@@ -0,0 +1,116 @@
+module Language.Javascript.JSaddle.DOM.Custom.RTCPeerConnection (
+    module Generated
+  , createOffer'
+  , createOffer
+  , createAnswer'
+  , createAnswer
+  , setLocalDescription'
+  , setLocalDescription
+  , setRemoteDescription'
+  , setRemoteDescription
+) where
+
+import Data.Maybe (fromJust)
+
+import Control.Concurrent.MVar (takeMVar, putMVar, newEmptyMVar)
+import Control.Monad.IO.Class (MonadIO(..))
+
+import Language.Javascript.JSaddle (postGUIAsyncJS)
+import Language.Javascript.JSaddle.DOM.Types
+       (RTCStatsResponse(..), IsMediaStreamTrack, RTCIceCandidate(..),
+        withCallback, Callback(..), RTCSessionDescription(..), DOMError(..),
+        Dictionary(..), RTCPeerConnection(..), MonadDOM,
+        RTCSessionDescriptionCallback(..),
+        RTCPeerConnectionErrorCallback(..),
+        RTCStatsCallback(..), VoidCallback(..))
+
+import Language.Javascript.JSaddle.DOM.Custom.DOMError (throwDOMErrorException)
+
+import Language.Javascript.JSaddle.DOM.Generated.RTCSessionDescriptionCallback
+       (newRTCSessionDescriptionCallback)
+import Language.Javascript.JSaddle.DOM.Generated.RTCPeerConnectionErrorCallback
+       (newRTCPeerConnectionErrorCallback)
+import Language.Javascript.JSaddle.DOM.Generated.VoidCallback
+       (newVoidCallback)
+import Language.Javascript.JSaddle.DOM.Generated.RTCStatsCallback
+       (newRTCStatsCallback)
+
+import Language.Javascript.JSaddle.DOM.Generated.Geolocation as Generated hiding (getCurrentPosition)
+import qualified
+       Language.Javascript.JSaddle.DOM.Generated.RTCPeerConnection
+       as Generated
+       (getStats, addIceCandidate, setRemoteDescription,
+        setLocalDescription, createAnswer, createOffer)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection#createOffer Mozilla webkitRTCPeerConnection.createOffer documentation>
+createOffer' :: MonadDOM m => RTCPeerConnection -> Maybe Dictionary -> m (Either DOMError RTCSessionDescription)
+createOffer' self offerOptions = do
+    result <- liftIO newEmptyMVar
+    withCallback (newRTCSessionDescriptionCallback (liftIO . putMVar result . Right . fromJust)) $ \success ->
+        withCallback (newRTCPeerConnectionErrorCallback (liftIO . putMVar result . Left . fromJust)) $ \error -> do
+            postGUIAsyncJS $ Generated.createOffer self (Just success) (Just error) offerOptions
+            liftIO $ takeMVar result
+
+createOffer :: MonadDOM m => RTCPeerConnection -> Maybe Dictionary -> m RTCSessionDescription
+createOffer self offerOptions = createOffer' self offerOptions >>= either throwDOMErrorException return
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection#createAnswer Mozilla webkitRTCPeerConnection.createAnswer documentation>
+createAnswer' :: MonadDOM m => RTCPeerConnection -> Maybe Dictionary -> m (Either DOMError RTCSessionDescription)
+createAnswer' self answerOptions = do
+    result <- liftIO newEmptyMVar
+    withCallback (newRTCSessionDescriptionCallback (liftIO . putMVar result . Right . fromJust)) $ \success ->
+        withCallback (newRTCPeerConnectionErrorCallback (liftIO . putMVar result . Left . fromJust)) $ \error -> do
+            postGUIAsyncJS $ Generated.createAnswer self (Just success) (Just error) answerOptions
+            liftIO $ takeMVar result
+
+createAnswer :: MonadDOM m => RTCPeerConnection -> Maybe Dictionary -> m RTCSessionDescription
+createAnswer self answerOptions = createAnswer' self answerOptions >>= either throwDOMErrorException return
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection#setLocalDescription Mozilla webkitRTCPeerConnection.setLocalDescription documentation>
+setLocalDescription' :: MonadDOM m => RTCPeerConnection -> RTCSessionDescription -> m (Maybe DOMError)
+setLocalDescription' self description = do
+    result <- liftIO newEmptyMVar
+    withCallback (newVoidCallback (liftIO $ putMVar result Nothing)) $ \success ->
+        withCallback (newRTCPeerConnectionErrorCallback (liftIO . putMVar result)) $ \error -> do
+            postGUIAsyncJS $ Generated.setLocalDescription self (Just description) (Just success) (Just error)
+            liftIO $ takeMVar result
+
+setLocalDescription :: MonadDOM m => RTCPeerConnection -> RTCSessionDescription -> m ()
+setLocalDescription self description = setLocalDescription' self description >>= maybe (return ()) throwDOMErrorException
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection#setRemoteDescription Mozilla webkitRTCPeerConnection.setRemoteDescription documentation>
+setRemoteDescription' :: MonadDOM m => RTCPeerConnection -> RTCSessionDescription -> m (Maybe DOMError)
+setRemoteDescription' self description = do
+    result <- liftIO newEmptyMVar
+    withCallback (newVoidCallback (liftIO $ putMVar result Nothing)) $ \success ->
+        withCallback (newRTCPeerConnectionErrorCallback (liftIO . putMVar result)) $ \error -> do
+            postGUIAsyncJS $ Generated.setRemoteDescription self (Just description) (Just success) (Just error)
+            liftIO $ takeMVar result
+
+setRemoteDescription :: MonadDOM m => RTCPeerConnection -> RTCSessionDescription -> m ()
+setRemoteDescription self description = setRemoteDescription' self description >>= maybe (return ()) throwDOMErrorException
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection#addIceCandidate Mozilla webkitRTCPeerConnection.addIceCandidate documentation>
+addIceCandidate' :: MonadDOM m => RTCPeerConnection -> RTCIceCandidate -> m (Maybe DOMError)
+addIceCandidate' self candidate = do
+    result <- liftIO newEmptyMVar
+    withCallback (newVoidCallback (liftIO $ putMVar result Nothing)) $ \success ->
+        withCallback (newRTCPeerConnectionErrorCallback (liftIO . putMVar result)) $ \error -> do
+            postGUIAsyncJS $ Generated.addIceCandidate self (Just candidate) (Just success) (Just error)
+            liftIO $ takeMVar result
+
+addIceCandidate :: MonadDOM m => RTCPeerConnection -> RTCIceCandidate -> m ()
+addIceCandidate self candidate = addIceCandidate' self candidate >>= maybe (return ()) throwDOMErrorException
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection#getStats Mozilla webkitRTCPeerConnection.getStats documentation>
+getStats' :: (MonadDOM m, IsMediaStreamTrack selector) => RTCPeerConnection -> Maybe selector -> m (Either DOMError RTCStatsResponse)
+getStats' self selector = do
+    result <- liftIO newEmptyMVar
+    withCallback (newRTCStatsCallback (liftIO . putMVar result . Right . fromJust)) $ \success ->
+        withCallback (newRTCPeerConnectionErrorCallback (liftIO . putMVar result . Left . fromJust)) $ \error -> do
+            postGUIAsyncJS $ Generated.getStats self (Just success) (Just error) selector
+            liftIO $ takeMVar result
+
+getStats :: (MonadDOM m, IsMediaStreamTrack selector) => RTCPeerConnection -> Maybe selector -> m RTCStatsResponse
+getStats self selector = getStats' self selector >>= either throwDOMErrorException return
+
diff --git a/src/Language/Javascript/JSaddle/DOM/Custom/RTCPeerConnectionError.hs b/src/Language/Javascript/JSaddle/DOM/Custom/RTCPeerConnectionError.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Custom/RTCPeerConnectionError.hs
@@ -0,0 +1,6 @@
+module Language.Javascript.JSaddle.DOM.Custom.RTCPeerConnectionError (
+
+) where
+
+
+
diff --git a/src/Language/Javascript/JSaddle/DOM/Custom/SQLError.hs b/src/Language/Javascript/JSaddle/DOM/Custom/SQLError.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Custom/SQLError.hs
@@ -0,0 +1,38 @@
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+module Language.Javascript.JSaddle.DOM.Custom.SQLError (
+    module Generated
+  , SQLErrorCode(..)
+  , SQLException(..)
+  , throwSQLException
+) where
+
+import Prelude ()
+import Prelude.Compat
+import Data.Typeable (Typeable)
+import Control.Exception (Exception, throwIO)
+import Control.Monad.IO.Class (MonadIO(..))
+
+import Language.Javascript.JSaddle.DOM.Types (MonadDOM(..))
+
+import Language.Javascript.JSaddle.DOM.Generated.SQLError as Generated
+
+data SQLErrorCode = SQLErrorUnknown
+                  | SQLErrorDatabase
+                  | SQLErrorVersion
+                  | SQLErrorTooLarge
+                  | SQLErrorQuota
+                  | SQLErrorSyntax
+                  | SQLErrorConstraint
+                  | SQLErrorTimeout
+                  deriving (Show, Eq, Enum, Typeable)
+data SQLException = SQLException { sqlErrorCode :: SQLErrorCode, sqlErrorMessage :: String } deriving (Show, Eq, Typeable)
+
+instance Exception SQLException
+
+throwSQLException :: MonadDOM m => SQLError -> m a
+throwSQLException error = do
+    sqlErrorCode <- (toEnum . subtract 1 . fromIntegral) <$> getCode error
+    sqlErrorMessage <- getMessage error
+    liftIO $ throwIO (SQLException{..})
+
diff --git a/src/Language/Javascript/JSaddle/DOM/Custom/SQLTransaction.hs b/src/Language/Javascript/JSaddle/DOM/Custom/SQLTransaction.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Custom/SQLTransaction.hs
@@ -0,0 +1,47 @@
+module Language.Javascript.JSaddle.DOM.Custom.SQLTransaction (
+    module Generated
+  , executeSql'
+  , executeSql
+  , executeSql_
+) where
+
+import Data.Maybe (fromJust)
+
+import Control.Monad (void)
+import Control.Concurrent.MVar (takeMVar, putMVar, newEmptyMVar)
+import Control.Monad.IO.Class (MonadIO(..))
+
+import Language.Javascript.JSaddle (postGUIAsyncJS)
+import Language.Javascript.JSaddle.DOM.Types
+       (withCallback, Callback(..), SQLResultSet(..), SQLError(..), IsObjectArray,
+        MonadDOM, ToJSString, SQLStatementCallback(..),
+        SQLStatementErrorCallback(..))
+
+import Language.Javascript.JSaddle.DOM.Custom.SQLError (throwSQLException)
+
+import Language.Javascript.JSaddle.DOM.Generated.SQLStatementCallback
+       (newSQLStatementCallback)
+import Language.Javascript.JSaddle.DOM.Generated.SQLStatementErrorCallback
+       (newSQLStatementErrorCallback)
+
+import Language.Javascript.JSaddle.DOM.Generated.SQLTransaction as Generated hiding (executeSql)
+import qualified
+       Language.Javascript.JSaddle.DOM.Generated.SQLTransaction
+       as Generated (executeSql)
+
+executeSql' :: (MonadDOM m, ToJSString sqlStatement, IsObjectArray arguments) =>
+              SQLTransaction -> sqlStatement -> Maybe arguments -> m (Either SQLError SQLResultSet)
+executeSql' self sqlStatement arguments = do
+    result <- liftIO newEmptyMVar
+    withCallback (newSQLStatementCallback (\tx rs -> liftIO . putMVar result . Right $ fromJust rs)) $ \success ->
+        withCallback (newSQLStatementErrorCallback (\tx e -> liftIO . putMVar result . Left $ fromJust e)) $ \error -> do
+            postGUIAsyncJS $ Generated.executeSql self sqlStatement arguments (Just success) (Just error)
+            liftIO $ takeMVar result
+
+executeSql :: (MonadDOM m, ToJSString sqlStatement, IsObjectArray arguments) =>
+              SQLTransaction -> sqlStatement -> Maybe arguments -> m SQLResultSet
+executeSql self sqlStatement arguments = executeSql' self sqlStatement arguments >>= either throwSQLException return
+
+executeSql_ :: (MonadDOM m, ToJSString sqlStatement, IsObjectArray arguments) =>
+              SQLTransaction -> sqlStatement -> Maybe arguments -> m ()
+executeSql_ self sqlStatement arguments = void $ executeSql self sqlStatement arguments
diff --git a/src/Language/Javascript/JSaddle/DOM/Custom/Window.hs b/src/Language/Javascript/JSaddle/DOM/Custom/Window.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Custom/Window.hs
@@ -0,0 +1,29 @@
+module Language.Javascript.JSaddle.DOM.Custom.Window (
+    module Generated
+  , openDatabase
+) where
+
+import Prelude ()
+import Prelude.Compat
+import Control.Monad.IO.Class (MonadIO(..))
+
+import Language.Javascript.JSaddle.DOM.Types
+       (withCallback, Callback(..), MonadDOM, ToJSString, Database, DatabaseCallback(..))
+
+import Language.Javascript.JSaddle.Monad (postGUISyncJS)
+import Language.Javascript.JSaddle.DOM.Generated.Window as Generated hiding (openDatabase)
+import qualified Language.Javascript.JSaddle.DOM.Generated.Window
+       as Generated (openDatabase)
+import Control.Concurrent.MVar (takeMVar, putMVar, newEmptyMVar)
+import Language.Javascript.JSaddle.DOM.Generated.DatabaseCallback
+       (newDatabaseCallback)
+import Data.Maybe (fromJust)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.openDatabase Mozilla Window.openDatabase documentation>
+openDatabase :: (MonadDOM m, ToJSString name, ToJSString version, ToJSString displayName) =>
+                Window -> name -> version -> displayName -> Word -> m Database
+openDatabase self name version displayName estimatedSize = do
+    result <- liftIO newEmptyMVar
+    withCallback (newDatabaseCallback (liftIO . putMVar result)) $ \creationCallback ->
+        postGUISyncJS $ Generated.openDatabase self name version displayName estimatedSize (Just creationCallback)
+            >>= maybe (fromJust <$> liftIO (takeMVar result)) return
diff --git a/src/Language/Javascript/JSaddle/DOM/Custom/XMLHttpRequest.hs b/src/Language/Javascript/JSaddle/DOM/Custom/XMLHttpRequest.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Custom/XMLHttpRequest.hs
@@ -0,0 +1,79 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+module Language.Javascript.JSaddle.DOM.Custom.XMLHttpRequest (
+    module Generated
+  , XHRError(..)
+  , send
+  , sendString
+  , sendArrayBuffer
+  , sendBlob
+  , sendDocument
+  , sendFormData
+) where
+
+import Prelude ()
+import Prelude.Compat
+import Data.Typeable (Typeable)
+import Control.Concurrent.MVar (takeMVar, newEmptyMVar, putMVar)
+import Control.Monad.IO.Class (MonadIO(..))
+import Control.Exception (Exception(..), throwIO)
+import Control.Lens.Operators ((^.))
+
+import Language.Javascript.JSaddle
+       (valToText, valToStr, JSM, js0, js1, postGUIAsyncJS, bracket,
+        ToJSString, ToJSVal(..), JSVal)
+import Language.Javascript.JSaddle.DOM.Types
+       (MonadDOM(..), FormData(..), IsDocument, IsBlob, IsArrayBufferView)
+import Language.Javascript.JSaddle.DOM.EventM (on)
+
+import Language.Javascript.JSaddle.DOM.Generated.XMLHttpRequest as Generated hiding (send)
+import Control.Monad (void)
+import qualified Data.Text as T (unpack)
+
+data XHRError = XHRError
+              | XHRAborted
+              deriving (Show, Eq, Typeable)
+
+instance Exception XHRError
+
+throwXHRError :: MonadDOM m => Maybe XHRError -> m ()
+throwXHRError = maybe (return ()) (liftIO . throwIO)
+
+withEvent :: JSM (JSM ()) -> JSM a -> JSM a
+withEvent aquire = bracket aquire id . const
+
+send' :: (MonadDOM m) => XMLHttpRequest -> Maybe JSVal -> m (Maybe XHRError)
+send' self mbVal = do
+    result <- liftIO newEmptyMVar
+    liftDOM $
+        withEvent (on self Generated.error . liftIO $ putMVar result (Just XHRError)) $
+            withEvent (on self abortEvent . liftIO $ putMVar result (Just XHRAborted)) $
+                withEvent (on self load . liftIO $ putMVar result Nothing) $ do
+                    postGUIAsyncJS . void $
+                        case mbVal of
+                            Nothing  -> self ^. js0 "send"
+                            Just val -> self ^. js1 "send" val
+                    liftIO $ takeMVar result
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest#send() Mozilla XMLHttpRequest.send documentation>
+send :: (MonadDOM m) => XMLHttpRequest -> m ()
+send self = send' self Nothing >>= throwXHRError
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest#send() Mozilla XMLHttpRequest.send documentation>
+sendString :: (MonadDOM m, ToJSString str) => XMLHttpRequest -> str -> m ()
+sendString self str = liftDOM $ toJSVal str >>= send' self . Just >>= throwXHRError
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest#send() Mozilla XMLHttpRequest.send documentation>
+sendArrayBuffer :: (MonadDOM m, IsArrayBufferView view) => XMLHttpRequest -> view -> m ()
+sendArrayBuffer self view = liftDOM $ toJSVal view >>= send' self . Just >>= throwXHRError
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest#send() Mozilla XMLHttpRequest.send documentation>
+sendBlob :: (MonadDOM m, IsBlob blob) => XMLHttpRequest -> blob -> m ()
+sendBlob self blob = liftDOM $ toJSVal blob >>= send' self . Just >>= throwXHRError
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest#send() Mozilla XMLHttpRequest.send documentation>
+sendDocument :: (MonadDOM m, IsDocument doc) => XMLHttpRequest -> doc -> m ()
+sendDocument self doc = liftDOM $ toJSVal doc >>= send' self . Just >>= throwXHRError
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest#send() Mozilla XMLHttpRequest.send documentation>
+sendFormData :: (MonadDOM m) => XMLHttpRequest -> FormData -> m ()
+sendFormData self formData = liftDOM $ toJSVal formData >>= send' self . Just >>= throwXHRError
diff --git a/src/Language/Javascript/JSaddle/DOM/CustomEvent.hs b/src/Language/Javascript/JSaddle/DOM/CustomEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/CustomEvent.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.CustomEvent (
+  module Language.Javascript.JSaddle.DOM.Generated.CustomEvent
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.CustomEvent
diff --git a/src/Language/Javascript/JSaddle/DOM/DOMError.hs b/src/Language/Javascript/JSaddle/DOM/DOMError.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/DOMError.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.DOMError (
+  module Language.Javascript.JSaddle.DOM.Custom.DOMError
+  ) where
+import Language.Javascript.JSaddle.DOM.Custom.DOMError
diff --git a/src/Language/Javascript/JSaddle/DOM/DOMImplementation.hs b/src/Language/Javascript/JSaddle/DOM/DOMImplementation.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/DOMImplementation.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.DOMImplementation (
+  module Language.Javascript.JSaddle.DOM.Generated.DOMImplementation
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.DOMImplementation
diff --git a/src/Language/Javascript/JSaddle/DOM/DOMNamedFlowCollection.hs b/src/Language/Javascript/JSaddle/DOM/DOMNamedFlowCollection.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/DOMNamedFlowCollection.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.DOMNamedFlowCollection (
+  module Language.Javascript.JSaddle.DOM.Generated.DOMNamedFlowCollection
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.DOMNamedFlowCollection
diff --git a/src/Language/Javascript/JSaddle/DOM/DOMParser.hs b/src/Language/Javascript/JSaddle/DOM/DOMParser.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/DOMParser.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.DOMParser (
+  module Language.Javascript.JSaddle.DOM.Generated.DOMParser
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.DOMParser
diff --git a/src/Language/Javascript/JSaddle/DOM/DOMSettableTokenList.hs b/src/Language/Javascript/JSaddle/DOM/DOMSettableTokenList.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/DOMSettableTokenList.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.DOMSettableTokenList (
+  module Language.Javascript.JSaddle.DOM.Generated.DOMSettableTokenList
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.DOMSettableTokenList
diff --git a/src/Language/Javascript/JSaddle/DOM/DOMStringList.hs b/src/Language/Javascript/JSaddle/DOM/DOMStringList.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/DOMStringList.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.DOMStringList (
+  module Language.Javascript.JSaddle.DOM.Generated.DOMStringList
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.DOMStringList
diff --git a/src/Language/Javascript/JSaddle/DOM/DOMTokenList.hs b/src/Language/Javascript/JSaddle/DOM/DOMTokenList.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/DOMTokenList.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.DOMTokenList (
+  module Language.Javascript.JSaddle.DOM.Generated.DOMTokenList
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.DOMTokenList
diff --git a/src/Language/Javascript/JSaddle/DOM/DataCue.hs b/src/Language/Javascript/JSaddle/DOM/DataCue.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/DataCue.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.DataCue (
+  module Language.Javascript.JSaddle.DOM.Generated.DataCue
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.DataCue
diff --git a/src/Language/Javascript/JSaddle/DOM/DataTransfer.hs b/src/Language/Javascript/JSaddle/DOM/DataTransfer.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/DataTransfer.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.DataTransfer (
+  module Language.Javascript.JSaddle.DOM.Generated.DataTransfer
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.DataTransfer
diff --git a/src/Language/Javascript/JSaddle/DOM/DataTransferItem.hs b/src/Language/Javascript/JSaddle/DOM/DataTransferItem.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/DataTransferItem.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.DataTransferItem (
+  module Language.Javascript.JSaddle.DOM.Generated.DataTransferItem
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.DataTransferItem
diff --git a/src/Language/Javascript/JSaddle/DOM/DataTransferItemList.hs b/src/Language/Javascript/JSaddle/DOM/DataTransferItemList.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/DataTransferItemList.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.DataTransferItemList (
+  module Language.Javascript.JSaddle.DOM.Generated.DataTransferItemList
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.DataTransferItemList
diff --git a/src/Language/Javascript/JSaddle/DOM/Database.hs b/src/Language/Javascript/JSaddle/DOM/Database.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Database.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.Database (
+  module Language.Javascript.JSaddle.DOM.Custom.Database
+  ) where
+import Language.Javascript.JSaddle.DOM.Custom.Database
diff --git a/src/Language/Javascript/JSaddle/DOM/DatabaseCallback.hs b/src/Language/Javascript/JSaddle/DOM/DatabaseCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/DatabaseCallback.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.DatabaseCallback (
+  module Language.Javascript.JSaddle.DOM.Generated.DatabaseCallback
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.DatabaseCallback
diff --git a/src/Language/Javascript/JSaddle/DOM/DedicatedWorkerGlobalScope.hs b/src/Language/Javascript/JSaddle/DOM/DedicatedWorkerGlobalScope.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/DedicatedWorkerGlobalScope.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.DedicatedWorkerGlobalScope (
+  module Language.Javascript.JSaddle.DOM.Generated.DedicatedWorkerGlobalScope
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.DedicatedWorkerGlobalScope
diff --git a/src/Language/Javascript/JSaddle/DOM/DelayNode.hs b/src/Language/Javascript/JSaddle/DOM/DelayNode.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/DelayNode.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.DelayNode (
+  module Language.Javascript.JSaddle.DOM.Generated.DelayNode
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.DelayNode
diff --git a/src/Language/Javascript/JSaddle/DOM/DeviceMotionEvent.hs b/src/Language/Javascript/JSaddle/DOM/DeviceMotionEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/DeviceMotionEvent.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.DeviceMotionEvent (
+  module Language.Javascript.JSaddle.DOM.Generated.DeviceMotionEvent
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.DeviceMotionEvent
diff --git a/src/Language/Javascript/JSaddle/DOM/DeviceOrientationEvent.hs b/src/Language/Javascript/JSaddle/DOM/DeviceOrientationEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/DeviceOrientationEvent.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.DeviceOrientationEvent (
+  module Language.Javascript.JSaddle.DOM.Generated.DeviceOrientationEvent
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.DeviceOrientationEvent
diff --git a/src/Language/Javascript/JSaddle/DOM/DeviceProximityEvent.hs b/src/Language/Javascript/JSaddle/DOM/DeviceProximityEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/DeviceProximityEvent.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.DeviceProximityEvent (
+  module Language.Javascript.JSaddle.DOM.Generated.DeviceProximityEvent
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.DeviceProximityEvent
diff --git a/src/Language/Javascript/JSaddle/DOM/Document.hs b/src/Language/Javascript/JSaddle/DOM/Document.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Document.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.Document (
+  module Language.Javascript.JSaddle.DOM.Generated.Document
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.Document
diff --git a/src/Language/Javascript/JSaddle/DOM/DocumentFragment.hs b/src/Language/Javascript/JSaddle/DOM/DocumentFragment.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/DocumentFragment.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.DocumentFragment (
+  module Language.Javascript.JSaddle.DOM.Generated.DocumentFragment
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.DocumentFragment
diff --git a/src/Language/Javascript/JSaddle/DOM/DocumentType.hs b/src/Language/Javascript/JSaddle/DOM/DocumentType.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/DocumentType.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.DocumentType (
+  module Language.Javascript.JSaddle.DOM.Generated.DocumentType
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.DocumentType
diff --git a/src/Language/Javascript/JSaddle/DOM/DynamicsCompressorNode.hs b/src/Language/Javascript/JSaddle/DOM/DynamicsCompressorNode.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/DynamicsCompressorNode.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.DynamicsCompressorNode (
+  module Language.Javascript.JSaddle.DOM.Generated.DynamicsCompressorNode
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.DynamicsCompressorNode
diff --git a/src/Language/Javascript/JSaddle/DOM/EXTBlendMinMax.hs b/src/Language/Javascript/JSaddle/DOM/EXTBlendMinMax.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/EXTBlendMinMax.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.EXTBlendMinMax (
+  module Language.Javascript.JSaddle.DOM.Generated.EXTBlendMinMax
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.EXTBlendMinMax
diff --git a/src/Language/Javascript/JSaddle/DOM/EXTTextureFilterAnisotropic.hs b/src/Language/Javascript/JSaddle/DOM/EXTTextureFilterAnisotropic.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/EXTTextureFilterAnisotropic.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.EXTTextureFilterAnisotropic (
+  module Language.Javascript.JSaddle.DOM.Generated.EXTTextureFilterAnisotropic
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.EXTTextureFilterAnisotropic
diff --git a/src/Language/Javascript/JSaddle/DOM/EXTsRGB.hs b/src/Language/Javascript/JSaddle/DOM/EXTsRGB.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/EXTsRGB.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.EXTsRGB (
+  module Language.Javascript.JSaddle.DOM.Generated.EXTsRGB
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.EXTsRGB
diff --git a/src/Language/Javascript/JSaddle/DOM/Element.hs b/src/Language/Javascript/JSaddle/DOM/Element.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Element.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.Element (
+  module Language.Javascript.JSaddle.DOM.Generated.Element
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.Element
diff --git a/src/Language/Javascript/JSaddle/DOM/Entity.hs b/src/Language/Javascript/JSaddle/DOM/Entity.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Entity.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.Entity (
+  module Language.Javascript.JSaddle.DOM.Generated.Entity
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.Entity
diff --git a/src/Language/Javascript/JSaddle/DOM/Enums.hs b/src/Language/Javascript/JSaddle/DOM/Enums.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Enums.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.Enums (
+  module Language.Javascript.JSaddle.DOM.Generated.Enums
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.Enums
diff --git a/src/Language/Javascript/JSaddle/DOM/ErrorEvent.hs b/src/Language/Javascript/JSaddle/DOM/ErrorEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/ErrorEvent.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.ErrorEvent (
+  module Language.Javascript.JSaddle.DOM.Generated.ErrorEvent
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.ErrorEvent
diff --git a/src/Language/Javascript/JSaddle/DOM/Event.hs b/src/Language/Javascript/JSaddle/DOM/Event.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Event.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.Event (
+  module Language.Javascript.JSaddle.DOM.Generated.Event
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.Event
diff --git a/src/Language/Javascript/JSaddle/DOM/EventListener.hs b/src/Language/Javascript/JSaddle/DOM/EventListener.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/EventListener.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.EventListener (
+  module Language.Javascript.JSaddle.DOM.Generated.EventListener
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.EventListener
diff --git a/src/Language/Javascript/JSaddle/DOM/EventM.hs b/src/Language/Javascript/JSaddle/DOM/EventM.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/EventM.hs
@@ -0,0 +1,296 @@
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE ConstraintKinds #-}
+module Language.Javascript.JSaddle.DOM.EventM
+(
+  EventM(..)
+, SaferEventListener(..)
+, EventName
+, newListener
+, newListenerSync
+, newListenerAsync
+, addListener
+, removeListener
+, releaseListener
+, on
+, event
+, eventTarget
+, target
+, eventCurrentTarget
+, eventPhase
+, bubbles
+, cancelable
+, timeStamp
+, stopPropagation
+, preventDefault
+, defaultPrevented
+, stopImmediatePropagation
+, srcElement
+, getCancelBubble
+, cancelBubble
+, getReturnValue
+, returnValue
+, uiView
+, uiDetail
+, uiKeyCode
+, uiCharCode
+, uiLayerX
+, uiLayerY
+, uiLayerXY
+, uiPageX
+, uiPageY
+, uiPageXY
+, uiWhich
+, mouseScreenX
+, mouseScreenY
+, mouseScreenXY
+, mouseClientX
+, mouseClientY
+, mouseClientXY
+, mouseMovementX
+, mouseMovementY
+, mouseMovementXY
+, mouseCtrlKey
+, mouseShiftKey
+, mouseAltKey
+, mouseMetaKey
+, mouseButton
+, mouseRelatedTarget
+, mouseOffsetX
+, mouseOffsetY
+, mouseOffsetXY
+, mouseX
+, mouseY
+, mouseXY
+, mouseFromElement
+, mouseToElement
+)
+where
+import           Control.Applicative ((<$>))
+import           Control.Monad.Trans.Class (MonadTrans(..))
+import           Control.Monad.Trans.Reader (ReaderT, ask, runReaderT)
+import           Control.Monad.IO.Class (MonadIO(..))
+import           Language.Javascript.JSaddle.DOM.Types
+import qualified Language.Javascript.JSaddle.DOM.Event as Event
+import qualified Language.Javascript.JSaddle.DOM.UIEvent as UIEvent
+import qualified Language.Javascript.JSaddle.DOM.MouseEvent as MouseEvent
+import           Language.Javascript.JSaddle.DOM.EventTarget
+import           Language.Javascript.JSaddle.DOM.EventTargetClosures
+import           Data.Word (Word)
+import           Language.Javascript.JSaddle (JSM)
+
+type EventM t e = ReaderT e JSM
+
+instance MonadDOM (ReaderT e JSM) where
+    liftDOM = lift
+
+newListener :: (IsEvent e) => EventM t e () -> JSM (SaferEventListener t e)
+newListener f = eventListenerNew (runReaderT f)
+
+newListenerSync :: (IsEvent e) => EventM t e () -> JSM (SaferEventListener t e)
+newListenerSync f = eventListenerNewSync (runReaderT f)
+
+newListenerAsync :: (IsEvent e) => EventM t e () -> JSM (SaferEventListener t e)
+newListenerAsync f = eventListenerNewAsync (runReaderT f)
+
+addListener :: (IsEventTarget t, IsEvent e) => t -> EventName t e -> SaferEventListener t e -> Bool -> JSM ()
+addListener target (EventName eventName) l useCapture = do
+    raw <- EventListener <$> toJSVal l
+    addEventListener target eventName (Just raw) useCapture
+
+removeListener :: (IsEventTarget t, IsEvent e) => t -> EventName t e -> SaferEventListener t e -> Bool -> JSM ()
+removeListener target (EventName eventName) l useCapture = do
+    raw <- EventListener <$> toJSVal l
+    removeEventListener target eventName (Just raw) useCapture
+
+releaseListener :: (IsEventTarget t, IsEvent e) => SaferEventListener t e -> JSM ()
+releaseListener = eventListenerRelease
+
+on :: (IsEventTarget t, IsEvent e) => t -> EventName t e -> EventM t e () -> JSM (JSM ())
+on target eventName callback = do
+    l <- newListener callback
+    addListener target eventName l False
+    return $ do
+        removeListener target eventName l False
+        releaseListener l
+
+event :: EventM t e e
+event = ask
+
+eventTarget :: IsEvent e => EventM t e (Maybe EventTarget)
+eventTarget = event >>= (lift . Event.getTarget)
+
+target :: (IsEvent e, IsGObject t) => EventM t e (Maybe t)
+target = fmap (unsafeCastGObject . toGObject) <$> eventTarget
+
+eventCurrentTarget :: IsEvent e => EventM t e (Maybe EventTarget)
+eventCurrentTarget = event >>= (lift . Event.getCurrentTarget)
+
+eventPhase :: IsEvent e => EventM t e Word
+eventPhase = event >>= (lift . Event.getEventPhase)
+
+bubbles :: IsEvent e => EventM t e Bool
+bubbles = event >>= (lift . Event.getBubbles)
+
+cancelable :: IsEvent e => EventM t e Bool
+cancelable = event >>= (lift . Event.getCancelable)
+
+timeStamp :: IsEvent e => EventM t e Word
+timeStamp = event >>= (lift . Event.getTimeStamp)
+
+stopPropagation :: IsEvent e => EventM t e ()
+stopPropagation = event >>= (lift . Event.stopPropagation)
+
+preventDefault :: IsEvent e => EventM t e ()
+preventDefault = event >>= (lift . Event.preventDefault)
+
+defaultPrevented :: IsEvent e => EventM t e Bool
+defaultPrevented = event >>= (lift . Event.getDefaultPrevented)
+
+stopImmediatePropagation :: IsEvent e => EventM t e ()
+stopImmediatePropagation = event >>= (lift . Event.stopImmediatePropagation)
+
+srcElement :: IsEvent e => EventM t e (Maybe EventTarget)
+srcElement = event >>= (lift . Event.getSrcElement)
+
+getCancelBubble :: IsEvent e => EventM t e Bool
+getCancelBubble = event >>= (lift . Event.getCancelBubble)
+
+cancelBubble :: IsEvent e => Bool -> EventM t e ()
+cancelBubble f = event >>= (lift . flip Event.setCancelBubble f)
+
+getReturnValue :: IsEvent e => EventM t e Bool
+getReturnValue = event >>= (lift . Event.getReturnValue)
+
+returnValue :: IsEvent e => Bool -> EventM t e ()
+returnValue f = event >>= (lift . flip Event.setReturnValue f)
+
+uiView :: IsUIEvent e => EventM t e (Maybe Window)
+uiView = event >>= (lift . UIEvent.getView)
+
+uiDetail :: IsUIEvent e => EventM t e Int
+uiDetail = event >>= (lift . UIEvent.getDetail)
+
+uiKeyCode :: IsUIEvent e => EventM t e Int
+uiKeyCode = event >>= (lift . UIEvent.getKeyCode)
+
+uiCharCode :: IsUIEvent e => EventM t e Int
+uiCharCode = event >>= (lift . UIEvent.getCharCode)
+
+uiLayerX :: IsUIEvent e => EventM t e Int
+uiLayerX = event >>= (lift . UIEvent.getLayerX)
+
+uiLayerY :: IsUIEvent e => EventM t e Int
+uiLayerY = event >>= (lift . UIEvent.getLayerY)
+
+uiLayerXY :: IsUIEvent e => EventM t e (Int, Int)
+uiLayerXY = do
+    e <- event
+    x <- lift $ UIEvent.getLayerX e
+    y <- lift $ UIEvent.getLayerY e
+    return (x, y)
+
+uiPageX :: IsUIEvent e => EventM t e Int
+uiPageX = event >>= (lift . UIEvent.getPageX)
+
+uiPageY :: IsUIEvent e => EventM t e Int
+uiPageY = event >>= (lift . UIEvent.getPageY)
+
+uiPageXY :: IsUIEvent e => EventM t e (Int, Int)
+uiPageXY = do
+    e <- event
+    x <- lift $ UIEvent.getPageX e
+    y <- lift $ UIEvent.getPageY e
+    return (x, y)
+
+uiWhich :: IsUIEvent e => EventM t e Int
+uiWhich = event >>= (lift . UIEvent.getWhich)
+
+mouseScreenX :: IsMouseEvent e => EventM t e Int
+mouseScreenX = event >>= (lift . MouseEvent.getScreenX)
+
+mouseScreenY :: IsMouseEvent e => EventM t e Int
+mouseScreenY = event >>= (lift . MouseEvent.getScreenY)
+
+mouseScreenXY :: IsMouseEvent e => EventM t e (Int, Int)
+mouseScreenXY = do
+    e <- event
+    x <- lift $ MouseEvent.getScreenX e
+    y <- lift $ MouseEvent.getScreenY e
+    return (x, y)
+
+mouseClientX :: IsMouseEvent e => EventM t e Int
+mouseClientX = event >>= (lift . MouseEvent.getClientX)
+
+mouseClientY :: IsMouseEvent e => EventM t e Int
+mouseClientY = event >>= (lift . MouseEvent.getClientY)
+
+mouseClientXY :: IsMouseEvent e => EventM t e (Int, Int)
+mouseClientXY = do
+    e <- event
+    x <- lift $ MouseEvent.getClientX e
+    y <- lift $ MouseEvent.getClientY e
+    return (x, y)
+
+mouseMovementX :: IsMouseEvent e => EventM t e Int
+mouseMovementX = event >>= (lift . MouseEvent.getMovementX)
+
+mouseMovementY :: IsMouseEvent e => EventM t e Int
+mouseMovementY = event >>= (lift . MouseEvent.getMovementY)
+
+mouseMovementXY :: IsMouseEvent e => EventM t e (Int, Int)
+mouseMovementXY = do
+    e <- event
+    x <- lift $ MouseEvent.getMovementX e
+    y <- lift $ MouseEvent.getMovementY e
+    return (x, y)
+
+mouseCtrlKey :: IsMouseEvent e => EventM t e Bool
+mouseCtrlKey = event >>= (lift . MouseEvent.getCtrlKey)
+
+mouseShiftKey :: IsMouseEvent e => EventM t e Bool
+mouseShiftKey = event >>= (lift . MouseEvent.getShiftKey)
+
+mouseAltKey :: IsMouseEvent e => EventM t e Bool
+mouseAltKey = event >>= (lift . MouseEvent.getAltKey)
+
+mouseMetaKey :: IsMouseEvent e => EventM t e Bool
+mouseMetaKey = event >>= (lift . MouseEvent.getMetaKey)
+
+mouseButton :: IsMouseEvent e => EventM t e Word
+mouseButton = event >>= (lift . MouseEvent.getButton)
+
+mouseRelatedTarget :: IsMouseEvent e => EventM t e (Maybe EventTarget)
+mouseRelatedTarget = event >>= (lift . MouseEvent.getRelatedTarget)
+
+mouseOffsetX :: IsMouseEvent e => EventM t e Int
+mouseOffsetX = event >>= (lift . MouseEvent.getOffsetX)
+
+mouseOffsetY :: IsMouseEvent e => EventM t e Int
+mouseOffsetY = event >>= (lift . MouseEvent.getOffsetY)
+
+mouseOffsetXY :: IsMouseEvent e => EventM t e (Int, Int)
+mouseOffsetXY = do
+    e <- event
+    x <- lift $ MouseEvent.getOffsetX e
+    y <- lift $ MouseEvent.getOffsetY e
+    return (x, y)
+
+mouseX :: IsMouseEvent e => EventM t e Int
+mouseX = event >>= (lift . MouseEvent.getX)
+
+mouseY :: IsMouseEvent e => EventM t e Int
+mouseY = event >>= (lift . MouseEvent.getY)
+
+mouseXY :: IsMouseEvent e => EventM t e (Int, Int)
+mouseXY = do
+    e <- event
+    x <- lift $ MouseEvent.getX e
+    y <- lift $ MouseEvent.getY e
+    return (x, y)
+
+mouseFromElement :: IsMouseEvent e => EventM t e (Maybe Node)
+mouseFromElement = event >>= (lift . MouseEvent.getFromElement)
+
+mouseToElement :: IsMouseEvent e => EventM t e (Maybe Node)
+mouseToElement = event >>= (lift . MouseEvent.getToElement)
+
diff --git a/src/Language/Javascript/JSaddle/DOM/EventSource.hs b/src/Language/Javascript/JSaddle/DOM/EventSource.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/EventSource.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.EventSource (
+  module Language.Javascript.JSaddle.DOM.Generated.EventSource
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.EventSource
diff --git a/src/Language/Javascript/JSaddle/DOM/EventTarget.hs b/src/Language/Javascript/JSaddle/DOM/EventTarget.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/EventTarget.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.EventTarget (
+  module Language.Javascript.JSaddle.DOM.Generated.EventTarget
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.EventTarget
diff --git a/src/Language/Javascript/JSaddle/DOM/EventTargetClosures.hs b/src/Language/Javascript/JSaddle/DOM/EventTargetClosures.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/EventTargetClosures.hs
@@ -0,0 +1,33 @@
+module Language.Javascript.JSaddle.DOM.EventTargetClosures
+       (EventName(..), SaferEventListener(..), unsafeEventName, eventListenerNew, eventListenerNewSync, eventListenerNewAsync, eventListenerRelease) where
+
+import Control.Applicative ((<$>))
+import Language.Javascript.JSaddle.DOM.Types
+import Language.Javascript.JSaddle (JSUndefined, function, JSM, Function(..), freeFunction)
+import Control.Monad.IO.Class (MonadIO(..))
+
+newtype EventName t e = EventName DOMString
+newtype SaferEventListener t e = SaferEventListener Function
+
+instance ToJSVal (SaferEventListener t e) where
+    toJSVal (SaferEventListener l) = toJSVal l
+    {-# INLINE toJSVal #-}
+
+--instance FromJSVal (SaferEventListener t e) where
+--    fromJSVal l = fmap SaferEventListener <$> fromJSVal l
+--    {-# INLINE fromJSVal #-}
+
+unsafeEventName :: DOMString -> EventName t e
+unsafeEventName = EventName
+
+eventListenerNew :: (IsEvent e) => (e -> JSM ()) -> JSM (SaferEventListener t e)
+eventListenerNew callback = SaferEventListener <$> function "listener" (\_ _ [e] -> fromJSValUnchecked e >>= callback)
+
+eventListenerNewSync :: (IsEvent e) => (e -> JSM ()) -> JSM (SaferEventListener t e)
+eventListenerNewSync callback = SaferEventListener <$> function "listener" (\_ _ [e] -> fromJSValUnchecked e >>= callback)
+
+eventListenerNewAsync :: (IsEvent e) => (e -> JSM ()) -> JSM (SaferEventListener t e)
+eventListenerNewAsync callback = SaferEventListener <$> function "listener" (\_ _ [e] -> fromJSValUnchecked e >>= callback)
+
+eventListenerRelease :: SaferEventListener t e -> JSM ()
+eventListenerRelease (SaferEventListener f) = freeFunction f
diff --git a/src/Language/Javascript/JSaddle/DOM/File.hs b/src/Language/Javascript/JSaddle/DOM/File.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/File.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.File (
+  module Language.Javascript.JSaddle.DOM.Generated.File
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.File
diff --git a/src/Language/Javascript/JSaddle/DOM/FileError.hs b/src/Language/Javascript/JSaddle/DOM/FileError.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/FileError.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.FileError (
+  module Language.Javascript.JSaddle.DOM.Generated.FileError
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.FileError
diff --git a/src/Language/Javascript/JSaddle/DOM/FileList.hs b/src/Language/Javascript/JSaddle/DOM/FileList.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/FileList.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.FileList (
+  module Language.Javascript.JSaddle.DOM.Generated.FileList
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.FileList
diff --git a/src/Language/Javascript/JSaddle/DOM/FileReader.hs b/src/Language/Javascript/JSaddle/DOM/FileReader.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/FileReader.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.FileReader (
+  module Language.Javascript.JSaddle.DOM.Generated.FileReader
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.FileReader
diff --git a/src/Language/Javascript/JSaddle/DOM/FileReaderSync.hs b/src/Language/Javascript/JSaddle/DOM/FileReaderSync.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/FileReaderSync.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.FileReaderSync (
+  module Language.Javascript.JSaddle.DOM.Generated.FileReaderSync
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.FileReaderSync
diff --git a/src/Language/Javascript/JSaddle/DOM/FocusEvent.hs b/src/Language/Javascript/JSaddle/DOM/FocusEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/FocusEvent.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.FocusEvent (
+  module Language.Javascript.JSaddle.DOM.Generated.FocusEvent
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.FocusEvent
diff --git a/src/Language/Javascript/JSaddle/DOM/FontLoader.hs b/src/Language/Javascript/JSaddle/DOM/FontLoader.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/FontLoader.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.FontLoader (
+  module Language.Javascript.JSaddle.DOM.Generated.FontLoader
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.FontLoader
diff --git a/src/Language/Javascript/JSaddle/DOM/FormData.hs b/src/Language/Javascript/JSaddle/DOM/FormData.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/FormData.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.FormData (
+  module Language.Javascript.JSaddle.DOM.Generated.FormData
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.FormData
diff --git a/src/Language/Javascript/JSaddle/DOM/GainNode.hs b/src/Language/Javascript/JSaddle/DOM/GainNode.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/GainNode.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.GainNode (
+  module Language.Javascript.JSaddle.DOM.Generated.GainNode
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.GainNode
diff --git a/src/Language/Javascript/JSaddle/DOM/Gamepad.hs b/src/Language/Javascript/JSaddle/DOM/Gamepad.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Gamepad.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.Gamepad (
+  module Language.Javascript.JSaddle.DOM.Generated.Gamepad
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.Gamepad
diff --git a/src/Language/Javascript/JSaddle/DOM/GamepadButton.hs b/src/Language/Javascript/JSaddle/DOM/GamepadButton.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/GamepadButton.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.GamepadButton (
+  module Language.Javascript.JSaddle.DOM.Generated.GamepadButton
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.GamepadButton
diff --git a/src/Language/Javascript/JSaddle/DOM/GamepadEvent.hs b/src/Language/Javascript/JSaddle/DOM/GamepadEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/GamepadEvent.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.GamepadEvent (
+  module Language.Javascript.JSaddle.DOM.Generated.GamepadEvent
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.GamepadEvent
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/ANGLEInstancedArrays.hs b/src/Language/Javascript/JSaddle/DOM/Generated/ANGLEInstancedArrays.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/ANGLEInstancedArrays.hs
@@ -0,0 +1,49 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.ANGLEInstancedArrays
+       (drawArraysInstancedANGLE, drawElementsInstancedANGLE,
+        vertexAttribDivisorANGLE,
+        pattern VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE, ANGLEInstancedArrays,
+        castToANGLEInstancedArrays, gTypeANGLEInstancedArrays)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ANGLEInstancedArrays.drawArraysInstancedANGLE Mozilla ANGLEInstancedArrays.drawArraysInstancedANGLE documentation> 
+drawArraysInstancedANGLE ::
+                         (MonadDOM m) =>
+                           ANGLEInstancedArrays -> Word -> Int -> Int -> Int -> m ()
+drawArraysInstancedANGLE self mode first count primcount
+  = liftDOM
+      (void
+         (self ^. jsf "drawArraysInstancedANGLE"
+            [toJSVal mode, toJSVal first, toJSVal count, toJSVal primcount]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ANGLEInstancedArrays.drawElementsInstancedANGLE Mozilla ANGLEInstancedArrays.drawElementsInstancedANGLE documentation> 
+drawElementsInstancedANGLE ::
+                           (MonadDOM m) =>
+                             ANGLEInstancedArrays -> Word -> Int -> Word -> Int64 -> Int -> m ()
+drawElementsInstancedANGLE self mode count type' offset primcount
+  = liftDOM
+      (void
+         (self ^. jsf "drawElementsInstancedANGLE"
+            [toJSVal mode, toJSVal count, toJSVal type', toJSVal offset,
+             toJSVal primcount]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ANGLEInstancedArrays.vertexAttribDivisorANGLE Mozilla ANGLEInstancedArrays.vertexAttribDivisorANGLE documentation> 
+vertexAttribDivisorANGLE ::
+                         (MonadDOM m) => ANGLEInstancedArrays -> Word -> Word -> m ()
+vertexAttribDivisorANGLE self index divisor
+  = liftDOM
+      (void
+         (self ^. jsf "vertexAttribDivisorANGLE"
+            [toJSVal index, toJSVal divisor]))
+pattern VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE = 35070
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/AbstractView.hs b/src/Language/Javascript/JSaddle/DOM/Generated/AbstractView.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/AbstractView.hs
@@ -0,0 +1,26 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.AbstractView
+       (getDocument, getStyleMedia, AbstractView, castToAbstractView,
+        gTypeAbstractView)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AbstractView.document Mozilla AbstractView.document documentation> 
+getDocument :: (MonadDOM m) => AbstractView -> m (Maybe Document)
+getDocument self = liftDOM ((self ^. js "document") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AbstractView.styleMedia Mozilla AbstractView.styleMedia documentation> 
+getStyleMedia ::
+              (MonadDOM m) => AbstractView -> m (Maybe StyleMedia)
+getStyleMedia self
+  = liftDOM ((self ^. js "styleMedia") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/AbstractWorker.hs b/src/Language/Javascript/JSaddle/DOM/Generated/AbstractWorker.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/AbstractWorker.hs
@@ -0,0 +1,19 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.AbstractWorker
+       (error, AbstractWorker, castToAbstractWorker, gTypeAbstractWorker)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AbstractWorker.onerror Mozilla AbstractWorker.onerror documentation> 
+error :: EventName AbstractWorker UIEvent
+error = unsafeEventName (toJSString "error")
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/AllAudioCapabilities.hs b/src/Language/Javascript/JSaddle/DOM/Generated/AllAudioCapabilities.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/AllAudioCapabilities.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.AllAudioCapabilities
+       (getSourceId, getVolume, AllAudioCapabilities,
+        castToAllAudioCapabilities, gTypeAllAudioCapabilities)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AllAudioCapabilities.sourceId Mozilla AllAudioCapabilities.sourceId documentation> 
+getSourceId ::
+            (MonadDOM m, FromJSString result) =>
+              AllAudioCapabilities -> m [result]
+getSourceId self
+  = liftDOM ((self ^. js "sourceId") >>= fromJSArrayUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AllAudioCapabilities.volume Mozilla AllAudioCapabilities.volume documentation> 
+getVolume ::
+          (MonadDOM m) => AllAudioCapabilities -> m (Maybe CapabilityRange)
+getVolume self = liftDOM ((self ^. js "volume") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/AllVideoCapabilities.hs b/src/Language/Javascript/JSaddle/DOM/Generated/AllVideoCapabilities.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/AllVideoCapabilities.hs
@@ -0,0 +1,60 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.AllVideoCapabilities
+       (getSourceType, getSourceId, getWidth, getHeight, getFrameRate,
+        getAspectRatio, getFacingMode, AllVideoCapabilities,
+        castToAllVideoCapabilities, gTypeAllVideoCapabilities)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AllVideoCapabilities.sourceType Mozilla AllVideoCapabilities.sourceType documentation> 
+getSourceType ::
+              (MonadDOM m, FromJSString result) =>
+                AllVideoCapabilities -> m [result]
+getSourceType self
+  = liftDOM ((self ^. js "sourceType") >>= fromJSArrayUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AllVideoCapabilities.sourceId Mozilla AllVideoCapabilities.sourceId documentation> 
+getSourceId ::
+            (MonadDOM m, FromJSString result) =>
+              AllVideoCapabilities -> m [result]
+getSourceId self
+  = liftDOM ((self ^. js "sourceId") >>= fromJSArrayUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AllVideoCapabilities.width Mozilla AllVideoCapabilities.width documentation> 
+getWidth ::
+         (MonadDOM m) => AllVideoCapabilities -> m (Maybe CapabilityRange)
+getWidth self = liftDOM ((self ^. js "width") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AllVideoCapabilities.height Mozilla AllVideoCapabilities.height documentation> 
+getHeight ::
+          (MonadDOM m) => AllVideoCapabilities -> m (Maybe CapabilityRange)
+getHeight self = liftDOM ((self ^. js "height") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AllVideoCapabilities.frameRate Mozilla AllVideoCapabilities.frameRate documentation> 
+getFrameRate ::
+             (MonadDOM m) => AllVideoCapabilities -> m (Maybe CapabilityRange)
+getFrameRate self
+  = liftDOM ((self ^. js "frameRate") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AllVideoCapabilities.aspectRatio Mozilla AllVideoCapabilities.aspectRatio documentation> 
+getAspectRatio ::
+               (MonadDOM m) => AllVideoCapabilities -> m (Maybe CapabilityRange)
+getAspectRatio self
+  = liftDOM ((self ^. js "aspectRatio") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AllVideoCapabilities.facingMode Mozilla AllVideoCapabilities.facingMode documentation> 
+getFacingMode ::
+              (MonadDOM m, FromJSString result) =>
+                AllVideoCapabilities -> m [result]
+getFacingMode self
+  = liftDOM ((self ^. js "facingMode") >>= fromJSArrayUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/AnalyserNode.hs b/src/Language/Javascript/JSaddle/DOM/Generated/AnalyserNode.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/AnalyserNode.hs
@@ -0,0 +1,91 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.AnalyserNode
+       (getFloatFrequencyData, getByteFrequencyData,
+        getByteTimeDomainData, setFftSize, getFftSize,
+        getFrequencyBinCount, setMinDecibels, getMinDecibels,
+        setMaxDecibels, getMaxDecibels, setSmoothingTimeConstant,
+        getSmoothingTimeConstant, AnalyserNode, castToAnalyserNode,
+        gTypeAnalyserNode)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode.getFloatFrequencyData Mozilla AnalyserNode.getFloatFrequencyData documentation> 
+getFloatFrequencyData ::
+                      (MonadDOM m, IsFloat32Array array) =>
+                        AnalyserNode -> Maybe array -> m ()
+getFloatFrequencyData self array
+  = liftDOM
+      (void (self ^. jsf "getFloatFrequencyData" [toJSVal array]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode.getByteFrequencyData Mozilla AnalyserNode.getByteFrequencyData documentation> 
+getByteFrequencyData ::
+                     (MonadDOM m, IsUint8Array array) =>
+                       AnalyserNode -> Maybe array -> m ()
+getByteFrequencyData self array
+  = liftDOM
+      (void (self ^. jsf "getByteFrequencyData" [toJSVal array]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode.getByteTimeDomainData Mozilla AnalyserNode.getByteTimeDomainData documentation> 
+getByteTimeDomainData ::
+                      (MonadDOM m, IsUint8Array array) =>
+                        AnalyserNode -> Maybe array -> m ()
+getByteTimeDomainData self array
+  = liftDOM
+      (void (self ^. jsf "getByteTimeDomainData" [toJSVal array]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode.fftSize Mozilla AnalyserNode.fftSize documentation> 
+setFftSize :: (MonadDOM m) => AnalyserNode -> Word -> m ()
+setFftSize self val = liftDOM (self ^. jss "fftSize" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode.fftSize Mozilla AnalyserNode.fftSize documentation> 
+getFftSize :: (MonadDOM m) => AnalyserNode -> m Word
+getFftSize self
+  = liftDOM (round <$> ((self ^. js "fftSize") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode.frequencyBinCount Mozilla AnalyserNode.frequencyBinCount documentation> 
+getFrequencyBinCount :: (MonadDOM m) => AnalyserNode -> m Word
+getFrequencyBinCount self
+  = liftDOM
+      (round <$> ((self ^. js "frequencyBinCount") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode.minDecibels Mozilla AnalyserNode.minDecibels documentation> 
+setMinDecibels :: (MonadDOM m) => AnalyserNode -> Double -> m ()
+setMinDecibels self val
+  = liftDOM (self ^. jss "minDecibels" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode.minDecibels Mozilla AnalyserNode.minDecibels documentation> 
+getMinDecibels :: (MonadDOM m) => AnalyserNode -> m Double
+getMinDecibels self
+  = liftDOM ((self ^. js "minDecibels") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode.maxDecibels Mozilla AnalyserNode.maxDecibels documentation> 
+setMaxDecibels :: (MonadDOM m) => AnalyserNode -> Double -> m ()
+setMaxDecibels self val
+  = liftDOM (self ^. jss "maxDecibels" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode.maxDecibels Mozilla AnalyserNode.maxDecibels documentation> 
+getMaxDecibels :: (MonadDOM m) => AnalyserNode -> m Double
+getMaxDecibels self
+  = liftDOM ((self ^. js "maxDecibels") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode.smoothingTimeConstant Mozilla AnalyserNode.smoothingTimeConstant documentation> 
+setSmoothingTimeConstant ::
+                         (MonadDOM m) => AnalyserNode -> Double -> m ()
+setSmoothingTimeConstant self val
+  = liftDOM (self ^. jss "smoothingTimeConstant" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode.smoothingTimeConstant Mozilla AnalyserNode.smoothingTimeConstant documentation> 
+getSmoothingTimeConstant ::
+                         (MonadDOM m) => AnalyserNode -> m Double
+getSmoothingTimeConstant self
+  = liftDOM ((self ^. js "smoothingTimeConstant") >>= valToNumber)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/AnimationEvent.hs b/src/Language/Javascript/JSaddle/DOM/Generated/AnimationEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/AnimationEvent.hs
@@ -0,0 +1,27 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.AnimationEvent
+       (getAnimationName, getElapsedTime, AnimationEvent,
+        castToAnimationEvent, gTypeAnimationEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AnimationEvent.animationName Mozilla AnimationEvent.animationName documentation> 
+getAnimationName ::
+                 (MonadDOM m, FromJSString result) => AnimationEvent -> m result
+getAnimationName self
+  = liftDOM ((self ^. js "animationName") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AnimationEvent.elapsedTime Mozilla AnimationEvent.elapsedTime documentation> 
+getElapsedTime :: (MonadDOM m) => AnimationEvent -> m Double
+getElapsedTime self
+  = liftDOM ((self ^. js "elapsedTime") >>= valToNumber)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/ApplicationCache.hs b/src/Language/Javascript/JSaddle/DOM/Generated/ApplicationCache.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/ApplicationCache.hs
@@ -0,0 +1,74 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.ApplicationCache
+       (update, swapCache, abort, pattern UNCACHED, pattern IDLE,
+        pattern CHECKING, pattern DOWNLOADING, pattern UPDATEREADY,
+        pattern OBSOLETE, getStatus, checking, error, noUpdate,
+        downloading, progress, updateReady, cached, obsolete,
+        ApplicationCache, castToApplicationCache, gTypeApplicationCache)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplicationCache.update Mozilla ApplicationCache.update documentation> 
+update :: (MonadDOM m) => ApplicationCache -> m ()
+update self = liftDOM (void (self ^. js "update"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplicationCache.swapCache Mozilla ApplicationCache.swapCache documentation> 
+swapCache :: (MonadDOM m) => ApplicationCache -> m ()
+swapCache self = liftDOM (void (self ^. js "swapCache"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplicationCache.abort Mozilla ApplicationCache.abort documentation> 
+abort :: (MonadDOM m) => ApplicationCache -> m ()
+abort self = liftDOM (void (self ^. js "abort"))
+pattern UNCACHED = 0
+pattern IDLE = 1
+pattern CHECKING = 2
+pattern DOWNLOADING = 3
+pattern UPDATEREADY = 4
+pattern OBSOLETE = 5
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplicationCache.status Mozilla ApplicationCache.status documentation> 
+getStatus :: (MonadDOM m) => ApplicationCache -> m Word
+getStatus self
+  = liftDOM (round <$> ((self ^. js "status") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplicationCache.onchecking Mozilla ApplicationCache.onchecking documentation> 
+checking :: EventName ApplicationCache Event
+checking = unsafeEventName (toJSString "checking")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplicationCache.onerror Mozilla ApplicationCache.onerror documentation> 
+error :: EventName ApplicationCache UIEvent
+error = unsafeEventName (toJSString "error")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplicationCache.onnoupdate Mozilla ApplicationCache.onnoupdate documentation> 
+noUpdate :: EventName ApplicationCache Event
+noUpdate = unsafeEventName (toJSString "noupdate")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplicationCache.ondownloading Mozilla ApplicationCache.ondownloading documentation> 
+downloading :: EventName ApplicationCache Event
+downloading = unsafeEventName (toJSString "downloading")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplicationCache.onprogress Mozilla ApplicationCache.onprogress documentation> 
+progress :: EventName ApplicationCache ProgressEvent
+progress = unsafeEventName (toJSString "progress")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplicationCache.onupdateready Mozilla ApplicationCache.onupdateready documentation> 
+updateReady :: EventName ApplicationCache Event
+updateReady = unsafeEventName (toJSString "updateready")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplicationCache.oncached Mozilla ApplicationCache.oncached documentation> 
+cached :: EventName ApplicationCache Event
+cached = unsafeEventName (toJSString "cached")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplicationCache.onobsolete Mozilla ApplicationCache.onobsolete documentation> 
+obsolete :: EventName ApplicationCache Event
+obsolete = unsafeEventName (toJSString "obsolete")
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/Attr.hs b/src/Language/Javascript/JSaddle/DOM/Generated/Attr.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/Attr.hs
@@ -0,0 +1,46 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.Attr
+       (getName, getSpecified, setValue, getValue, getOwnerElement,
+        getIsId, Attr, castToAttr, gTypeAttr)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Attr.name Mozilla Attr.name documentation> 
+getName ::
+        (MonadDOM m, FromJSString result) => Attr -> m (Maybe result)
+getName self = liftDOM ((self ^. js "name") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Attr.specified Mozilla Attr.specified documentation> 
+getSpecified :: (MonadDOM m) => Attr -> m Bool
+getSpecified self
+  = liftDOM ((self ^. js "specified") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Attr.value Mozilla Attr.value documentation> 
+setValue ::
+         (MonadDOM m, ToJSString val) => Attr -> Maybe val -> m ()
+setValue self val = liftDOM (self ^. jss "value" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Attr.value Mozilla Attr.value documentation> 
+getValue ::
+         (MonadDOM m, FromJSString result) => Attr -> m (Maybe result)
+getValue self
+  = liftDOM ((self ^. js "value") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Attr.ownerElement Mozilla Attr.ownerElement documentation> 
+getOwnerElement :: (MonadDOM m) => Attr -> m (Maybe Element)
+getOwnerElement self
+  = liftDOM ((self ^. js "ownerElement") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Attr.isId Mozilla Attr.isId documentation> 
+getIsId :: (MonadDOM m) => Attr -> m Bool
+getIsId self = liftDOM ((self ^. js "isId") >>= valToBool)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/AudioBuffer.hs b/src/Language/Javascript/JSaddle/DOM/Generated/AudioBuffer.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/AudioBuffer.hs
@@ -0,0 +1,57 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.AudioBuffer
+       (getChannelData, getLength, getDuration, getSampleRate, setGain,
+        getGain, getNumberOfChannels, AudioBuffer, castToAudioBuffer,
+        gTypeAudioBuffer)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBuffer.getChannelData Mozilla AudioBuffer.getChannelData documentation> 
+getChannelData ::
+               (MonadDOM m) => AudioBuffer -> Word -> m (Maybe Float32Array)
+getChannelData self channelIndex
+  = liftDOM
+      ((self ^. jsf "getChannelData" [toJSVal channelIndex]) >>=
+         fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBuffer.length Mozilla AudioBuffer.length documentation> 
+getLength :: (MonadDOM m) => AudioBuffer -> m Int
+getLength self
+  = liftDOM (round <$> ((self ^. js "length") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBuffer.duration Mozilla AudioBuffer.duration documentation> 
+getDuration :: (MonadDOM m) => AudioBuffer -> m Float
+getDuration self
+  = liftDOM
+      (realToFrac <$> ((self ^. js "duration") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBuffer.sampleRate Mozilla AudioBuffer.sampleRate documentation> 
+getSampleRate :: (MonadDOM m) => AudioBuffer -> m Float
+getSampleRate self
+  = liftDOM
+      (realToFrac <$> ((self ^. js "sampleRate") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBuffer.gain Mozilla AudioBuffer.gain documentation> 
+setGain :: (MonadDOM m) => AudioBuffer -> Float -> m ()
+setGain self val = liftDOM (self ^. jss "gain" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBuffer.gain Mozilla AudioBuffer.gain documentation> 
+getGain :: (MonadDOM m) => AudioBuffer -> m Float
+getGain self
+  = liftDOM (realToFrac <$> ((self ^. js "gain") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBuffer.numberOfChannels Mozilla AudioBuffer.numberOfChannels documentation> 
+getNumberOfChannels :: (MonadDOM m) => AudioBuffer -> m Word
+getNumberOfChannels self
+  = liftDOM
+      (round <$> ((self ^. js "numberOfChannels") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/AudioBufferCallback.hs b/src/Language/Javascript/JSaddle/DOM/Generated/AudioBufferCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/AudioBufferCallback.hs
@@ -0,0 +1,49 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.AudioBufferCallback
+       (newAudioBufferCallback, newAudioBufferCallbackSync,
+        newAudioBufferCallbackAsync, AudioBufferCallback)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferCallback Mozilla AudioBufferCallback documentation> 
+newAudioBufferCallback ::
+                       (MonadDOM m) =>
+                         (Maybe AudioBuffer -> JSM ()) -> m AudioBufferCallback
+newAudioBufferCallback callback
+  = liftDOM
+      (AudioBufferCallback . Callback <$>
+         function ""
+           (\ _ _ [audioBuffer] ->
+              fromJSVal audioBuffer >>= \ audioBuffer' -> callback audioBuffer'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferCallback Mozilla AudioBufferCallback documentation> 
+newAudioBufferCallbackSync ::
+                           (MonadDOM m) =>
+                             (Maybe AudioBuffer -> JSM ()) -> m AudioBufferCallback
+newAudioBufferCallbackSync callback
+  = liftDOM
+      (AudioBufferCallback . Callback <$>
+         function ""
+           (\ _ _ [audioBuffer] ->
+              fromJSVal audioBuffer >>= \ audioBuffer' -> callback audioBuffer'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferCallback Mozilla AudioBufferCallback documentation> 
+newAudioBufferCallbackAsync ::
+                            (MonadDOM m) =>
+                              (Maybe AudioBuffer -> JSM ()) -> m AudioBufferCallback
+newAudioBufferCallbackAsync callback
+  = liftDOM
+      (AudioBufferCallback . Callback <$>
+         function ""
+           (\ _ _ [audioBuffer] ->
+              fromJSVal audioBuffer >>= \ audioBuffer' -> callback audioBuffer'))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/AudioBufferSourceNode.hs b/src/Language/Javascript/JSaddle/DOM/Generated/AudioBufferSourceNode.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/AudioBufferSourceNode.hs
@@ -0,0 +1,126 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.AudioBufferSourceNode
+       (start, stop, noteOn, noteGrainOn, noteOff,
+        pattern UNSCHEDULED_STATE, pattern SCHEDULED_STATE,
+        pattern PLAYING_STATE, pattern FINISHED_STATE, setBuffer,
+        getBuffer, getPlaybackState, getGain, getPlaybackRate, setLoop,
+        getLoop, setLoopStart, getLoopStart, setLoopEnd, getLoopEnd,
+        setLooping, getLooping, ended, AudioBufferSourceNode,
+        castToAudioBufferSourceNode, gTypeAudioBufferSourceNode)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.start Mozilla AudioBufferSourceNode.start documentation> 
+start ::
+      (MonadDOM m) =>
+        AudioBufferSourceNode -> Double -> Double -> Double -> m ()
+start self when grainOffset grainDuration
+  = liftDOM
+      (void
+         (self ^. jsf "start"
+            [toJSVal when, toJSVal grainOffset, toJSVal grainDuration]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.stop Mozilla AudioBufferSourceNode.stop documentation> 
+stop :: (MonadDOM m) => AudioBufferSourceNode -> Double -> m ()
+stop self when = liftDOM (void (self ^. jsf "stop" [toJSVal when]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.noteOn Mozilla AudioBufferSourceNode.noteOn documentation> 
+noteOn :: (MonadDOM m) => AudioBufferSourceNode -> Double -> m ()
+noteOn self when
+  = liftDOM (void (self ^. jsf "noteOn" [toJSVal when]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.noteGrainOn Mozilla AudioBufferSourceNode.noteGrainOn documentation> 
+noteGrainOn ::
+            (MonadDOM m) =>
+              AudioBufferSourceNode -> Double -> Double -> Double -> m ()
+noteGrainOn self when grainOffset grainDuration
+  = liftDOM
+      (void
+         (self ^. jsf "noteGrainOn"
+            [toJSVal when, toJSVal grainOffset, toJSVal grainDuration]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.noteOff Mozilla AudioBufferSourceNode.noteOff documentation> 
+noteOff :: (MonadDOM m) => AudioBufferSourceNode -> Double -> m ()
+noteOff self when
+  = liftDOM (void (self ^. jsf "noteOff" [toJSVal when]))
+pattern UNSCHEDULED_STATE = 0
+pattern SCHEDULED_STATE = 1
+pattern PLAYING_STATE = 2
+pattern FINISHED_STATE = 3
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.buffer Mozilla AudioBufferSourceNode.buffer documentation> 
+setBuffer ::
+          (MonadDOM m) => AudioBufferSourceNode -> Maybe AudioBuffer -> m ()
+setBuffer self val = liftDOM (self ^. jss "buffer" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.buffer Mozilla AudioBufferSourceNode.buffer documentation> 
+getBuffer ::
+          (MonadDOM m) => AudioBufferSourceNode -> m (Maybe AudioBuffer)
+getBuffer self = liftDOM ((self ^. js "buffer") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.playbackState Mozilla AudioBufferSourceNode.playbackState documentation> 
+getPlaybackState :: (MonadDOM m) => AudioBufferSourceNode -> m Word
+getPlaybackState self
+  = liftDOM
+      (round <$> ((self ^. js "playbackState") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.gain Mozilla AudioBufferSourceNode.gain documentation> 
+getGain ::
+        (MonadDOM m) => AudioBufferSourceNode -> m (Maybe AudioParam)
+getGain self = liftDOM ((self ^. js "gain") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.playbackRate Mozilla AudioBufferSourceNode.playbackRate documentation> 
+getPlaybackRate ::
+                (MonadDOM m) => AudioBufferSourceNode -> m (Maybe AudioParam)
+getPlaybackRate self
+  = liftDOM ((self ^. js "playbackRate") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.loop Mozilla AudioBufferSourceNode.loop documentation> 
+setLoop :: (MonadDOM m) => AudioBufferSourceNode -> Bool -> m ()
+setLoop self val = liftDOM (self ^. jss "loop" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.loop Mozilla AudioBufferSourceNode.loop documentation> 
+getLoop :: (MonadDOM m) => AudioBufferSourceNode -> m Bool
+getLoop self = liftDOM ((self ^. js "loop") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.loopStart Mozilla AudioBufferSourceNode.loopStart documentation> 
+setLoopStart ::
+             (MonadDOM m) => AudioBufferSourceNode -> Double -> m ()
+setLoopStart self val
+  = liftDOM (self ^. jss "loopStart" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.loopStart Mozilla AudioBufferSourceNode.loopStart documentation> 
+getLoopStart :: (MonadDOM m) => AudioBufferSourceNode -> m Double
+getLoopStart self
+  = liftDOM ((self ^. js "loopStart") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.loopEnd Mozilla AudioBufferSourceNode.loopEnd documentation> 
+setLoopEnd ::
+           (MonadDOM m) => AudioBufferSourceNode -> Double -> m ()
+setLoopEnd self val = liftDOM (self ^. jss "loopEnd" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.loopEnd Mozilla AudioBufferSourceNode.loopEnd documentation> 
+getLoopEnd :: (MonadDOM m) => AudioBufferSourceNode -> m Double
+getLoopEnd self = liftDOM ((self ^. js "loopEnd") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.looping Mozilla AudioBufferSourceNode.looping documentation> 
+setLooping :: (MonadDOM m) => AudioBufferSourceNode -> Bool -> m ()
+setLooping self val = liftDOM (self ^. jss "looping" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.looping Mozilla AudioBufferSourceNode.looping documentation> 
+getLooping :: (MonadDOM m) => AudioBufferSourceNode -> m Bool
+getLooping self = liftDOM ((self ^. js "looping") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.onended Mozilla AudioBufferSourceNode.onended documentation> 
+ended :: EventName AudioBufferSourceNode Event
+ended = unsafeEventName (toJSString "ended")
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/AudioContext.hs b/src/Language/Javascript/JSaddle/DOM/Generated/AudioContext.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/AudioContext.hs
@@ -0,0 +1,296 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.AudioContext
+       (newAudioContext, createBuffer, createBufferFromArrayBuffer,
+        decodeAudioData, createBufferSource, createMediaElementSource,
+        createMediaStreamSource, createMediaStreamDestination, createGain,
+        createDelay, createBiquadFilter, createWaveShaper, createPanner,
+        createConvolver, createDynamicsCompressor, createAnalyser,
+        createScriptProcessor, createOscillator, createPeriodicWave,
+        createChannelSplitter, createChannelMerger, startRendering,
+        createGainNode, createDelayNode, createJavaScriptNode,
+        getDestination, getCurrentTime, getSampleRate, getListener,
+        getActiveSourceCount, complete, AudioContext, castToAudioContext,
+        gTypeAudioContext, IsAudioContext, toAudioContext)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext Mozilla AudioContext documentation> 
+newAudioContext :: (MonadDOM m) => m AudioContext
+newAudioContext
+  = liftDOM (AudioContext <$> new (jsg "AudioContext") ())
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createBuffer Mozilla AudioContext.createBuffer documentation> 
+createBuffer ::
+             (MonadDOM m, IsAudioContext self) =>
+               self -> Word -> Word -> Float -> m (Maybe AudioBuffer)
+createBuffer self numberOfChannels numberOfFrames sampleRate
+  = liftDOM
+      (((toAudioContext self) ^. jsf "createBuffer"
+          [toJSVal numberOfChannels, toJSVal numberOfFrames,
+           toJSVal sampleRate])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createBuffer Mozilla AudioContext.createBuffer documentation> 
+createBufferFromArrayBuffer ::
+                            (MonadDOM m, IsAudioContext self, IsArrayBuffer buffer) =>
+                              self -> Maybe buffer -> Bool -> m (Maybe AudioBuffer)
+createBufferFromArrayBuffer self buffer mixToMono
+  = liftDOM
+      (((toAudioContext self) ^. jsf "createBuffer"
+          [toJSVal buffer, toJSVal mixToMono])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.decodeAudioData Mozilla AudioContext.decodeAudioData documentation> 
+decodeAudioData ::
+                (MonadDOM m, IsAudioContext self, IsArrayBuffer audioData) =>
+                  self ->
+                    Maybe audioData ->
+                      Maybe AudioBufferCallback -> Maybe AudioBufferCallback -> m ()
+decodeAudioData self audioData successCallback errorCallback
+  = liftDOM
+      (void
+         ((toAudioContext self) ^. jsf "decodeAudioData"
+            [toJSVal audioData, toJSVal successCallback,
+             toJSVal errorCallback]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createBufferSource Mozilla AudioContext.createBufferSource documentation> 
+createBufferSource ::
+                   (MonadDOM m, IsAudioContext self) =>
+                     self -> m (Maybe AudioBufferSourceNode)
+createBufferSource self
+  = liftDOM
+      (((toAudioContext self) ^. js "createBufferSource") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createMediaElementSource Mozilla AudioContext.createMediaElementSource documentation> 
+createMediaElementSource ::
+                         (MonadDOM m, IsAudioContext self,
+                          IsHTMLMediaElement mediaElement) =>
+                           self -> Maybe mediaElement -> m (Maybe MediaElementAudioSourceNode)
+createMediaElementSource self mediaElement
+  = liftDOM
+      (((toAudioContext self) ^. jsf "createMediaElementSource"
+          [toJSVal mediaElement])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createMediaStreamSource Mozilla AudioContext.createMediaStreamSource documentation> 
+createMediaStreamSource ::
+                        (MonadDOM m, IsAudioContext self) =>
+                          self -> Maybe MediaStream -> m (Maybe MediaStreamAudioSourceNode)
+createMediaStreamSource self mediaStream
+  = liftDOM
+      (((toAudioContext self) ^. jsf "createMediaStreamSource"
+          [toJSVal mediaStream])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createMediaStreamDestination Mozilla AudioContext.createMediaStreamDestination documentation> 
+createMediaStreamDestination ::
+                             (MonadDOM m, IsAudioContext self) =>
+                               self -> m (Maybe MediaStreamAudioDestinationNode)
+createMediaStreamDestination self
+  = liftDOM
+      (((toAudioContext self) ^. js "createMediaStreamDestination") >>=
+         fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createGain Mozilla AudioContext.createGain documentation> 
+createGain ::
+           (MonadDOM m, IsAudioContext self) => self -> m (Maybe GainNode)
+createGain self
+  = liftDOM
+      (((toAudioContext self) ^. js "createGain") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createDelay Mozilla AudioContext.createDelay documentation> 
+createDelay ::
+            (MonadDOM m, IsAudioContext self) =>
+              self -> Double -> m (Maybe DelayNode)
+createDelay self maxDelayTime
+  = liftDOM
+      (((toAudioContext self) ^. jsf "createDelay"
+          [toJSVal maxDelayTime])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createBiquadFilter Mozilla AudioContext.createBiquadFilter documentation> 
+createBiquadFilter ::
+                   (MonadDOM m, IsAudioContext self) =>
+                     self -> m (Maybe BiquadFilterNode)
+createBiquadFilter self
+  = liftDOM
+      (((toAudioContext self) ^. js "createBiquadFilter") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createWaveShaper Mozilla AudioContext.createWaveShaper documentation> 
+createWaveShaper ::
+                 (MonadDOM m, IsAudioContext self) =>
+                   self -> m (Maybe WaveShaperNode)
+createWaveShaper self
+  = liftDOM
+      (((toAudioContext self) ^. js "createWaveShaper") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createPanner Mozilla AudioContext.createPanner documentation> 
+createPanner ::
+             (MonadDOM m, IsAudioContext self) => self -> m (Maybe PannerNode)
+createPanner self
+  = liftDOM
+      (((toAudioContext self) ^. js "createPanner") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createConvolver Mozilla AudioContext.createConvolver documentation> 
+createConvolver ::
+                (MonadDOM m, IsAudioContext self) =>
+                  self -> m (Maybe ConvolverNode)
+createConvolver self
+  = liftDOM
+      (((toAudioContext self) ^. js "createConvolver") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createDynamicsCompressor Mozilla AudioContext.createDynamicsCompressor documentation> 
+createDynamicsCompressor ::
+                         (MonadDOM m, IsAudioContext self) =>
+                           self -> m (Maybe DynamicsCompressorNode)
+createDynamicsCompressor self
+  = liftDOM
+      (((toAudioContext self) ^. js "createDynamicsCompressor") >>=
+         fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createAnalyser Mozilla AudioContext.createAnalyser documentation> 
+createAnalyser ::
+               (MonadDOM m, IsAudioContext self) => self -> m (Maybe AnalyserNode)
+createAnalyser self
+  = liftDOM
+      (((toAudioContext self) ^. js "createAnalyser") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createScriptProcessor Mozilla AudioContext.createScriptProcessor documentation> 
+createScriptProcessor ::
+                      (MonadDOM m, IsAudioContext self) =>
+                        self -> Word -> Word -> Word -> m (Maybe ScriptProcessorNode)
+createScriptProcessor self bufferSize numberOfInputChannels
+  numberOfOutputChannels
+  = liftDOM
+      (((toAudioContext self) ^. jsf "createScriptProcessor"
+          [toJSVal bufferSize, toJSVal numberOfInputChannels,
+           toJSVal numberOfOutputChannels])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createOscillator Mozilla AudioContext.createOscillator documentation> 
+createOscillator ::
+                 (MonadDOM m, IsAudioContext self) =>
+                   self -> m (Maybe OscillatorNode)
+createOscillator self
+  = liftDOM
+      (((toAudioContext self) ^. js "createOscillator") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createPeriodicWave Mozilla AudioContext.createPeriodicWave documentation> 
+createPeriodicWave ::
+                   (MonadDOM m, IsAudioContext self, IsFloat32Array real,
+                    IsFloat32Array imag) =>
+                     self -> Maybe real -> Maybe imag -> m (Maybe PeriodicWave)
+createPeriodicWave self real imag
+  = liftDOM
+      (((toAudioContext self) ^. jsf "createPeriodicWave"
+          [toJSVal real, toJSVal imag])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createChannelSplitter Mozilla AudioContext.createChannelSplitter documentation> 
+createChannelSplitter ::
+                      (MonadDOM m, IsAudioContext self) =>
+                        self -> Word -> m (Maybe ChannelSplitterNode)
+createChannelSplitter self numberOfOutputs
+  = liftDOM
+      (((toAudioContext self) ^. jsf "createChannelSplitter"
+          [toJSVal numberOfOutputs])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createChannelMerger Mozilla AudioContext.createChannelMerger documentation> 
+createChannelMerger ::
+                    (MonadDOM m, IsAudioContext self) =>
+                      self -> Word -> m (Maybe ChannelMergerNode)
+createChannelMerger self numberOfInputs
+  = liftDOM
+      (((toAudioContext self) ^. jsf "createChannelMerger"
+          [toJSVal numberOfInputs])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.startRendering Mozilla AudioContext.startRendering documentation> 
+startRendering :: (MonadDOM m, IsAudioContext self) => self -> m ()
+startRendering self
+  = liftDOM (void ((toAudioContext self) ^. js "startRendering"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createGainNode Mozilla AudioContext.createGainNode documentation> 
+createGainNode ::
+               (MonadDOM m, IsAudioContext self) => self -> m (Maybe GainNode)
+createGainNode self
+  = liftDOM
+      (((toAudioContext self) ^. js "createGainNode") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createDelayNode Mozilla AudioContext.createDelayNode documentation> 
+createDelayNode ::
+                (MonadDOM m, IsAudioContext self) =>
+                  self -> Double -> m (Maybe DelayNode)
+createDelayNode self maxDelayTime
+  = liftDOM
+      (((toAudioContext self) ^. jsf "createDelayNode"
+          [toJSVal maxDelayTime])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createJavaScriptNode Mozilla AudioContext.createJavaScriptNode documentation> 
+createJavaScriptNode ::
+                     (MonadDOM m, IsAudioContext self) =>
+                       self -> Word -> Word -> Word -> m (Maybe ScriptProcessorNode)
+createJavaScriptNode self bufferSize numberOfInputChannels
+  numberOfOutputChannels
+  = liftDOM
+      (((toAudioContext self) ^. jsf "createJavaScriptNode"
+          [toJSVal bufferSize, toJSVal numberOfInputChannels,
+           toJSVal numberOfOutputChannels])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.destination Mozilla AudioContext.destination documentation> 
+getDestination ::
+               (MonadDOM m, IsAudioContext self) =>
+                 self -> m (Maybe AudioDestinationNode)
+getDestination self
+  = liftDOM
+      (((toAudioContext self) ^. js "destination") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.currentTime Mozilla AudioContext.currentTime documentation> 
+getCurrentTime ::
+               (MonadDOM m, IsAudioContext self) => self -> m Double
+getCurrentTime self
+  = liftDOM
+      (((toAudioContext self) ^. js "currentTime") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.sampleRate Mozilla AudioContext.sampleRate documentation> 
+getSampleRate ::
+              (MonadDOM m, IsAudioContext self) => self -> m Float
+getSampleRate self
+  = liftDOM
+      (realToFrac <$>
+         (((toAudioContext self) ^. js "sampleRate") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.listener Mozilla AudioContext.listener documentation> 
+getListener ::
+            (MonadDOM m, IsAudioContext self) =>
+              self -> m (Maybe AudioListener)
+getListener self
+  = liftDOM (((toAudioContext self) ^. js "listener") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.activeSourceCount Mozilla AudioContext.activeSourceCount documentation> 
+getActiveSourceCount ::
+                     (MonadDOM m, IsAudioContext self) => self -> m Word
+getActiveSourceCount self
+  = liftDOM
+      (round <$>
+         (((toAudioContext self) ^. js "activeSourceCount") >>=
+            valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.oncomplete Mozilla AudioContext.oncomplete documentation> 
+complete ::
+         (IsAudioContext self, IsEventTarget self) =>
+           EventName self OfflineAudioCompletionEvent
+complete = unsafeEventName (toJSString "complete")
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/AudioDestinationNode.hs b/src/Language/Javascript/JSaddle/DOM/Generated/AudioDestinationNode.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/AudioDestinationNode.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.AudioDestinationNode
+       (getMaxChannelCount, AudioDestinationNode,
+        castToAudioDestinationNode, gTypeAudioDestinationNode)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioDestinationNode.maxChannelCount Mozilla AudioDestinationNode.maxChannelCount documentation> 
+getMaxChannelCount ::
+                   (MonadDOM m) => AudioDestinationNode -> m Word
+getMaxChannelCount self
+  = liftDOM
+      (round <$> ((self ^. js "maxChannelCount") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/AudioListener.hs b/src/Language/Javascript/JSaddle/DOM/Generated/AudioListener.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/AudioListener.hs
@@ -0,0 +1,67 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.AudioListener
+       (setPosition, setOrientation, setVelocity, setDopplerFactor,
+        getDopplerFactor, setSpeedOfSound, getSpeedOfSound, AudioListener,
+        castToAudioListener, gTypeAudioListener)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioListener.setPosition Mozilla AudioListener.setPosition documentation> 
+setPosition ::
+            (MonadDOM m) => AudioListener -> Float -> Float -> Float -> m ()
+setPosition self x y z
+  = liftDOM
+      (void
+         (self ^. jsf "setPosition" [toJSVal x, toJSVal y, toJSVal z]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioListener.setOrientation Mozilla AudioListener.setOrientation documentation> 
+setOrientation ::
+               (MonadDOM m) =>
+                 AudioListener ->
+                   Float -> Float -> Float -> Float -> Float -> Float -> m ()
+setOrientation self x y z xUp yUp zUp
+  = liftDOM
+      (void
+         (self ^. jsf "setOrientation"
+            [toJSVal x, toJSVal y, toJSVal z, toJSVal xUp, toJSVal yUp,
+             toJSVal zUp]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioListener.setVelocity Mozilla AudioListener.setVelocity documentation> 
+setVelocity ::
+            (MonadDOM m) => AudioListener -> Float -> Float -> Float -> m ()
+setVelocity self x y z
+  = liftDOM
+      (void
+         (self ^. jsf "setVelocity" [toJSVal x, toJSVal y, toJSVal z]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioListener.dopplerFactor Mozilla AudioListener.dopplerFactor documentation> 
+setDopplerFactor :: (MonadDOM m) => AudioListener -> Float -> m ()
+setDopplerFactor self val
+  = liftDOM (self ^. jss "dopplerFactor" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioListener.dopplerFactor Mozilla AudioListener.dopplerFactor documentation> 
+getDopplerFactor :: (MonadDOM m) => AudioListener -> m Float
+getDopplerFactor self
+  = liftDOM
+      (realToFrac <$> ((self ^. js "dopplerFactor") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioListener.speedOfSound Mozilla AudioListener.speedOfSound documentation> 
+setSpeedOfSound :: (MonadDOM m) => AudioListener -> Float -> m ()
+setSpeedOfSound self val
+  = liftDOM (self ^. jss "speedOfSound" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioListener.speedOfSound Mozilla AudioListener.speedOfSound documentation> 
+getSpeedOfSound :: (MonadDOM m) => AudioListener -> m Float
+getSpeedOfSound self
+  = liftDOM
+      (realToFrac <$> ((self ^. js "speedOfSound") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/AudioNode.hs b/src/Language/Javascript/JSaddle/DOM/Generated/AudioNode.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/AudioNode.hs
@@ -0,0 +1,115 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.AudioNode
+       (connect, connectParam, disconnect, getContext, getNumberOfInputs,
+        getNumberOfOutputs, setChannelCount, getChannelCount,
+        setChannelCountMode, getChannelCountMode, setChannelInterpretation,
+        getChannelInterpretation, AudioNode, castToAudioNode,
+        gTypeAudioNode, IsAudioNode, toAudioNode)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioNode.connect Mozilla AudioNode.connect documentation> 
+connect ::
+        (MonadDOM m, IsAudioNode self, IsAudioNode destination) =>
+          self -> Maybe destination -> Word -> Word -> m ()
+connect self destination output input
+  = liftDOM
+      (void
+         ((toAudioNode self) ^. jsf "connect"
+            [toJSVal destination, toJSVal output, toJSVal input]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioNode.connect Mozilla AudioNode.connect documentation> 
+connectParam ::
+             (MonadDOM m, IsAudioNode self) =>
+               self -> Maybe AudioParam -> Word -> m ()
+connectParam self destination output
+  = liftDOM
+      (void
+         ((toAudioNode self) ^. jsf "connect"
+            [toJSVal destination, toJSVal output]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioNode.disconnect Mozilla AudioNode.disconnect documentation> 
+disconnect ::
+           (MonadDOM m, IsAudioNode self) => self -> Word -> m ()
+disconnect self output
+  = liftDOM
+      (void ((toAudioNode self) ^. jsf "disconnect" [toJSVal output]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioNode.context Mozilla AudioNode.context documentation> 
+getContext ::
+           (MonadDOM m, IsAudioNode self) => self -> m (Maybe AudioContext)
+getContext self
+  = liftDOM (((toAudioNode self) ^. js "context") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioNode.numberOfInputs Mozilla AudioNode.numberOfInputs documentation> 
+getNumberOfInputs ::
+                  (MonadDOM m, IsAudioNode self) => self -> m Word
+getNumberOfInputs self
+  = liftDOM
+      (round <$>
+         (((toAudioNode self) ^. js "numberOfInputs") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioNode.numberOfOutputs Mozilla AudioNode.numberOfOutputs documentation> 
+getNumberOfOutputs ::
+                   (MonadDOM m, IsAudioNode self) => self -> m Word
+getNumberOfOutputs self
+  = liftDOM
+      (round <$>
+         (((toAudioNode self) ^. js "numberOfOutputs") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioNode.channelCount Mozilla AudioNode.channelCount documentation> 
+setChannelCount ::
+                (MonadDOM m, IsAudioNode self) => self -> Word -> m ()
+setChannelCount self val
+  = liftDOM ((toAudioNode self) ^. jss "channelCount" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioNode.channelCount Mozilla AudioNode.channelCount documentation> 
+getChannelCount :: (MonadDOM m, IsAudioNode self) => self -> m Word
+getChannelCount self
+  = liftDOM
+      (round <$>
+         (((toAudioNode self) ^. js "channelCount") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioNode.channelCountMode Mozilla AudioNode.channelCountMode documentation> 
+setChannelCountMode ::
+                    (MonadDOM m, IsAudioNode self, ToJSString val) =>
+                      self -> val -> m ()
+setChannelCountMode self val
+  = liftDOM
+      ((toAudioNode self) ^. jss "channelCountMode" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioNode.channelCountMode Mozilla AudioNode.channelCountMode documentation> 
+getChannelCountMode ::
+                    (MonadDOM m, IsAudioNode self, FromJSString result) =>
+                      self -> m result
+getChannelCountMode self
+  = liftDOM
+      (((toAudioNode self) ^. js "channelCountMode") >>=
+         fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioNode.channelInterpretation Mozilla AudioNode.channelInterpretation documentation> 
+setChannelInterpretation ::
+                         (MonadDOM m, IsAudioNode self, ToJSString val) =>
+                           self -> val -> m ()
+setChannelInterpretation self val
+  = liftDOM
+      ((toAudioNode self) ^. jss "channelInterpretation" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioNode.channelInterpretation Mozilla AudioNode.channelInterpretation documentation> 
+getChannelInterpretation ::
+                         (MonadDOM m, IsAudioNode self, FromJSString result) =>
+                           self -> m result
+getChannelInterpretation self
+  = liftDOM
+      (((toAudioNode self) ^. js "channelInterpretation") >>=
+         fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/AudioParam.hs b/src/Language/Javascript/JSaddle/DOM/Generated/AudioParam.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/AudioParam.hs
@@ -0,0 +1,116 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.AudioParam
+       (setValueAtTime, linearRampToValueAtTime,
+        exponentialRampToValueAtTime, setTargetAtTime, setValueCurveAtTime,
+        cancelScheduledValues, setTargetValueAtTime, setValue, getValue,
+        getMinValue, getMaxValue, getDefaultValue, getName, getUnits,
+        AudioParam, castToAudioParam, gTypeAudioParam)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioParam.setValueAtTime Mozilla AudioParam.setValueAtTime documentation> 
+setValueAtTime ::
+               (MonadDOM m) => AudioParam -> Float -> Float -> m ()
+setValueAtTime self value time
+  = liftDOM
+      (void (self ^. jsf "setValueAtTime" [toJSVal value, toJSVal time]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioParam.linearRampToValueAtTime Mozilla AudioParam.linearRampToValueAtTime documentation> 
+linearRampToValueAtTime ::
+                        (MonadDOM m) => AudioParam -> Float -> Float -> m ()
+linearRampToValueAtTime self value time
+  = liftDOM
+      (void
+         (self ^. jsf "linearRampToValueAtTime"
+            [toJSVal value, toJSVal time]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioParam.exponentialRampToValueAtTime Mozilla AudioParam.exponentialRampToValueAtTime documentation> 
+exponentialRampToValueAtTime ::
+                             (MonadDOM m) => AudioParam -> Float -> Float -> m ()
+exponentialRampToValueAtTime self value time
+  = liftDOM
+      (void
+         (self ^. jsf "exponentialRampToValueAtTime"
+            [toJSVal value, toJSVal time]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioParam.setTargetAtTime Mozilla AudioParam.setTargetAtTime documentation> 
+setTargetAtTime ::
+                (MonadDOM m) => AudioParam -> Float -> Float -> Float -> m ()
+setTargetAtTime self target time timeConstant
+  = liftDOM
+      (void
+         (self ^. jsf "setTargetAtTime"
+            [toJSVal target, toJSVal time, toJSVal timeConstant]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioParam.setValueCurveAtTime Mozilla AudioParam.setValueCurveAtTime documentation> 
+setValueCurveAtTime ::
+                    (MonadDOM m, IsFloat32Array values) =>
+                      AudioParam -> Maybe values -> Float -> Float -> m ()
+setValueCurveAtTime self values time duration
+  = liftDOM
+      (void
+         (self ^. jsf "setValueCurveAtTime"
+            [toJSVal values, toJSVal time, toJSVal duration]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioParam.cancelScheduledValues Mozilla AudioParam.cancelScheduledValues documentation> 
+cancelScheduledValues ::
+                      (MonadDOM m) => AudioParam -> Float -> m ()
+cancelScheduledValues self startTime
+  = liftDOM
+      (void (self ^. jsf "cancelScheduledValues" [toJSVal startTime]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioParam.setTargetValueAtTime Mozilla AudioParam.setTargetValueAtTime documentation> 
+setTargetValueAtTime ::
+                     (MonadDOM m) => AudioParam -> Float -> Float -> Float -> m ()
+setTargetValueAtTime self targetValue time timeConstant
+  = liftDOM
+      (void
+         (self ^. jsf "setTargetValueAtTime"
+            [toJSVal targetValue, toJSVal time, toJSVal timeConstant]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioParam.value Mozilla AudioParam.value documentation> 
+setValue :: (MonadDOM m) => AudioParam -> Float -> m ()
+setValue self val = liftDOM (self ^. jss "value" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioParam.value Mozilla AudioParam.value documentation> 
+getValue :: (MonadDOM m) => AudioParam -> m Float
+getValue self
+  = liftDOM (realToFrac <$> ((self ^. js "value") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioParam.minValue Mozilla AudioParam.minValue documentation> 
+getMinValue :: (MonadDOM m) => AudioParam -> m Float
+getMinValue self
+  = liftDOM
+      (realToFrac <$> ((self ^. js "minValue") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioParam.maxValue Mozilla AudioParam.maxValue documentation> 
+getMaxValue :: (MonadDOM m) => AudioParam -> m Float
+getMaxValue self
+  = liftDOM
+      (realToFrac <$> ((self ^. js "maxValue") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioParam.defaultValue Mozilla AudioParam.defaultValue documentation> 
+getDefaultValue :: (MonadDOM m) => AudioParam -> m Float
+getDefaultValue self
+  = liftDOM
+      (realToFrac <$> ((self ^. js "defaultValue") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioParam.name Mozilla AudioParam.name documentation> 
+getName ::
+        (MonadDOM m, FromJSString result) => AudioParam -> m result
+getName self = liftDOM ((self ^. js "name") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioParam.units Mozilla AudioParam.units documentation> 
+getUnits :: (MonadDOM m) => AudioParam -> m Word
+getUnits self
+  = liftDOM (round <$> ((self ^. js "units") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/AudioProcessingEvent.hs b/src/Language/Javascript/JSaddle/DOM/Generated/AudioProcessingEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/AudioProcessingEvent.hs
@@ -0,0 +1,34 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.AudioProcessingEvent
+       (getPlaybackTime, getInputBuffer, getOutputBuffer,
+        AudioProcessingEvent, castToAudioProcessingEvent,
+        gTypeAudioProcessingEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioProcessingEvent.playbackTime Mozilla AudioProcessingEvent.playbackTime documentation> 
+getPlaybackTime :: (MonadDOM m) => AudioProcessingEvent -> m Double
+getPlaybackTime self
+  = liftDOM ((self ^. js "playbackTime") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioProcessingEvent.inputBuffer Mozilla AudioProcessingEvent.inputBuffer documentation> 
+getInputBuffer ::
+               (MonadDOM m) => AudioProcessingEvent -> m (Maybe AudioBuffer)
+getInputBuffer self
+  = liftDOM ((self ^. js "inputBuffer") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioProcessingEvent.outputBuffer Mozilla AudioProcessingEvent.outputBuffer documentation> 
+getOutputBuffer ::
+                (MonadDOM m) => AudioProcessingEvent -> m (Maybe AudioBuffer)
+getOutputBuffer self
+  = liftDOM ((self ^. js "outputBuffer") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/AudioStreamTrack.hs b/src/Language/Javascript/JSaddle/DOM/Generated/AudioStreamTrack.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/AudioStreamTrack.hs
@@ -0,0 +1,25 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.AudioStreamTrack
+       (newAudioStreamTrack, AudioStreamTrack, castToAudioStreamTrack,
+        gTypeAudioStreamTrack)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioStreamTrack Mozilla AudioStreamTrack documentation> 
+newAudioStreamTrack ::
+                    (MonadDOM m, IsDictionary audioConstraints) =>
+                      Maybe audioConstraints -> m AudioStreamTrack
+newAudioStreamTrack audioConstraints
+  = liftDOM
+      (AudioStreamTrack <$>
+         new (jsg "AudioStreamTrack") [toJSVal audioConstraints])
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/AudioTrack.hs b/src/Language/Javascript/JSaddle/DOM/Generated/AudioTrack.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/AudioTrack.hs
@@ -0,0 +1,64 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.AudioTrack
+       (getId, setKind, getKind, getLabel, setLanguage, getLanguage,
+        setEnabled, getEnabled, getSourceBuffer, AudioTrack,
+        castToAudioTrack, gTypeAudioTrack)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrack.id Mozilla AudioTrack.id documentation> 
+getId ::
+      (MonadDOM m, FromJSString result) => AudioTrack -> m result
+getId self = liftDOM ((self ^. js "id") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrack.kind Mozilla AudioTrack.kind documentation> 
+setKind ::
+        (MonadDOM m, ToJSString val) => AudioTrack -> val -> m ()
+setKind self val = liftDOM (self ^. jss "kind" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrack.kind Mozilla AudioTrack.kind documentation> 
+getKind ::
+        (MonadDOM m, FromJSString result) => AudioTrack -> m result
+getKind self = liftDOM ((self ^. js "kind") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrack.label Mozilla AudioTrack.label documentation> 
+getLabel ::
+         (MonadDOM m, FromJSString result) => AudioTrack -> m result
+getLabel self
+  = liftDOM ((self ^. js "label") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrack.language Mozilla AudioTrack.language documentation> 
+setLanguage ::
+            (MonadDOM m, ToJSString val) => AudioTrack -> val -> m ()
+setLanguage self val
+  = liftDOM (self ^. jss "language" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrack.language Mozilla AudioTrack.language documentation> 
+getLanguage ::
+            (MonadDOM m, FromJSString result) => AudioTrack -> m result
+getLanguage self
+  = liftDOM ((self ^. js "language") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrack.enabled Mozilla AudioTrack.enabled documentation> 
+setEnabled :: (MonadDOM m) => AudioTrack -> Bool -> m ()
+setEnabled self val = liftDOM (self ^. jss "enabled" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrack.enabled Mozilla AudioTrack.enabled documentation> 
+getEnabled :: (MonadDOM m) => AudioTrack -> m Bool
+getEnabled self = liftDOM ((self ^. js "enabled") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrack.sourceBuffer Mozilla AudioTrack.sourceBuffer documentation> 
+getSourceBuffer ::
+                (MonadDOM m) => AudioTrack -> m (Maybe SourceBuffer)
+getSourceBuffer self
+  = liftDOM ((self ^. js "sourceBuffer") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/AudioTrackList.hs b/src/Language/Javascript/JSaddle/DOM/Generated/AudioTrackList.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/AudioTrackList.hs
@@ -0,0 +1,46 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.AudioTrackList
+       (item, getTrackById, getLength, change, addTrack, removeTrack,
+        AudioTrackList, castToAudioTrackList, gTypeAudioTrackList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrackList.item Mozilla AudioTrackList.item documentation> 
+item ::
+     (MonadDOM m) => AudioTrackList -> Word -> m (Maybe AudioTrack)
+item self index
+  = liftDOM ((self ^. jsf "item" [toJSVal index]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrackList.getTrackById Mozilla AudioTrackList.getTrackById documentation> 
+getTrackById ::
+             (MonadDOM m, ToJSString id) =>
+               AudioTrackList -> id -> m (Maybe AudioTrack)
+getTrackById self id
+  = liftDOM ((self ^. jsf "getTrackById" [toJSVal id]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrackList.length Mozilla AudioTrackList.length documentation> 
+getLength :: (MonadDOM m) => AudioTrackList -> m Word
+getLength self
+  = liftDOM (round <$> ((self ^. js "length") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrackList.onchange Mozilla AudioTrackList.onchange documentation> 
+change :: EventName AudioTrackList Event
+change = unsafeEventName (toJSString "change")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrackList.onaddtrack Mozilla AudioTrackList.onaddtrack documentation> 
+addTrack :: EventName AudioTrackList Event
+addTrack = unsafeEventName (toJSString "addtrack")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrackList.onremovetrack Mozilla AudioTrackList.onremovetrack documentation> 
+removeTrack :: EventName AudioTrackList Event
+removeTrack = unsafeEventName (toJSString "removetrack")
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/AutocompleteErrorEvent.hs b/src/Language/Javascript/JSaddle/DOM/Generated/AutocompleteErrorEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/AutocompleteErrorEvent.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.AutocompleteErrorEvent
+       (getReason, AutocompleteErrorEvent, castToAutocompleteErrorEvent,
+        gTypeAutocompleteErrorEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AutocompleteErrorEvent.reason Mozilla AutocompleteErrorEvent.reason documentation> 
+getReason ::
+          (MonadDOM m, FromJSString result) =>
+            AutocompleteErrorEvent -> m result
+getReason self
+  = liftDOM ((self ^. js "reason") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/BarProp.hs b/src/Language/Javascript/JSaddle/DOM/Generated/BarProp.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/BarProp.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.BarProp
+       (getVisible, BarProp, castToBarProp, gTypeBarProp) where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/BarProp.visible Mozilla BarProp.visible documentation> 
+getVisible :: (MonadDOM m) => BarProp -> m Bool
+getVisible self = liftDOM ((self ^. js "visible") >>= valToBool)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/BatteryManager.hs b/src/Language/Javascript/JSaddle/DOM/Generated/BatteryManager.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/BatteryManager.hs
@@ -0,0 +1,54 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.BatteryManager
+       (getCharging, getChargingTime, getDischargingTime, getLevel,
+        chargingChange, chargingTimeChange, dischargingTimeChange,
+        levelChange, BatteryManager, castToBatteryManager,
+        gTypeBatteryManager)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/BatteryManager.charging Mozilla BatteryManager.charging documentation> 
+getCharging :: (MonadDOM m) => BatteryManager -> m Bool
+getCharging self = liftDOM ((self ^. js "charging") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/BatteryManager.chargingTime Mozilla BatteryManager.chargingTime documentation> 
+getChargingTime :: (MonadDOM m) => BatteryManager -> m Double
+getChargingTime self
+  = liftDOM ((self ^. js "chargingTime") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/BatteryManager.dischargingTime Mozilla BatteryManager.dischargingTime documentation> 
+getDischargingTime :: (MonadDOM m) => BatteryManager -> m Double
+getDischargingTime self
+  = liftDOM ((self ^. js "dischargingTime") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/BatteryManager.level Mozilla BatteryManager.level documentation> 
+getLevel :: (MonadDOM m) => BatteryManager -> m Double
+getLevel self = liftDOM ((self ^. js "level") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/BatteryManager.onchargingchange Mozilla BatteryManager.onchargingchange documentation> 
+chargingChange :: EventName BatteryManager Event
+chargingChange = unsafeEventName (toJSString "chargingchange")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/BatteryManager.onchargingtimechange Mozilla BatteryManager.onchargingtimechange documentation> 
+chargingTimeChange :: EventName BatteryManager Event
+chargingTimeChange
+  = unsafeEventName (toJSString "chargingtimechange")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/BatteryManager.ondischargingtimechange Mozilla BatteryManager.ondischargingtimechange documentation> 
+dischargingTimeChange :: EventName BatteryManager Event
+dischargingTimeChange
+  = unsafeEventName (toJSString "dischargingtimechange")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/BatteryManager.onlevelchange Mozilla BatteryManager.onlevelchange documentation> 
+levelChange :: EventName BatteryManager Event
+levelChange = unsafeEventName (toJSString "levelchange")
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/BeforeLoadEvent.hs b/src/Language/Javascript/JSaddle/DOM/Generated/BeforeLoadEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/BeforeLoadEvent.hs
@@ -0,0 +1,21 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.BeforeLoadEvent
+       (getUrl, BeforeLoadEvent, castToBeforeLoadEvent,
+        gTypeBeforeLoadEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/BeforeLoadEvent.url Mozilla BeforeLoadEvent.url documentation> 
+getUrl ::
+       (MonadDOM m, FromJSString result) => BeforeLoadEvent -> m result
+getUrl self = liftDOM ((self ^. js "url") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/BeforeUnloadEvent.hs b/src/Language/Javascript/JSaddle/DOM/Generated/BeforeUnloadEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/BeforeUnloadEvent.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.BeforeUnloadEvent
+       (setReturnValue, getReturnValue, BeforeUnloadEvent,
+        castToBeforeUnloadEvent, gTypeBeforeUnloadEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/BeforeUnloadEvent.returnValue Mozilla BeforeUnloadEvent.returnValue documentation> 
+setReturnValue ::
+               (MonadDOM m, ToJSString val) => BeforeUnloadEvent -> val -> m ()
+setReturnValue self val
+  = liftDOM (self ^. jss "returnValue" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/BeforeUnloadEvent.returnValue Mozilla BeforeUnloadEvent.returnValue documentation> 
+getReturnValue ::
+               (MonadDOM m, FromJSString result) => BeforeUnloadEvent -> m result
+getReturnValue self
+  = liftDOM ((self ^. js "returnValue") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/BiquadFilterNode.hs b/src/Language/Javascript/JSaddle/DOM/Generated/BiquadFilterNode.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/BiquadFilterNode.hs
@@ -0,0 +1,69 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.BiquadFilterNode
+       (getFrequencyResponse, pattern LOWPASS, pattern HIGHPASS,
+        pattern BANDPASS, pattern LOWSHELF, pattern HIGHSHELF,
+        pattern PEAKING, pattern NOTCH, pattern ALLPASS, setType, getType,
+        getFrequency, getDetune, getQ, getGain, BiquadFilterNode,
+        castToBiquadFilterNode, gTypeBiquadFilterNode)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode.getFrequencyResponse Mozilla BiquadFilterNode.getFrequencyResponse documentation> 
+getFrequencyResponse ::
+                     (MonadDOM m, IsFloat32Array frequencyHz,
+                      IsFloat32Array magResponse, IsFloat32Array phaseResponse) =>
+                       BiquadFilterNode ->
+                         Maybe frequencyHz ->
+                           Maybe magResponse -> Maybe phaseResponse -> m ()
+getFrequencyResponse self frequencyHz magResponse phaseResponse
+  = liftDOM
+      (void
+         (self ^. jsf "getFrequencyResponse"
+            [toJSVal frequencyHz, toJSVal magResponse, toJSVal phaseResponse]))
+pattern LOWPASS = 0
+pattern HIGHPASS = 1
+pattern BANDPASS = 2
+pattern LOWSHELF = 3
+pattern HIGHSHELF = 4
+pattern PEAKING = 5
+pattern NOTCH = 6
+pattern ALLPASS = 7
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode.type Mozilla BiquadFilterNode.type documentation> 
+setType ::
+        (MonadDOM m, ToJSString val) => BiquadFilterNode -> val -> m ()
+setType self val = liftDOM (self ^. jss "type" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode.type Mozilla BiquadFilterNode.type documentation> 
+getType ::
+        (MonadDOM m, FromJSString result) => BiquadFilterNode -> m result
+getType self = liftDOM ((self ^. js "type") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode.frequency Mozilla BiquadFilterNode.frequency documentation> 
+getFrequency ::
+             (MonadDOM m) => BiquadFilterNode -> m (Maybe AudioParam)
+getFrequency self
+  = liftDOM ((self ^. js "frequency") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode.detune Mozilla BiquadFilterNode.detune documentation> 
+getDetune ::
+          (MonadDOM m) => BiquadFilterNode -> m (Maybe AudioParam)
+getDetune self = liftDOM ((self ^. js "detune") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode.Q Mozilla BiquadFilterNode.Q documentation> 
+getQ :: (MonadDOM m) => BiquadFilterNode -> m (Maybe AudioParam)
+getQ self = liftDOM ((self ^. js "Q") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode.gain Mozilla BiquadFilterNode.gain documentation> 
+getGain :: (MonadDOM m) => BiquadFilterNode -> m (Maybe AudioParam)
+getGain self = liftDOM ((self ^. js "gain") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/Blob.hs b/src/Language/Javascript/JSaddle/DOM/Generated/Blob.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/Blob.hs
@@ -0,0 +1,51 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.Blob
+       (newBlob, newBlob', slice, getSize, getType, Blob, castToBlob,
+        gTypeBlob, IsBlob, toBlob)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Blob Mozilla Blob documentation> 
+newBlob :: (MonadDOM m) => m Blob
+newBlob = liftDOM (Blob <$> new (jsg "Blob") ())
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Blob Mozilla Blob documentation> 
+newBlob' ::
+         (MonadDOM m, IsBlobPropertyBag options) =>
+           [JSVal] -> Maybe options -> m Blob
+newBlob' blobParts options
+  = liftDOM
+      (Blob <$>
+         new (jsg "Blob") [toJSVal (array blobParts), toJSVal options])
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Blob.slice Mozilla Blob.slice documentation> 
+slice ::
+      (MonadDOM m, IsBlob self, ToJSString contentType) =>
+        self -> Int64 -> Int64 -> Maybe contentType -> m (Maybe Blob)
+slice self start end contentType
+  = liftDOM
+      (((toBlob self) ^. jsf "slice"
+          [toJSVal start, toJSVal end, toJSVal contentType])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Blob.size Mozilla Blob.size documentation> 
+getSize :: (MonadDOM m, IsBlob self) => self -> m Word64
+getSize self
+  = liftDOM
+      (round <$> (((toBlob self) ^. js "size") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Blob.type Mozilla Blob.type documentation> 
+getType ::
+        (MonadDOM m, IsBlob self, FromJSString result) => self -> m result
+getType self
+  = liftDOM (((toBlob self) ^. js "type") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/CSS.hs b/src/Language/Javascript/JSaddle/DOM/Generated/CSS.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/CSS.hs
@@ -0,0 +1,31 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.CSS
+       (supports2, supports, CSS, castToCSS, gTypeCSS) where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSS.supports Mozilla CSS.supports documentation> 
+supports2 ::
+          (MonadDOM m, ToJSString property, ToJSString value) =>
+            CSS -> property -> value -> m Bool
+supports2 self property value
+  = liftDOM
+      ((self ^. jsf "supports" [toJSVal property, toJSVal value]) >>=
+         valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSS.supports Mozilla CSS.supports documentation> 
+supports ::
+         (MonadDOM m, ToJSString conditionText) =>
+           CSS -> conditionText -> m Bool
+supports self conditionText
+  = liftDOM
+      ((self ^. jsf "supports" [toJSVal conditionText]) >>= valToBool)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/CSSCharsetRule.hs b/src/Language/Javascript/JSaddle/DOM/Generated/CSSCharsetRule.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/CSSCharsetRule.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.CSSCharsetRule
+       (setEncoding, getEncoding, CSSCharsetRule, castToCSSCharsetRule,
+        gTypeCSSCharsetRule)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSCharsetRule.encoding Mozilla CSSCharsetRule.encoding documentation> 
+setEncoding ::
+            (MonadDOM m, ToJSString val) => CSSCharsetRule -> Maybe val -> m ()
+setEncoding self val
+  = liftDOM (self ^. jss "encoding" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSCharsetRule.encoding Mozilla CSSCharsetRule.encoding documentation> 
+getEncoding ::
+            (MonadDOM m, FromJSString result) =>
+              CSSCharsetRule -> m (Maybe result)
+getEncoding self
+  = liftDOM ((self ^. js "encoding") >>= fromMaybeJSString)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/CSSFontFaceLoadEvent.hs b/src/Language/Javascript/JSaddle/DOM/Generated/CSSFontFaceLoadEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/CSSFontFaceLoadEvent.hs
@@ -0,0 +1,26 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.CSSFontFaceLoadEvent
+       (getFontface, getError, CSSFontFaceLoadEvent,
+        castToCSSFontFaceLoadEvent, gTypeCSSFontFaceLoadEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSFontFaceLoadEvent.fontface Mozilla CSSFontFaceLoadEvent.fontface documentation> 
+getFontface ::
+            (MonadDOM m) => CSSFontFaceLoadEvent -> m (Maybe CSSFontFaceRule)
+getFontface self = liftDOM ((self ^. js "fontface") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSFontFaceLoadEvent.error Mozilla CSSFontFaceLoadEvent.error documentation> 
+getError ::
+         (MonadDOM m) => CSSFontFaceLoadEvent -> m (Maybe DOMError)
+getError self = liftDOM ((self ^. js "error") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/CSSFontFaceRule.hs b/src/Language/Javascript/JSaddle/DOM/Generated/CSSFontFaceRule.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/CSSFontFaceRule.hs
@@ -0,0 +1,21 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.CSSFontFaceRule
+       (getStyle, CSSFontFaceRule, castToCSSFontFaceRule,
+        gTypeCSSFontFaceRule)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSFontFaceRule.style Mozilla CSSFontFaceRule.style documentation> 
+getStyle ::
+         (MonadDOM m) => CSSFontFaceRule -> m (Maybe CSSStyleDeclaration)
+getStyle self = liftDOM ((self ^. js "style") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/CSSImportRule.hs b/src/Language/Javascript/JSaddle/DOM/Generated/CSSImportRule.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/CSSImportRule.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.CSSImportRule
+       (getHref, getMedia, getStyleSheet, CSSImportRule,
+        castToCSSImportRule, gTypeCSSImportRule)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSImportRule.href Mozilla CSSImportRule.href documentation> 
+getHref ::
+        (MonadDOM m, FromJSString result) =>
+          CSSImportRule -> m (Maybe result)
+getHref self = liftDOM ((self ^. js "href") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSImportRule.media Mozilla CSSImportRule.media documentation> 
+getMedia :: (MonadDOM m) => CSSImportRule -> m (Maybe MediaList)
+getMedia self = liftDOM ((self ^. js "media") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSImportRule.styleSheet Mozilla CSSImportRule.styleSheet documentation> 
+getStyleSheet ::
+              (MonadDOM m) => CSSImportRule -> m (Maybe CSSStyleSheet)
+getStyleSheet self
+  = liftDOM ((self ^. js "styleSheet") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/CSSKeyframeRule.hs b/src/Language/Javascript/JSaddle/DOM/Generated/CSSKeyframeRule.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/CSSKeyframeRule.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.CSSKeyframeRule
+       (setKeyText, getKeyText, getStyle, CSSKeyframeRule,
+        castToCSSKeyframeRule, gTypeCSSKeyframeRule)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframeRule.keyText Mozilla CSSKeyframeRule.keyText documentation> 
+setKeyText ::
+           (MonadDOM m, ToJSString val) => CSSKeyframeRule -> val -> m ()
+setKeyText self val = liftDOM (self ^. jss "keyText" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframeRule.keyText Mozilla CSSKeyframeRule.keyText documentation> 
+getKeyText ::
+           (MonadDOM m, FromJSString result) => CSSKeyframeRule -> m result
+getKeyText self
+  = liftDOM ((self ^. js "keyText") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframeRule.style Mozilla CSSKeyframeRule.style documentation> 
+getStyle ::
+         (MonadDOM m) => CSSKeyframeRule -> m (Maybe CSSStyleDeclaration)
+getStyle self = liftDOM ((self ^. js "style") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/CSSKeyframesRule.hs b/src/Language/Javascript/JSaddle/DOM/Generated/CSSKeyframesRule.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/CSSKeyframesRule.hs
@@ -0,0 +1,66 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.CSSKeyframesRule
+       (insertRule, appendRule, deleteRule, findRule, _get, setName,
+        getName, getCssRules, CSSKeyframesRule, castToCSSKeyframesRule,
+        gTypeCSSKeyframesRule)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframesRule.insertRule Mozilla CSSKeyframesRule.insertRule documentation> 
+insertRule ::
+           (MonadDOM m, ToJSString rule) => CSSKeyframesRule -> rule -> m ()
+insertRule self rule
+  = liftDOM (void (self ^. jsf "insertRule" [toJSVal rule]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframesRule.appendRule Mozilla CSSKeyframesRule.appendRule documentation> 
+appendRule ::
+           (MonadDOM m, ToJSString rule) => CSSKeyframesRule -> rule -> m ()
+appendRule self rule
+  = liftDOM (void (self ^. jsf "appendRule" [toJSVal rule]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframesRule.deleteRule Mozilla CSSKeyframesRule.deleteRule documentation> 
+deleteRule ::
+           (MonadDOM m, ToJSString key) => CSSKeyframesRule -> key -> m ()
+deleteRule self key
+  = liftDOM (void (self ^. jsf "deleteRule" [toJSVal key]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframesRule.findRule Mozilla CSSKeyframesRule.findRule documentation> 
+findRule ::
+         (MonadDOM m, ToJSString key) =>
+           CSSKeyframesRule -> key -> m (Maybe CSSKeyframeRule)
+findRule self key
+  = liftDOM ((self ^. jsf "findRule" [toJSVal key]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframesRule._get Mozilla CSSKeyframesRule._get documentation> 
+_get ::
+     (MonadDOM m) =>
+       CSSKeyframesRule -> Word -> m (Maybe CSSKeyframeRule)
+_get self index
+  = liftDOM ((self ^. jsf "_get" [toJSVal index]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframesRule.name Mozilla CSSKeyframesRule.name documentation> 
+setName ::
+        (MonadDOM m, ToJSString val) =>
+          CSSKeyframesRule -> Maybe val -> m ()
+setName self val = liftDOM (self ^. jss "name" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframesRule.name Mozilla CSSKeyframesRule.name documentation> 
+getName ::
+        (MonadDOM m, FromJSString result) =>
+          CSSKeyframesRule -> m (Maybe result)
+getName self = liftDOM ((self ^. js "name") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframesRule.cssRules Mozilla CSSKeyframesRule.cssRules documentation> 
+getCssRules ::
+            (MonadDOM m) => CSSKeyframesRule -> m (Maybe CSSRuleList)
+getCssRules self = liftDOM ((self ^. js "cssRules") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/CSSMediaRule.hs b/src/Language/Javascript/JSaddle/DOM/Generated/CSSMediaRule.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/CSSMediaRule.hs
@@ -0,0 +1,40 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.CSSMediaRule
+       (insertRule, deleteRule, getMedia, getCssRules, CSSMediaRule,
+        castToCSSMediaRule, gTypeCSSMediaRule)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSMediaRule.insertRule Mozilla CSSMediaRule.insertRule documentation> 
+insertRule ::
+           (MonadDOM m, ToJSString rule) =>
+             CSSMediaRule -> rule -> Word -> m Word
+insertRule self rule index
+  = liftDOM
+      (round <$>
+         ((self ^. jsf "insertRule" [toJSVal rule, toJSVal index]) >>=
+            valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSMediaRule.deleteRule Mozilla CSSMediaRule.deleteRule documentation> 
+deleteRule :: (MonadDOM m) => CSSMediaRule -> Word -> m ()
+deleteRule self index
+  = liftDOM (void (self ^. jsf "deleteRule" [toJSVal index]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSMediaRule.media Mozilla CSSMediaRule.media documentation> 
+getMedia :: (MonadDOM m) => CSSMediaRule -> m (Maybe MediaList)
+getMedia self = liftDOM ((self ^. js "media") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSMediaRule.cssRules Mozilla CSSMediaRule.cssRules documentation> 
+getCssRules ::
+            (MonadDOM m) => CSSMediaRule -> m (Maybe CSSRuleList)
+getCssRules self = liftDOM ((self ^. js "cssRules") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/CSSPageRule.hs b/src/Language/Javascript/JSaddle/DOM/Generated/CSSPageRule.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/CSSPageRule.hs
@@ -0,0 +1,34 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.CSSPageRule
+       (setSelectorText, getSelectorText, getStyle, CSSPageRule,
+        castToCSSPageRule, gTypeCSSPageRule)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPageRule.selectorText Mozilla CSSPageRule.selectorText documentation> 
+setSelectorText ::
+                (MonadDOM m, ToJSString val) => CSSPageRule -> Maybe val -> m ()
+setSelectorText self val
+  = liftDOM (self ^. jss "selectorText" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPageRule.selectorText Mozilla CSSPageRule.selectorText documentation> 
+getSelectorText ::
+                (MonadDOM m, FromJSString result) =>
+                  CSSPageRule -> m (Maybe result)
+getSelectorText self
+  = liftDOM ((self ^. js "selectorText") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPageRule.style Mozilla CSSPageRule.style documentation> 
+getStyle ::
+         (MonadDOM m) => CSSPageRule -> m (Maybe CSSStyleDeclaration)
+getStyle self = liftDOM ((self ^. js "style") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/CSSPrimitiveValue.hs b/src/Language/Javascript/JSaddle/DOM/Generated/CSSPrimitiveValue.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/CSSPrimitiveValue.hs
@@ -0,0 +1,113 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.CSSPrimitiveValue
+       (setFloatValue, getFloatValue, setStringValue, getStringValue,
+        getCounterValue, getRectValue, getRGBColorValue,
+        pattern CSS_UNKNOWN, pattern CSS_NUMBER, pattern CSS_PERCENTAGE,
+        pattern CSS_EMS, pattern CSS_EXS, pattern CSS_PX, pattern CSS_CM,
+        pattern CSS_MM, pattern CSS_IN, pattern CSS_PT, pattern CSS_PC,
+        pattern CSS_DEG, pattern CSS_RAD, pattern CSS_GRAD, pattern CSS_MS,
+        pattern CSS_S, pattern CSS_HZ, pattern CSS_KHZ,
+        pattern CSS_DIMENSION, pattern CSS_STRING, pattern CSS_URI,
+        pattern CSS_IDENT, pattern CSS_ATTR, pattern CSS_COUNTER,
+        pattern CSS_RECT, pattern CSS_RGBCOLOR, pattern CSS_VW,
+        pattern CSS_VH, pattern CSS_VMIN, pattern CSS_VMAX,
+        getPrimitiveType, CSSPrimitiveValue, castToCSSPrimitiveValue,
+        gTypeCSSPrimitiveValue)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPrimitiveValue.setFloatValue Mozilla CSSPrimitiveValue.setFloatValue documentation> 
+setFloatValue ::
+              (MonadDOM m) => CSSPrimitiveValue -> Word -> Float -> m ()
+setFloatValue self unitType floatValue
+  = liftDOM
+      (void
+         (self ^. jsf "setFloatValue"
+            [toJSVal unitType, toJSVal floatValue]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPrimitiveValue.getFloatValue Mozilla CSSPrimitiveValue.getFloatValue documentation> 
+getFloatValue ::
+              (MonadDOM m) => CSSPrimitiveValue -> Word -> m Float
+getFloatValue self unitType
+  = liftDOM
+      (realToFrac <$>
+         ((self ^. jsf "getFloatValue" [toJSVal unitType]) >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPrimitiveValue.setStringValue Mozilla CSSPrimitiveValue.setStringValue documentation> 
+setStringValue ::
+               (MonadDOM m, ToJSString stringValue) =>
+                 CSSPrimitiveValue -> Word -> stringValue -> m ()
+setStringValue self stringType stringValue
+  = liftDOM
+      (void
+         (self ^. jsf "setStringValue"
+            [toJSVal stringType, toJSVal stringValue]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPrimitiveValue.getStringValue Mozilla CSSPrimitiveValue.getStringValue documentation> 
+getStringValue ::
+               (MonadDOM m, FromJSString result) => CSSPrimitiveValue -> m result
+getStringValue self
+  = liftDOM ((self ^. js "getStringValue") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPrimitiveValue.getCounterValue Mozilla CSSPrimitiveValue.getCounterValue documentation> 
+getCounterValue ::
+                (MonadDOM m) => CSSPrimitiveValue -> m (Maybe Counter)
+getCounterValue self
+  = liftDOM ((self ^. js "getCounterValue") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPrimitiveValue.getRectValue Mozilla CSSPrimitiveValue.getRectValue documentation> 
+getRectValue :: (MonadDOM m) => CSSPrimitiveValue -> m (Maybe Rect)
+getRectValue self
+  = liftDOM ((self ^. js "getRectValue") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPrimitiveValue.getRGBColorValue Mozilla CSSPrimitiveValue.getRGBColorValue documentation> 
+getRGBColorValue ::
+                 (MonadDOM m) => CSSPrimitiveValue -> m (Maybe RGBColor)
+getRGBColorValue self
+  = liftDOM ((self ^. js "getRGBColorValue") >>= fromJSVal)
+pattern CSS_UNKNOWN = 0
+pattern CSS_NUMBER = 1
+pattern CSS_PERCENTAGE = 2
+pattern CSS_EMS = 3
+pattern CSS_EXS = 4
+pattern CSS_PX = 5
+pattern CSS_CM = 6
+pattern CSS_MM = 7
+pattern CSS_IN = 8
+pattern CSS_PT = 9
+pattern CSS_PC = 10
+pattern CSS_DEG = 11
+pattern CSS_RAD = 12
+pattern CSS_GRAD = 13
+pattern CSS_MS = 14
+pattern CSS_S = 15
+pattern CSS_HZ = 16
+pattern CSS_KHZ = 17
+pattern CSS_DIMENSION = 18
+pattern CSS_STRING = 19
+pattern CSS_URI = 20
+pattern CSS_IDENT = 21
+pattern CSS_ATTR = 22
+pattern CSS_COUNTER = 23
+pattern CSS_RECT = 24
+pattern CSS_RGBCOLOR = 25
+pattern CSS_VW = 26
+pattern CSS_VH = 27
+pattern CSS_VMIN = 28
+pattern CSS_VMAX = 29
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPrimitiveValue.primitiveType Mozilla CSSPrimitiveValue.primitiveType documentation> 
+getPrimitiveType :: (MonadDOM m) => CSSPrimitiveValue -> m Word
+getPrimitiveType self
+  = liftDOM
+      (round <$> ((self ^. js "primitiveType") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/CSSRule.hs b/src/Language/Javascript/JSaddle/DOM/Generated/CSSRule.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/CSSRule.hs
@@ -0,0 +1,70 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.CSSRule
+       (pattern UNKNOWN_RULE, pattern STYLE_RULE, pattern CHARSET_RULE,
+        pattern IMPORT_RULE, pattern MEDIA_RULE, pattern FONT_FACE_RULE,
+        pattern PAGE_RULE, pattern KEYFRAMES_RULE, pattern KEYFRAME_RULE,
+        pattern SUPPORTS_RULE, pattern WEBKIT_VIEWPORT_RULE,
+        pattern WEBKIT_REGION_RULE, pattern WEBKIT_KEYFRAMES_RULE,
+        pattern WEBKIT_KEYFRAME_RULE, getType, setCssText, getCssText,
+        getParentStyleSheet, getParentRule, CSSRule, castToCSSRule,
+        gTypeCSSRule, IsCSSRule, toCSSRule)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+pattern UNKNOWN_RULE = 0
+pattern STYLE_RULE = 1
+pattern CHARSET_RULE = 2
+pattern IMPORT_RULE = 3
+pattern MEDIA_RULE = 4
+pattern FONT_FACE_RULE = 5
+pattern PAGE_RULE = 6
+pattern KEYFRAMES_RULE = 7
+pattern KEYFRAME_RULE = 8
+pattern SUPPORTS_RULE = 12
+pattern WEBKIT_VIEWPORT_RULE = 15
+pattern WEBKIT_REGION_RULE = 16
+pattern WEBKIT_KEYFRAMES_RULE = 7
+pattern WEBKIT_KEYFRAME_RULE = 8
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSRule.type Mozilla CSSRule.type documentation> 
+getType :: (MonadDOM m, IsCSSRule self) => self -> m Word
+getType self
+  = liftDOM
+      (round <$> (((toCSSRule self) ^. js "type") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSRule.cssText Mozilla CSSRule.cssText documentation> 
+setCssText ::
+           (MonadDOM m, IsCSSRule self, ToJSString val) =>
+             self -> Maybe val -> m ()
+setCssText self val
+  = liftDOM ((toCSSRule self) ^. jss "cssText" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSRule.cssText Mozilla CSSRule.cssText documentation> 
+getCssText ::
+           (MonadDOM m, IsCSSRule self, FromJSString result) =>
+             self -> m (Maybe result)
+getCssText self
+  = liftDOM
+      (((toCSSRule self) ^. js "cssText") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSRule.parentStyleSheet Mozilla CSSRule.parentStyleSheet documentation> 
+getParentStyleSheet ::
+                    (MonadDOM m, IsCSSRule self) => self -> m (Maybe CSSStyleSheet)
+getParentStyleSheet self
+  = liftDOM
+      (((toCSSRule self) ^. js "parentStyleSheet") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSRule.parentRule Mozilla CSSRule.parentRule documentation> 
+getParentRule ::
+              (MonadDOM m, IsCSSRule self) => self -> m (Maybe CSSRule)
+getParentRule self
+  = liftDOM (((toCSSRule self) ^. js "parentRule") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/CSSRuleList.hs b/src/Language/Javascript/JSaddle/DOM/Generated/CSSRuleList.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/CSSRuleList.hs
@@ -0,0 +1,25 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.CSSRuleList
+       (item, getLength, CSSRuleList, castToCSSRuleList, gTypeCSSRuleList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSRuleList.item Mozilla CSSRuleList.item documentation> 
+item :: (MonadDOM m) => CSSRuleList -> Word -> m (Maybe CSSRule)
+item self index
+  = liftDOM ((self ^. jsf "item" [toJSVal index]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSRuleList.length Mozilla CSSRuleList.length documentation> 
+getLength :: (MonadDOM m) => CSSRuleList -> m Word
+getLength self
+  = liftDOM (round <$> ((self ^. js "length") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/CSSStyleDeclaration.hs b/src/Language/Javascript/JSaddle/DOM/Generated/CSSStyleDeclaration.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/CSSStyleDeclaration.hs
@@ -0,0 +1,117 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.CSSStyleDeclaration
+       (getPropertyValue, getPropertyCSSValue, removeProperty,
+        getPropertyPriority, setProperty, item, getPropertyShorthand,
+        isPropertyImplicit, setCssText, getCssText, getLength,
+        getParentRule, CSSStyleDeclaration, castToCSSStyleDeclaration,
+        gTypeCSSStyleDeclaration)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.getPropertyValue Mozilla CSSStyleDeclaration.getPropertyValue documentation> 
+getPropertyValue ::
+                 (MonadDOM m, ToJSString propertyName, FromJSString result) =>
+                   CSSStyleDeclaration -> propertyName -> m (Maybe result)
+getPropertyValue self propertyName
+  = liftDOM
+      ((self ^. jsf "getPropertyValue" [toJSVal propertyName]) >>=
+         fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.getPropertyCSSValue Mozilla CSSStyleDeclaration.getPropertyCSSValue documentation> 
+getPropertyCSSValue ::
+                    (MonadDOM m, ToJSString propertyName) =>
+                      CSSStyleDeclaration -> propertyName -> m (Maybe CSSValue)
+getPropertyCSSValue self propertyName
+  = liftDOM
+      ((self ^. jsf "getPropertyCSSValue" [toJSVal propertyName]) >>=
+         fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.removeProperty Mozilla CSSStyleDeclaration.removeProperty documentation> 
+removeProperty ::
+               (MonadDOM m, ToJSString propertyName, FromJSString result) =>
+                 CSSStyleDeclaration -> propertyName -> m (Maybe result)
+removeProperty self propertyName
+  = liftDOM
+      ((self ^. jsf "removeProperty" [toJSVal propertyName]) >>=
+         fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.getPropertyPriority Mozilla CSSStyleDeclaration.getPropertyPriority documentation> 
+getPropertyPriority ::
+                    (MonadDOM m, ToJSString propertyName, FromJSString result) =>
+                      CSSStyleDeclaration -> propertyName -> m (Maybe result)
+getPropertyPriority self propertyName
+  = liftDOM
+      ((self ^. jsf "getPropertyPriority" [toJSVal propertyName]) >>=
+         fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.setProperty Mozilla CSSStyleDeclaration.setProperty documentation> 
+setProperty ::
+            (MonadDOM m, ToJSString propertyName, ToJSString value,
+             ToJSString priority) =>
+              CSSStyleDeclaration ->
+                propertyName -> Maybe value -> priority -> m ()
+setProperty self propertyName value priority
+  = liftDOM
+      (void
+         (self ^. jsf "setProperty"
+            [toJSVal propertyName, toJSVal value, toJSVal priority]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.item Mozilla CSSStyleDeclaration.item documentation> 
+item ::
+     (MonadDOM m, FromJSString result) =>
+       CSSStyleDeclaration -> Word -> m result
+item self index
+  = liftDOM
+      ((self ^. jsf "item" [toJSVal index]) >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.getPropertyShorthand Mozilla CSSStyleDeclaration.getPropertyShorthand documentation> 
+getPropertyShorthand ::
+                     (MonadDOM m, ToJSString propertyName, FromJSString result) =>
+                       CSSStyleDeclaration -> propertyName -> m (Maybe result)
+getPropertyShorthand self propertyName
+  = liftDOM
+      ((self ^. jsf "getPropertyShorthand" [toJSVal propertyName]) >>=
+         fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.isPropertyImplicit Mozilla CSSStyleDeclaration.isPropertyImplicit documentation> 
+isPropertyImplicit ::
+                   (MonadDOM m, ToJSString propertyName) =>
+                     CSSStyleDeclaration -> propertyName -> m Bool
+isPropertyImplicit self propertyName
+  = liftDOM
+      ((self ^. jsf "isPropertyImplicit" [toJSVal propertyName]) >>=
+         valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.cssText Mozilla CSSStyleDeclaration.cssText documentation> 
+setCssText ::
+           (MonadDOM m, ToJSString val) =>
+             CSSStyleDeclaration -> Maybe val -> m ()
+setCssText self val = liftDOM (self ^. jss "cssText" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.cssText Mozilla CSSStyleDeclaration.cssText documentation> 
+getCssText ::
+           (MonadDOM m, FromJSString result) =>
+             CSSStyleDeclaration -> m (Maybe result)
+getCssText self
+  = liftDOM ((self ^. js "cssText") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.length Mozilla CSSStyleDeclaration.length documentation> 
+getLength :: (MonadDOM m) => CSSStyleDeclaration -> m Word
+getLength self
+  = liftDOM (round <$> ((self ^. js "length") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.parentRule Mozilla CSSStyleDeclaration.parentRule documentation> 
+getParentRule ::
+              (MonadDOM m) => CSSStyleDeclaration -> m (Maybe CSSRule)
+getParentRule self
+  = liftDOM ((self ^. js "parentRule") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/CSSStyleRule.hs b/src/Language/Javascript/JSaddle/DOM/Generated/CSSStyleRule.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/CSSStyleRule.hs
@@ -0,0 +1,34 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.CSSStyleRule
+       (setSelectorText, getSelectorText, getStyle, CSSStyleRule,
+        castToCSSStyleRule, gTypeCSSStyleRule)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleRule.selectorText Mozilla CSSStyleRule.selectorText documentation> 
+setSelectorText ::
+                (MonadDOM m, ToJSString val) => CSSStyleRule -> Maybe val -> m ()
+setSelectorText self val
+  = liftDOM (self ^. jss "selectorText" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleRule.selectorText Mozilla CSSStyleRule.selectorText documentation> 
+getSelectorText ::
+                (MonadDOM m, FromJSString result) =>
+                  CSSStyleRule -> m (Maybe result)
+getSelectorText self
+  = liftDOM ((self ^. js "selectorText") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleRule.style Mozilla CSSStyleRule.style documentation> 
+getStyle ::
+         (MonadDOM m) => CSSStyleRule -> m (Maybe CSSStyleDeclaration)
+getStyle self = liftDOM ((self ^. js "style") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/CSSStyleSheet.hs b/src/Language/Javascript/JSaddle/DOM/Generated/CSSStyleSheet.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/CSSStyleSheet.hs
@@ -0,0 +1,62 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.CSSStyleSheet
+       (insertRule, deleteRule, addRule, removeRule, getOwnerRule,
+        getCssRules, getRules, CSSStyleSheet, castToCSSStyleSheet,
+        gTypeCSSStyleSheet)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet.insertRule Mozilla CSSStyleSheet.insertRule documentation> 
+insertRule ::
+           (MonadDOM m, ToJSString rule) =>
+             CSSStyleSheet -> rule -> Word -> m Word
+insertRule self rule index
+  = liftDOM
+      (round <$>
+         ((self ^. jsf "insertRule" [toJSVal rule, toJSVal index]) >>=
+            valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet.deleteRule Mozilla CSSStyleSheet.deleteRule documentation> 
+deleteRule :: (MonadDOM m) => CSSStyleSheet -> Word -> m ()
+deleteRule self index
+  = liftDOM (void (self ^. jsf "deleteRule" [toJSVal index]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet.addRule Mozilla CSSStyleSheet.addRule documentation> 
+addRule ::
+        (MonadDOM m, ToJSString selector, ToJSString style) =>
+          CSSStyleSheet -> selector -> style -> Word -> m Int
+addRule self selector style index
+  = liftDOM
+      (round <$>
+         ((self ^. jsf "addRule"
+             [toJSVal selector, toJSVal style, toJSVal index])
+            >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet.removeRule Mozilla CSSStyleSheet.removeRule documentation> 
+removeRule :: (MonadDOM m) => CSSStyleSheet -> Word -> m ()
+removeRule self index
+  = liftDOM (void (self ^. jsf "removeRule" [toJSVal index]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet.ownerRule Mozilla CSSStyleSheet.ownerRule documentation> 
+getOwnerRule :: (MonadDOM m) => CSSStyleSheet -> m (Maybe CSSRule)
+getOwnerRule self
+  = liftDOM ((self ^. js "ownerRule") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet.cssRules Mozilla CSSStyleSheet.cssRules documentation> 
+getCssRules ::
+            (MonadDOM m) => CSSStyleSheet -> m (Maybe CSSRuleList)
+getCssRules self = liftDOM ((self ^. js "cssRules") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet.rules Mozilla CSSStyleSheet.rules documentation> 
+getRules :: (MonadDOM m) => CSSStyleSheet -> m (Maybe CSSRuleList)
+getRules self = liftDOM ((self ^. js "rules") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/CSSSupportsRule.hs b/src/Language/Javascript/JSaddle/DOM/Generated/CSSSupportsRule.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/CSSSupportsRule.hs
@@ -0,0 +1,42 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.CSSSupportsRule
+       (insertRule, deleteRule, getCssRules, getConditionText,
+        CSSSupportsRule, castToCSSSupportsRule, gTypeCSSSupportsRule)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSSupportsRule.insertRule Mozilla CSSSupportsRule.insertRule documentation> 
+insertRule ::
+           (MonadDOM m, ToJSString rule) =>
+             CSSSupportsRule -> rule -> Word -> m Word
+insertRule self rule index
+  = liftDOM
+      (round <$>
+         ((self ^. jsf "insertRule" [toJSVal rule, toJSVal index]) >>=
+            valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSSupportsRule.deleteRule Mozilla CSSSupportsRule.deleteRule documentation> 
+deleteRule :: (MonadDOM m) => CSSSupportsRule -> Word -> m ()
+deleteRule self index
+  = liftDOM (void (self ^. jsf "deleteRule" [toJSVal index]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSSupportsRule.cssRules Mozilla CSSSupportsRule.cssRules documentation> 
+getCssRules ::
+            (MonadDOM m) => CSSSupportsRule -> m (Maybe CSSRuleList)
+getCssRules self = liftDOM ((self ^. js "cssRules") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSSupportsRule.conditionText Mozilla CSSSupportsRule.conditionText documentation> 
+getConditionText ::
+                 (MonadDOM m, FromJSString result) => CSSSupportsRule -> m result
+getConditionText self
+  = liftDOM ((self ^. js "conditionText") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/CSSValue.hs b/src/Language/Javascript/JSaddle/DOM/Generated/CSSValue.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/CSSValue.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.CSSValue
+       (pattern CSS_INHERIT, pattern CSS_PRIMITIVE_VALUE,
+        pattern CSS_VALUE_LIST, pattern CSS_CUSTOM, setCssText, getCssText,
+        getCssValueType, CSSValue, castToCSSValue, gTypeCSSValue,
+        IsCSSValue, toCSSValue)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+pattern CSS_INHERIT = 0
+pattern CSS_PRIMITIVE_VALUE = 1
+pattern CSS_VALUE_LIST = 2
+pattern CSS_CUSTOM = 3
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSValue.cssText Mozilla CSSValue.cssText documentation> 
+setCssText ::
+           (MonadDOM m, IsCSSValue self, ToJSString val) =>
+             self -> Maybe val -> m ()
+setCssText self val
+  = liftDOM ((toCSSValue self) ^. jss "cssText" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSValue.cssText Mozilla CSSValue.cssText documentation> 
+getCssText ::
+           (MonadDOM m, IsCSSValue self, FromJSString result) =>
+             self -> m (Maybe result)
+getCssText self
+  = liftDOM
+      (((toCSSValue self) ^. js "cssText") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSValue.cssValueType Mozilla CSSValue.cssValueType documentation> 
+getCssValueType :: (MonadDOM m, IsCSSValue self) => self -> m Word
+getCssValueType self
+  = liftDOM
+      (round <$>
+         (((toCSSValue self) ^. js "cssValueType") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/CSSValueList.hs b/src/Language/Javascript/JSaddle/DOM/Generated/CSSValueList.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/CSSValueList.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.CSSValueList
+       (item, getLength, CSSValueList, castToCSSValueList,
+        gTypeCSSValueList, IsCSSValueList, toCSSValueList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSValueList.item Mozilla CSSValueList.item documentation> 
+item ::
+     (MonadDOM m, IsCSSValueList self) =>
+       self -> Word -> m (Maybe CSSValue)
+item self index
+  = liftDOM
+      (((toCSSValueList self) ^. jsf "item" [toJSVal index]) >>=
+         fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSValueList.length Mozilla CSSValueList.length documentation> 
+getLength :: (MonadDOM m, IsCSSValueList self) => self -> m Word
+getLength self
+  = liftDOM
+      (round <$>
+         (((toCSSValueList self) ^. js "length") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/CanvasGradient.hs b/src/Language/Javascript/JSaddle/DOM/Generated/CanvasGradient.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/CanvasGradient.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.CanvasGradient
+       (addColorStop, CanvasGradient, castToCanvasGradient,
+        gTypeCanvasGradient)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasGradient.addColorStop Mozilla CanvasGradient.addColorStop documentation> 
+addColorStop ::
+             (MonadDOM m, ToJSString color) =>
+               CanvasGradient -> Float -> color -> m ()
+addColorStop self offset color
+  = liftDOM
+      (void (self ^. jsf "addColorStop" [toJSVal offset, toJSVal color]))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/CanvasRenderingContext.hs b/src/Language/Javascript/JSaddle/DOM/Generated/CanvasRenderingContext.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/CanvasRenderingContext.hs
@@ -0,0 +1,25 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.CanvasRenderingContext
+       (getCanvas, CanvasRenderingContext, castToCanvasRenderingContext,
+        gTypeCanvasRenderingContext, IsCanvasRenderingContext,
+        toCanvasRenderingContext)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext.canvas Mozilla CanvasRenderingContext.canvas documentation> 
+getCanvas ::
+          (MonadDOM m, IsCanvasRenderingContext self) =>
+            self -> m (Maybe HTMLCanvasElement)
+getCanvas self
+  = liftDOM
+      (((toCanvasRenderingContext self) ^. js "canvas") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/CanvasRenderingContext2D.hs b/src/Language/Javascript/JSaddle/DOM/Generated/CanvasRenderingContext2D.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/CanvasRenderingContext2D.hs
@@ -0,0 +1,1059 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.CanvasRenderingContext2D
+       (save, restore, scale, rotate, translate, transform, setTransform,
+        createLinearGradient, createRadialGradient, setLineDash,
+        getLineDash, clearRect, fillRect, beginPath, closePath, moveTo,
+        lineTo, quadraticCurveTo, bezierCurveTo, arcTo, rect, arc,
+        fillPath, strokePath, clipPath, fill, stroke, clip,
+        isPointInPathPath, isPointInStrokePath, isPointInPath,
+        isPointInStroke, measureText, setAlpha, setCompositeOperation,
+        setLineWidthFunction, setLineCapFunction, setLineJoinFunction,
+        setMiterLimitFunction, clearShadow, fillText, strokeText,
+        setStrokeColor, setStrokeColorGray, setStrokeColorRGB,
+        setStrokeColorCYMK, setFillColor, setFillColorGray,
+        setFillColorRGB, setFillColorCYMK, strokeRect, drawImage,
+        drawImageScaled, drawImagePart, drawImageFromCanvas,
+        drawImageFromCanvasScaled, drawImageFromCanvasPart,
+        drawImageFromVideo, drawImageFromVideoScaled,
+        drawImageFromVideoPart, drawImageFromRect, setShadow,
+        setShadowGray, setShadowRGB, setShadowCYMK, putImageData,
+        putImageDataDirty, webkitPutImageDataHD, webkitPutImageDataHDDirty,
+        createPatternFromCanvas, createPattern, createImageData,
+        createImageDataSize, getImageData, webkitGetImageDataHD,
+        drawFocusIfNeeded, drawFocusIfNeededPath, setGlobalAlpha,
+        getGlobalAlpha, setGlobalCompositeOperation,
+        getGlobalCompositeOperation, setLineWidth, getLineWidth,
+        setLineCap, getLineCap, setLineJoin, getLineJoin, setMiterLimit,
+        getMiterLimit, setShadowOffsetX, getShadowOffsetX,
+        setShadowOffsetY, getShadowOffsetY, setShadowBlur, getShadowBlur,
+        setShadowColor, getShadowColor, setLineDashOffset,
+        getLineDashOffset, setWebkitLineDash, getWebkitLineDash,
+        setWebkitLineDashOffset, getWebkitLineDashOffset, setFont, getFont,
+        setTextAlign, getTextAlign, setTextBaseline, getTextBaseline,
+        setDirection, getDirection, setStrokeStyle, getStrokeStyle,
+        setFillStyle, getFillStyle, getWebkitBackingStorePixelRatio,
+        setWebkitImageSmoothingEnabled, getWebkitImageSmoothingEnabled,
+        CanvasRenderingContext2D, castToCanvasRenderingContext2D,
+        gTypeCanvasRenderingContext2D)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.save Mozilla CanvasRenderingContext2D.save documentation> 
+save :: (MonadDOM m) => CanvasRenderingContext2D -> m ()
+save self = liftDOM (void (self ^. js "save"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.restore Mozilla CanvasRenderingContext2D.restore documentation> 
+restore :: (MonadDOM m) => CanvasRenderingContext2D -> m ()
+restore self = liftDOM (void (self ^. js "restore"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.scale Mozilla CanvasRenderingContext2D.scale documentation> 
+scale ::
+      (MonadDOM m) => CanvasRenderingContext2D -> Float -> Float -> m ()
+scale self sx sy
+  = liftDOM (void (self ^. jsf "scale" [toJSVal sx, toJSVal sy]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.rotate Mozilla CanvasRenderingContext2D.rotate documentation> 
+rotate :: (MonadDOM m) => CanvasRenderingContext2D -> Float -> m ()
+rotate self angle
+  = liftDOM (void (self ^. jsf "rotate" [toJSVal angle]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.translate Mozilla CanvasRenderingContext2D.translate documentation> 
+translate ::
+          (MonadDOM m) => CanvasRenderingContext2D -> Float -> Float -> m ()
+translate self tx ty
+  = liftDOM (void (self ^. jsf "translate" [toJSVal tx, toJSVal ty]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.transform Mozilla CanvasRenderingContext2D.transform documentation> 
+transform ::
+          (MonadDOM m) =>
+            CanvasRenderingContext2D ->
+              Float -> Float -> Float -> Float -> Float -> Float -> m ()
+transform self m11 m12 m21 m22 dx dy
+  = liftDOM
+      (void
+         (self ^. jsf "transform"
+            [toJSVal m11, toJSVal m12, toJSVal m21, toJSVal m22, toJSVal dx,
+             toJSVal dy]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setTransform Mozilla CanvasRenderingContext2D.setTransform documentation> 
+setTransform ::
+             (MonadDOM m) =>
+               CanvasRenderingContext2D ->
+                 Float -> Float -> Float -> Float -> Float -> Float -> m ()
+setTransform self m11 m12 m21 m22 dx dy
+  = liftDOM
+      (void
+         (self ^. jsf "setTransform"
+            [toJSVal m11, toJSVal m12, toJSVal m21, toJSVal m22, toJSVal dx,
+             toJSVal dy]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.createLinearGradient Mozilla CanvasRenderingContext2D.createLinearGradient documentation> 
+createLinearGradient ::
+                     (MonadDOM m) =>
+                       CanvasRenderingContext2D ->
+                         Float -> Float -> Float -> Float -> m (Maybe CanvasGradient)
+createLinearGradient self x0 y0 x1 y1
+  = liftDOM
+      ((self ^. jsf "createLinearGradient"
+          [toJSVal x0, toJSVal y0, toJSVal x1, toJSVal y1])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.createRadialGradient Mozilla CanvasRenderingContext2D.createRadialGradient documentation> 
+createRadialGradient ::
+                     (MonadDOM m) =>
+                       CanvasRenderingContext2D ->
+                         Float ->
+                           Float ->
+                             Float -> Float -> Float -> Float -> m (Maybe CanvasGradient)
+createRadialGradient self x0 y0 r0 x1 y1 r1
+  = liftDOM
+      ((self ^. jsf "createRadialGradient"
+          [toJSVal x0, toJSVal y0, toJSVal r0, toJSVal x1, toJSVal y1,
+           toJSVal r1])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setLineDash Mozilla CanvasRenderingContext2D.setLineDash documentation> 
+setLineDash ::
+            (MonadDOM m) => CanvasRenderingContext2D -> [Float] -> m ()
+setLineDash self dash
+  = liftDOM (void (self ^. jsf "setLineDash" [toJSVal (array dash)]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.getLineDash Mozilla CanvasRenderingContext2D.getLineDash documentation> 
+getLineDash ::
+            (MonadDOM m) => CanvasRenderingContext2D -> m [Float]
+getLineDash self
+  = liftDOM ((self ^. js "getLineDash") >>= fromJSArrayUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.clearRect Mozilla CanvasRenderingContext2D.clearRect documentation> 
+clearRect ::
+          (MonadDOM m) =>
+            CanvasRenderingContext2D ->
+              Float -> Float -> Float -> Float -> m ()
+clearRect self x y width height
+  = liftDOM
+      (void
+         (self ^. jsf "clearRect"
+            [toJSVal x, toJSVal y, toJSVal width, toJSVal height]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.fillRect Mozilla CanvasRenderingContext2D.fillRect documentation> 
+fillRect ::
+         (MonadDOM m) =>
+           CanvasRenderingContext2D ->
+             Float -> Float -> Float -> Float -> m ()
+fillRect self x y width height
+  = liftDOM
+      (void
+         (self ^. jsf "fillRect"
+            [toJSVal x, toJSVal y, toJSVal width, toJSVal height]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.beginPath Mozilla CanvasRenderingContext2D.beginPath documentation> 
+beginPath :: (MonadDOM m) => CanvasRenderingContext2D -> m ()
+beginPath self = liftDOM (void (self ^. js "beginPath"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.closePath Mozilla CanvasRenderingContext2D.closePath documentation> 
+closePath :: (MonadDOM m) => CanvasRenderingContext2D -> m ()
+closePath self = liftDOM (void (self ^. js "closePath"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.moveTo Mozilla CanvasRenderingContext2D.moveTo documentation> 
+moveTo ::
+       (MonadDOM m) => CanvasRenderingContext2D -> Float -> Float -> m ()
+moveTo self x y
+  = liftDOM (void (self ^. jsf "moveTo" [toJSVal x, toJSVal y]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.lineTo Mozilla CanvasRenderingContext2D.lineTo documentation> 
+lineTo ::
+       (MonadDOM m) => CanvasRenderingContext2D -> Float -> Float -> m ()
+lineTo self x y
+  = liftDOM (void (self ^. jsf "lineTo" [toJSVal x, toJSVal y]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.quadraticCurveTo Mozilla CanvasRenderingContext2D.quadraticCurveTo documentation> 
+quadraticCurveTo ::
+                 (MonadDOM m) =>
+                   CanvasRenderingContext2D ->
+                     Float -> Float -> Float -> Float -> m ()
+quadraticCurveTo self cpx cpy x y
+  = liftDOM
+      (void
+         (self ^. jsf "quadraticCurveTo"
+            [toJSVal cpx, toJSVal cpy, toJSVal x, toJSVal y]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.bezierCurveTo Mozilla CanvasRenderingContext2D.bezierCurveTo documentation> 
+bezierCurveTo ::
+              (MonadDOM m) =>
+                CanvasRenderingContext2D ->
+                  Float -> Float -> Float -> Float -> Float -> Float -> m ()
+bezierCurveTo self cp1x cp1y cp2x cp2y x y
+  = liftDOM
+      (void
+         (self ^. jsf "bezierCurveTo"
+            [toJSVal cp1x, toJSVal cp1y, toJSVal cp2x, toJSVal cp2y, toJSVal x,
+             toJSVal y]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.arcTo Mozilla CanvasRenderingContext2D.arcTo documentation> 
+arcTo ::
+      (MonadDOM m) =>
+        CanvasRenderingContext2D ->
+          Float -> Float -> Float -> Float -> Float -> m ()
+arcTo self x1 y1 x2 y2 radius
+  = liftDOM
+      (void
+         (self ^. jsf "arcTo"
+            [toJSVal x1, toJSVal y1, toJSVal x2, toJSVal y2, toJSVal radius]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.rect Mozilla CanvasRenderingContext2D.rect documentation> 
+rect ::
+     (MonadDOM m) =>
+       CanvasRenderingContext2D ->
+         Float -> Float -> Float -> Float -> m ()
+rect self x y width height
+  = liftDOM
+      (void
+         (self ^. jsf "rect"
+            [toJSVal x, toJSVal y, toJSVal width, toJSVal height]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.arc Mozilla CanvasRenderingContext2D.arc documentation> 
+arc ::
+    (MonadDOM m) =>
+      CanvasRenderingContext2D ->
+        Float -> Float -> Float -> Float -> Float -> Bool -> m ()
+arc self x y radius startAngle endAngle anticlockwise
+  = liftDOM
+      (void
+         (self ^. jsf "arc"
+            [toJSVal x, toJSVal y, toJSVal radius, toJSVal startAngle,
+             toJSVal endAngle, toJSVal anticlockwise]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.fill Mozilla CanvasRenderingContext2D.fill documentation> 
+fillPath ::
+         (MonadDOM m) =>
+           CanvasRenderingContext2D ->
+             Maybe Path2D -> CanvasWindingRule -> m ()
+fillPath self path winding
+  = liftDOM
+      (void (self ^. jsf "fill" [toJSVal path, toJSVal winding]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.stroke Mozilla CanvasRenderingContext2D.stroke documentation> 
+strokePath ::
+           (MonadDOM m) => CanvasRenderingContext2D -> Maybe Path2D -> m ()
+strokePath self path
+  = liftDOM (void (self ^. jsf "stroke" [toJSVal path]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.clip Mozilla CanvasRenderingContext2D.clip documentation> 
+clipPath ::
+         (MonadDOM m) =>
+           CanvasRenderingContext2D ->
+             Maybe Path2D -> CanvasWindingRule -> m ()
+clipPath self path winding
+  = liftDOM
+      (void (self ^. jsf "clip" [toJSVal path, toJSVal winding]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.fill Mozilla CanvasRenderingContext2D.fill documentation> 
+fill ::
+     (MonadDOM m) =>
+       CanvasRenderingContext2D -> CanvasWindingRule -> m ()
+fill self winding
+  = liftDOM (void (self ^. jsf "fill" [toJSVal winding]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.stroke Mozilla CanvasRenderingContext2D.stroke documentation> 
+stroke :: (MonadDOM m) => CanvasRenderingContext2D -> m ()
+stroke self = liftDOM (void (self ^. js "stroke"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.clip Mozilla CanvasRenderingContext2D.clip documentation> 
+clip ::
+     (MonadDOM m) =>
+       CanvasRenderingContext2D -> CanvasWindingRule -> m ()
+clip self winding
+  = liftDOM (void (self ^. jsf "clip" [toJSVal winding]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.isPointInPath Mozilla CanvasRenderingContext2D.isPointInPath documentation> 
+isPointInPathPath ::
+                  (MonadDOM m) =>
+                    CanvasRenderingContext2D ->
+                      Maybe Path2D -> Float -> Float -> CanvasWindingRule -> m Bool
+isPointInPathPath self path x y winding
+  = liftDOM
+      ((self ^. jsf "isPointInPath"
+          [toJSVal path, toJSVal x, toJSVal y, toJSVal winding])
+         >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.isPointInStroke Mozilla CanvasRenderingContext2D.isPointInStroke documentation> 
+isPointInStrokePath ::
+                    (MonadDOM m) =>
+                      CanvasRenderingContext2D ->
+                        Maybe Path2D -> Float -> Float -> m Bool
+isPointInStrokePath self path x y
+  = liftDOM
+      ((self ^. jsf "isPointInStroke"
+          [toJSVal path, toJSVal x, toJSVal y])
+         >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.isPointInPath Mozilla CanvasRenderingContext2D.isPointInPath documentation> 
+isPointInPath ::
+              (MonadDOM m) =>
+                CanvasRenderingContext2D ->
+                  Float -> Float -> CanvasWindingRule -> m Bool
+isPointInPath self x y winding
+  = liftDOM
+      ((self ^. jsf "isPointInPath"
+          [toJSVal x, toJSVal y, toJSVal winding])
+         >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.isPointInStroke Mozilla CanvasRenderingContext2D.isPointInStroke documentation> 
+isPointInStroke ::
+                (MonadDOM m) =>
+                  CanvasRenderingContext2D -> Float -> Float -> m Bool
+isPointInStroke self x y
+  = liftDOM
+      ((self ^. jsf "isPointInStroke" [toJSVal x, toJSVal y]) >>=
+         valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.measureText Mozilla CanvasRenderingContext2D.measureText documentation> 
+measureText ::
+            (MonadDOM m, ToJSString text) =>
+              CanvasRenderingContext2D -> text -> m (Maybe TextMetrics)
+measureText self text
+  = liftDOM
+      ((self ^. jsf "measureText" [toJSVal text]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setAlpha Mozilla CanvasRenderingContext2D.setAlpha documentation> 
+setAlpha ::
+         (MonadDOM m) => CanvasRenderingContext2D -> Float -> m ()
+setAlpha self alpha
+  = liftDOM (void (self ^. jsf "setAlpha" [toJSVal alpha]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setCompositeOperation Mozilla CanvasRenderingContext2D.setCompositeOperation documentation> 
+setCompositeOperation ::
+                      (MonadDOM m, ToJSString compositeOperation) =>
+                        CanvasRenderingContext2D -> compositeOperation -> m ()
+setCompositeOperation self compositeOperation
+  = liftDOM
+      (void
+         (self ^. jsf "setCompositeOperation" [toJSVal compositeOperation]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setLineWidth Mozilla CanvasRenderingContext2D.setLineWidth documentation> 
+setLineWidthFunction ::
+                     (MonadDOM m) => CanvasRenderingContext2D -> Float -> m ()
+setLineWidthFunction self width
+  = liftDOM (void (self ^. jsf "setLineWidth" [toJSVal width]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setLineCap Mozilla CanvasRenderingContext2D.setLineCap documentation> 
+setLineCapFunction ::
+                   (MonadDOM m, ToJSString cap) =>
+                     CanvasRenderingContext2D -> cap -> m ()
+setLineCapFunction self cap
+  = liftDOM (void (self ^. jsf "setLineCap" [toJSVal cap]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setLineJoin Mozilla CanvasRenderingContext2D.setLineJoin documentation> 
+setLineJoinFunction ::
+                    (MonadDOM m, ToJSString join) =>
+                      CanvasRenderingContext2D -> join -> m ()
+setLineJoinFunction self join
+  = liftDOM (void (self ^. jsf "setLineJoin" [toJSVal join]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setMiterLimit Mozilla CanvasRenderingContext2D.setMiterLimit documentation> 
+setMiterLimitFunction ::
+                      (MonadDOM m) => CanvasRenderingContext2D -> Float -> m ()
+setMiterLimitFunction self limit
+  = liftDOM (void (self ^. jsf "setMiterLimit" [toJSVal limit]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.clearShadow Mozilla CanvasRenderingContext2D.clearShadow documentation> 
+clearShadow :: (MonadDOM m) => CanvasRenderingContext2D -> m ()
+clearShadow self = liftDOM (void (self ^. js "clearShadow"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.fillText Mozilla CanvasRenderingContext2D.fillText documentation> 
+fillText ::
+         (MonadDOM m, ToJSString text) =>
+           CanvasRenderingContext2D -> text -> Float -> Float -> Float -> m ()
+fillText self text x y maxWidth
+  = liftDOM
+      (void
+         (self ^. jsf "fillText"
+            [toJSVal text, toJSVal x, toJSVal y, toJSVal maxWidth]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.strokeText Mozilla CanvasRenderingContext2D.strokeText documentation> 
+strokeText ::
+           (MonadDOM m, ToJSString text) =>
+             CanvasRenderingContext2D -> text -> Float -> Float -> Float -> m ()
+strokeText self text x y maxWidth
+  = liftDOM
+      (void
+         (self ^. jsf "strokeText"
+            [toJSVal text, toJSVal x, toJSVal y, toJSVal maxWidth]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setStrokeColor Mozilla CanvasRenderingContext2D.setStrokeColor documentation> 
+setStrokeColor ::
+               (MonadDOM m, ToJSString color) =>
+                 CanvasRenderingContext2D -> color -> Float -> m ()
+setStrokeColor self color alpha
+  = liftDOM
+      (void
+         (self ^. jsf "setStrokeColor" [toJSVal color, toJSVal alpha]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setStrokeColor Mozilla CanvasRenderingContext2D.setStrokeColor documentation> 
+setStrokeColorGray ::
+                   (MonadDOM m) => CanvasRenderingContext2D -> Float -> Float -> m ()
+setStrokeColorGray self grayLevel alpha
+  = liftDOM
+      (void
+         (self ^. jsf "setStrokeColor" [toJSVal grayLevel, toJSVal alpha]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setStrokeColor Mozilla CanvasRenderingContext2D.setStrokeColor documentation> 
+setStrokeColorRGB ::
+                  (MonadDOM m) =>
+                    CanvasRenderingContext2D ->
+                      Float -> Float -> Float -> Float -> m ()
+setStrokeColorRGB self r g b a
+  = liftDOM
+      (void
+         (self ^. jsf "setStrokeColor"
+            [toJSVal r, toJSVal g, toJSVal b, toJSVal a]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setStrokeColor Mozilla CanvasRenderingContext2D.setStrokeColor documentation> 
+setStrokeColorCYMK ::
+                   (MonadDOM m) =>
+                     CanvasRenderingContext2D ->
+                       Float -> Float -> Float -> Float -> Float -> m ()
+setStrokeColorCYMK self c m y k a
+  = liftDOM
+      (void
+         (self ^. jsf "setStrokeColor"
+            [toJSVal c, toJSVal m, toJSVal y, toJSVal k, toJSVal a]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setFillColor Mozilla CanvasRenderingContext2D.setFillColor documentation> 
+setFillColor ::
+             (MonadDOM m, ToJSString color) =>
+               CanvasRenderingContext2D -> color -> Float -> m ()
+setFillColor self color alpha
+  = liftDOM
+      (void (self ^. jsf "setFillColor" [toJSVal color, toJSVal alpha]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setFillColor Mozilla CanvasRenderingContext2D.setFillColor documentation> 
+setFillColorGray ::
+                 (MonadDOM m) => CanvasRenderingContext2D -> Float -> Float -> m ()
+setFillColorGray self grayLevel alpha
+  = liftDOM
+      (void
+         (self ^. jsf "setFillColor" [toJSVal grayLevel, toJSVal alpha]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setFillColor Mozilla CanvasRenderingContext2D.setFillColor documentation> 
+setFillColorRGB ::
+                (MonadDOM m) =>
+                  CanvasRenderingContext2D ->
+                    Float -> Float -> Float -> Float -> m ()
+setFillColorRGB self r g b a
+  = liftDOM
+      (void
+         (self ^. jsf "setFillColor"
+            [toJSVal r, toJSVal g, toJSVal b, toJSVal a]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setFillColor Mozilla CanvasRenderingContext2D.setFillColor documentation> 
+setFillColorCYMK ::
+                 (MonadDOM m) =>
+                   CanvasRenderingContext2D ->
+                     Float -> Float -> Float -> Float -> Float -> m ()
+setFillColorCYMK self c m y k a
+  = liftDOM
+      (void
+         (self ^. jsf "setFillColor"
+            [toJSVal c, toJSVal m, toJSVal y, toJSVal k, toJSVal a]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.strokeRect Mozilla CanvasRenderingContext2D.strokeRect documentation> 
+strokeRect ::
+           (MonadDOM m) =>
+             CanvasRenderingContext2D ->
+               Float -> Float -> Float -> Float -> m ()
+strokeRect self x y width height
+  = liftDOM
+      (void
+         (self ^. jsf "strokeRect"
+            [toJSVal x, toJSVal y, toJSVal width, toJSVal height]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.drawImage Mozilla CanvasRenderingContext2D.drawImage documentation> 
+drawImage ::
+          (MonadDOM m) =>
+            CanvasRenderingContext2D ->
+              Maybe HTMLImageElement -> Float -> Float -> m ()
+drawImage self image x y
+  = liftDOM
+      (void
+         (self ^. jsf "drawImage" [toJSVal image, toJSVal x, toJSVal y]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.drawImage Mozilla CanvasRenderingContext2D.drawImage documentation> 
+drawImageScaled ::
+                (MonadDOM m) =>
+                  CanvasRenderingContext2D ->
+                    Maybe HTMLImageElement -> Float -> Float -> Float -> Float -> m ()
+drawImageScaled self image x y width height
+  = liftDOM
+      (void
+         (self ^. jsf "drawImage"
+            [toJSVal image, toJSVal x, toJSVal y, toJSVal width,
+             toJSVal height]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.drawImage Mozilla CanvasRenderingContext2D.drawImage documentation> 
+drawImagePart ::
+              (MonadDOM m) =>
+                CanvasRenderingContext2D ->
+                  Maybe HTMLImageElement ->
+                    Float ->
+                      Float -> Float -> Float -> Float -> Float -> Float -> Float -> m ()
+drawImagePart self image sx sy sw sh dx dy dw dh
+  = liftDOM
+      (void
+         (self ^. jsf "drawImage"
+            [toJSVal image, toJSVal sx, toJSVal sy, toJSVal sw, toJSVal sh,
+             toJSVal dx, toJSVal dy, toJSVal dw, toJSVal dh]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.drawImage Mozilla CanvasRenderingContext2D.drawImage documentation> 
+drawImageFromCanvas ::
+                    (MonadDOM m) =>
+                      CanvasRenderingContext2D ->
+                        Maybe HTMLCanvasElement -> Float -> Float -> m ()
+drawImageFromCanvas self canvas x y
+  = liftDOM
+      (void
+         (self ^. jsf "drawImage" [toJSVal canvas, toJSVal x, toJSVal y]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.drawImage Mozilla CanvasRenderingContext2D.drawImage documentation> 
+drawImageFromCanvasScaled ::
+                          (MonadDOM m) =>
+                            CanvasRenderingContext2D ->
+                              Maybe HTMLCanvasElement -> Float -> Float -> Float -> Float -> m ()
+drawImageFromCanvasScaled self canvas x y width height
+  = liftDOM
+      (void
+         (self ^. jsf "drawImage"
+            [toJSVal canvas, toJSVal x, toJSVal y, toJSVal width,
+             toJSVal height]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.drawImage Mozilla CanvasRenderingContext2D.drawImage documentation> 
+drawImageFromCanvasPart ::
+                        (MonadDOM m) =>
+                          CanvasRenderingContext2D ->
+                            Maybe HTMLCanvasElement ->
+                              Float ->
+                                Float -> Float -> Float -> Float -> Float -> Float -> Float -> m ()
+drawImageFromCanvasPart self canvas sx sy sw sh dx dy dw dh
+  = liftDOM
+      (void
+         (self ^. jsf "drawImage"
+            [toJSVal canvas, toJSVal sx, toJSVal sy, toJSVal sw, toJSVal sh,
+             toJSVal dx, toJSVal dy, toJSVal dw, toJSVal dh]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.drawImage Mozilla CanvasRenderingContext2D.drawImage documentation> 
+drawImageFromVideo ::
+                   (MonadDOM m) =>
+                     CanvasRenderingContext2D ->
+                       Maybe HTMLVideoElement -> Float -> Float -> m ()
+drawImageFromVideo self video x y
+  = liftDOM
+      (void
+         (self ^. jsf "drawImage" [toJSVal video, toJSVal x, toJSVal y]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.drawImage Mozilla CanvasRenderingContext2D.drawImage documentation> 
+drawImageFromVideoScaled ::
+                         (MonadDOM m) =>
+                           CanvasRenderingContext2D ->
+                             Maybe HTMLVideoElement -> Float -> Float -> Float -> Float -> m ()
+drawImageFromVideoScaled self video x y width height
+  = liftDOM
+      (void
+         (self ^. jsf "drawImage"
+            [toJSVal video, toJSVal x, toJSVal y, toJSVal width,
+             toJSVal height]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.drawImage Mozilla CanvasRenderingContext2D.drawImage documentation> 
+drawImageFromVideoPart ::
+                       (MonadDOM m) =>
+                         CanvasRenderingContext2D ->
+                           Maybe HTMLVideoElement ->
+                             Float ->
+                               Float -> Float -> Float -> Float -> Float -> Float -> Float -> m ()
+drawImageFromVideoPart self video sx sy sw sh dx dy dw dh
+  = liftDOM
+      (void
+         (self ^. jsf "drawImage"
+            [toJSVal video, toJSVal sx, toJSVal sy, toJSVal sw, toJSVal sh,
+             toJSVal dx, toJSVal dy, toJSVal dw, toJSVal dh]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.drawImageFromRect Mozilla CanvasRenderingContext2D.drawImageFromRect documentation> 
+drawImageFromRect ::
+                  (MonadDOM m, ToJSString compositeOperation) =>
+                    CanvasRenderingContext2D ->
+                      Maybe HTMLImageElement ->
+                        Float ->
+                          Float ->
+                            Float ->
+                              Float ->
+                                Float -> Float -> Float -> Float -> compositeOperation -> m ()
+drawImageFromRect self image sx sy sw sh dx dy dw dh
+  compositeOperation
+  = liftDOM
+      (void
+         (self ^. jsf "drawImageFromRect"
+            [toJSVal image, toJSVal sx, toJSVal sy, toJSVal sw, toJSVal sh,
+             toJSVal dx, toJSVal dy, toJSVal dw, toJSVal dh,
+             toJSVal compositeOperation]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setShadow Mozilla CanvasRenderingContext2D.setShadow documentation> 
+setShadow ::
+          (MonadDOM m, ToJSString color) =>
+            CanvasRenderingContext2D ->
+              Float -> Float -> Float -> color -> Float -> m ()
+setShadow self width height blur color alpha
+  = liftDOM
+      (void
+         (self ^. jsf "setShadow"
+            [toJSVal width, toJSVal height, toJSVal blur, toJSVal color,
+             toJSVal alpha]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setShadow Mozilla CanvasRenderingContext2D.setShadow documentation> 
+setShadowGray ::
+              (MonadDOM m) =>
+                CanvasRenderingContext2D ->
+                  Float -> Float -> Float -> Float -> Float -> m ()
+setShadowGray self width height blur grayLevel alpha
+  = liftDOM
+      (void
+         (self ^. jsf "setShadow"
+            [toJSVal width, toJSVal height, toJSVal blur, toJSVal grayLevel,
+             toJSVal alpha]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setShadow Mozilla CanvasRenderingContext2D.setShadow documentation> 
+setShadowRGB ::
+             (MonadDOM m) =>
+               CanvasRenderingContext2D ->
+                 Float -> Float -> Float -> Float -> Float -> Float -> Float -> m ()
+setShadowRGB self width height blur r g b a
+  = liftDOM
+      (void
+         (self ^. jsf "setShadow"
+            [toJSVal width, toJSVal height, toJSVal blur, toJSVal r, toJSVal g,
+             toJSVal b, toJSVal a]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setShadow Mozilla CanvasRenderingContext2D.setShadow documentation> 
+setShadowCYMK ::
+              (MonadDOM m) =>
+                CanvasRenderingContext2D ->
+                  Float ->
+                    Float -> Float -> Float -> Float -> Float -> Float -> Float -> m ()
+setShadowCYMK self width height blur c m y k a
+  = liftDOM
+      (void
+         (self ^. jsf "setShadow"
+            [toJSVal width, toJSVal height, toJSVal blur, toJSVal c, toJSVal m,
+             toJSVal y, toJSVal k, toJSVal a]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.putImageData Mozilla CanvasRenderingContext2D.putImageData documentation> 
+putImageData ::
+             (MonadDOM m) =>
+               CanvasRenderingContext2D ->
+                 Maybe ImageData -> Float -> Float -> m ()
+putImageData self imagedata dx dy
+  = liftDOM
+      (void
+         (self ^. jsf "putImageData"
+            [toJSVal imagedata, toJSVal dx, toJSVal dy]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.putImageData Mozilla CanvasRenderingContext2D.putImageData documentation> 
+putImageDataDirty ::
+                  (MonadDOM m) =>
+                    CanvasRenderingContext2D ->
+                      Maybe ImageData ->
+                        Float -> Float -> Float -> Float -> Float -> Float -> m ()
+putImageDataDirty self imagedata dx dy dirtyX dirtyY dirtyWidth
+  dirtyHeight
+  = liftDOM
+      (void
+         (self ^. jsf "putImageData"
+            [toJSVal imagedata, toJSVal dx, toJSVal dy, toJSVal dirtyX,
+             toJSVal dirtyY, toJSVal dirtyWidth, toJSVal dirtyHeight]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.webkitPutImageDataHD Mozilla CanvasRenderingContext2D.webkitPutImageDataHD documentation> 
+webkitPutImageDataHD ::
+                     (MonadDOM m) =>
+                       CanvasRenderingContext2D ->
+                         Maybe ImageData -> Float -> Float -> m ()
+webkitPutImageDataHD self imagedata dx dy
+  = liftDOM
+      (void
+         (self ^. jsf "webkitPutImageDataHD"
+            [toJSVal imagedata, toJSVal dx, toJSVal dy]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.webkitPutImageDataHD Mozilla CanvasRenderingContext2D.webkitPutImageDataHD documentation> 
+webkitPutImageDataHDDirty ::
+                          (MonadDOM m) =>
+                            CanvasRenderingContext2D ->
+                              Maybe ImageData ->
+                                Float -> Float -> Float -> Float -> Float -> Float -> m ()
+webkitPutImageDataHDDirty self imagedata dx dy dirtyX dirtyY
+  dirtyWidth dirtyHeight
+  = liftDOM
+      (void
+         (self ^. jsf "webkitPutImageDataHD"
+            [toJSVal imagedata, toJSVal dx, toJSVal dy, toJSVal dirtyX,
+             toJSVal dirtyY, toJSVal dirtyWidth, toJSVal dirtyHeight]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.createPattern Mozilla CanvasRenderingContext2D.createPattern documentation> 
+createPatternFromCanvas ::
+                        (MonadDOM m, ToJSString repetitionType) =>
+                          CanvasRenderingContext2D ->
+                            Maybe HTMLCanvasElement ->
+                              Maybe repetitionType -> m (Maybe CanvasPattern)
+createPatternFromCanvas self canvas repetitionType
+  = liftDOM
+      ((self ^. jsf "createPattern"
+          [toJSVal canvas, toJSVal repetitionType])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.createPattern Mozilla CanvasRenderingContext2D.createPattern documentation> 
+createPattern ::
+              (MonadDOM m, ToJSString repetitionType) =>
+                CanvasRenderingContext2D ->
+                  Maybe HTMLImageElement ->
+                    Maybe repetitionType -> m (Maybe CanvasPattern)
+createPattern self image repetitionType
+  = liftDOM
+      ((self ^. jsf "createPattern"
+          [toJSVal image, toJSVal repetitionType])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.createImageData Mozilla CanvasRenderingContext2D.createImageData documentation> 
+createImageData ::
+                (MonadDOM m) =>
+                  CanvasRenderingContext2D -> Maybe ImageData -> m (Maybe ImageData)
+createImageData self imagedata
+  = liftDOM
+      ((self ^. jsf "createImageData" [toJSVal imagedata]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.createImageData Mozilla CanvasRenderingContext2D.createImageData documentation> 
+createImageDataSize ::
+                    (MonadDOM m) =>
+                      CanvasRenderingContext2D -> Float -> Float -> m (Maybe ImageData)
+createImageDataSize self sw sh
+  = liftDOM
+      ((self ^. jsf "createImageData" [toJSVal sw, toJSVal sh]) >>=
+         fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.getImageData Mozilla CanvasRenderingContext2D.getImageData documentation> 
+getImageData ::
+             (MonadDOM m) =>
+               CanvasRenderingContext2D ->
+                 Float -> Float -> Float -> Float -> m (Maybe ImageData)
+getImageData self sx sy sw sh
+  = liftDOM
+      ((self ^. jsf "getImageData"
+          [toJSVal sx, toJSVal sy, toJSVal sw, toJSVal sh])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.webkitGetImageDataHD Mozilla CanvasRenderingContext2D.webkitGetImageDataHD documentation> 
+webkitGetImageDataHD ::
+                     (MonadDOM m) =>
+                       CanvasRenderingContext2D ->
+                         Float -> Float -> Float -> Float -> m (Maybe ImageData)
+webkitGetImageDataHD self sx sy sw sh
+  = liftDOM
+      ((self ^. jsf "webkitGetImageDataHD"
+          [toJSVal sx, toJSVal sy, toJSVal sw, toJSVal sh])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.drawFocusIfNeeded Mozilla CanvasRenderingContext2D.drawFocusIfNeeded documentation> 
+drawFocusIfNeeded ::
+                  (MonadDOM m, IsElement element) =>
+                    CanvasRenderingContext2D -> Maybe element -> m ()
+drawFocusIfNeeded self element
+  = liftDOM
+      (void (self ^. jsf "drawFocusIfNeeded" [toJSVal element]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.drawFocusIfNeeded Mozilla CanvasRenderingContext2D.drawFocusIfNeeded documentation> 
+drawFocusIfNeededPath ::
+                      (MonadDOM m, IsElement element) =>
+                        CanvasRenderingContext2D -> Maybe Path2D -> Maybe element -> m ()
+drawFocusIfNeededPath self path element
+  = liftDOM
+      (void
+         (self ^. jsf "drawFocusIfNeeded" [toJSVal path, toJSVal element]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.globalAlpha Mozilla CanvasRenderingContext2D.globalAlpha documentation> 
+setGlobalAlpha ::
+               (MonadDOM m) => CanvasRenderingContext2D -> Float -> m ()
+setGlobalAlpha self val
+  = liftDOM (self ^. jss "globalAlpha" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.globalAlpha Mozilla CanvasRenderingContext2D.globalAlpha documentation> 
+getGlobalAlpha ::
+               (MonadDOM m) => CanvasRenderingContext2D -> m Float
+getGlobalAlpha self
+  = liftDOM
+      (realToFrac <$> ((self ^. js "globalAlpha") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.globalCompositeOperation Mozilla CanvasRenderingContext2D.globalCompositeOperation documentation> 
+setGlobalCompositeOperation ::
+                            (MonadDOM m, ToJSString val) =>
+                              CanvasRenderingContext2D -> Maybe val -> m ()
+setGlobalCompositeOperation self val
+  = liftDOM (self ^. jss "globalCompositeOperation" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.globalCompositeOperation Mozilla CanvasRenderingContext2D.globalCompositeOperation documentation> 
+getGlobalCompositeOperation ::
+                            (MonadDOM m, FromJSString result) =>
+                              CanvasRenderingContext2D -> m (Maybe result)
+getGlobalCompositeOperation self
+  = liftDOM
+      ((self ^. js "globalCompositeOperation") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.lineWidth Mozilla CanvasRenderingContext2D.lineWidth documentation> 
+setLineWidth ::
+             (MonadDOM m) => CanvasRenderingContext2D -> Float -> m ()
+setLineWidth self val
+  = liftDOM (self ^. jss "lineWidth" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.lineWidth Mozilla CanvasRenderingContext2D.lineWidth documentation> 
+getLineWidth :: (MonadDOM m) => CanvasRenderingContext2D -> m Float
+getLineWidth self
+  = liftDOM
+      (realToFrac <$> ((self ^. js "lineWidth") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.lineCap Mozilla CanvasRenderingContext2D.lineCap documentation> 
+setLineCap ::
+           (MonadDOM m, ToJSString val) =>
+             CanvasRenderingContext2D -> Maybe val -> m ()
+setLineCap self val = liftDOM (self ^. jss "lineCap" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.lineCap Mozilla CanvasRenderingContext2D.lineCap documentation> 
+getLineCap ::
+           (MonadDOM m, FromJSString result) =>
+             CanvasRenderingContext2D -> m (Maybe result)
+getLineCap self
+  = liftDOM ((self ^. js "lineCap") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.lineJoin Mozilla CanvasRenderingContext2D.lineJoin documentation> 
+setLineJoin ::
+            (MonadDOM m, ToJSString val) =>
+              CanvasRenderingContext2D -> Maybe val -> m ()
+setLineJoin self val
+  = liftDOM (self ^. jss "lineJoin" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.lineJoin Mozilla CanvasRenderingContext2D.lineJoin documentation> 
+getLineJoin ::
+            (MonadDOM m, FromJSString result) =>
+              CanvasRenderingContext2D -> m (Maybe result)
+getLineJoin self
+  = liftDOM ((self ^. js "lineJoin") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.miterLimit Mozilla CanvasRenderingContext2D.miterLimit documentation> 
+setMiterLimit ::
+              (MonadDOM m) => CanvasRenderingContext2D -> Float -> m ()
+setMiterLimit self val
+  = liftDOM (self ^. jss "miterLimit" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.miterLimit Mozilla CanvasRenderingContext2D.miterLimit documentation> 
+getMiterLimit ::
+              (MonadDOM m) => CanvasRenderingContext2D -> m Float
+getMiterLimit self
+  = liftDOM
+      (realToFrac <$> ((self ^. js "miterLimit") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.shadowOffsetX Mozilla CanvasRenderingContext2D.shadowOffsetX documentation> 
+setShadowOffsetX ::
+                 (MonadDOM m) => CanvasRenderingContext2D -> Float -> m ()
+setShadowOffsetX self val
+  = liftDOM (self ^. jss "shadowOffsetX" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.shadowOffsetX Mozilla CanvasRenderingContext2D.shadowOffsetX documentation> 
+getShadowOffsetX ::
+                 (MonadDOM m) => CanvasRenderingContext2D -> m Float
+getShadowOffsetX self
+  = liftDOM
+      (realToFrac <$> ((self ^. js "shadowOffsetX") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.shadowOffsetY Mozilla CanvasRenderingContext2D.shadowOffsetY documentation> 
+setShadowOffsetY ::
+                 (MonadDOM m) => CanvasRenderingContext2D -> Float -> m ()
+setShadowOffsetY self val
+  = liftDOM (self ^. jss "shadowOffsetY" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.shadowOffsetY Mozilla CanvasRenderingContext2D.shadowOffsetY documentation> 
+getShadowOffsetY ::
+                 (MonadDOM m) => CanvasRenderingContext2D -> m Float
+getShadowOffsetY self
+  = liftDOM
+      (realToFrac <$> ((self ^. js "shadowOffsetY") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.shadowBlur Mozilla CanvasRenderingContext2D.shadowBlur documentation> 
+setShadowBlur ::
+              (MonadDOM m) => CanvasRenderingContext2D -> Float -> m ()
+setShadowBlur self val
+  = liftDOM (self ^. jss "shadowBlur" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.shadowBlur Mozilla CanvasRenderingContext2D.shadowBlur documentation> 
+getShadowBlur ::
+              (MonadDOM m) => CanvasRenderingContext2D -> m Float
+getShadowBlur self
+  = liftDOM
+      (realToFrac <$> ((self ^. js "shadowBlur") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.shadowColor Mozilla CanvasRenderingContext2D.shadowColor documentation> 
+setShadowColor ::
+               (MonadDOM m, ToJSString val) =>
+                 CanvasRenderingContext2D -> Maybe val -> m ()
+setShadowColor self val
+  = liftDOM (self ^. jss "shadowColor" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.shadowColor Mozilla CanvasRenderingContext2D.shadowColor documentation> 
+getShadowColor ::
+               (MonadDOM m, FromJSString result) =>
+                 CanvasRenderingContext2D -> m (Maybe result)
+getShadowColor self
+  = liftDOM ((self ^. js "shadowColor") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.lineDashOffset Mozilla CanvasRenderingContext2D.lineDashOffset documentation> 
+setLineDashOffset ::
+                  (MonadDOM m) => CanvasRenderingContext2D -> Float -> m ()
+setLineDashOffset self val
+  = liftDOM (self ^. jss "lineDashOffset" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.lineDashOffset Mozilla CanvasRenderingContext2D.lineDashOffset documentation> 
+getLineDashOffset ::
+                  (MonadDOM m) => CanvasRenderingContext2D -> m Float
+getLineDashOffset self
+  = liftDOM
+      (realToFrac <$> ((self ^. js "lineDashOffset") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.webkitLineDash Mozilla CanvasRenderingContext2D.webkitLineDash documentation> 
+setWebkitLineDash ::
+                  (MonadDOM m, IsArray val) =>
+                    CanvasRenderingContext2D -> Maybe val -> m ()
+setWebkitLineDash self val
+  = liftDOM (self ^. jss "webkitLineDash" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.webkitLineDash Mozilla CanvasRenderingContext2D.webkitLineDash documentation> 
+getWebkitLineDash ::
+                  (MonadDOM m) => CanvasRenderingContext2D -> m (Maybe Array)
+getWebkitLineDash self
+  = liftDOM ((self ^. js "webkitLineDash") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.webkitLineDashOffset Mozilla CanvasRenderingContext2D.webkitLineDashOffset documentation> 
+setWebkitLineDashOffset ::
+                        (MonadDOM m) => CanvasRenderingContext2D -> Float -> m ()
+setWebkitLineDashOffset self val
+  = liftDOM (self ^. jss "webkitLineDashOffset" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.webkitLineDashOffset Mozilla CanvasRenderingContext2D.webkitLineDashOffset documentation> 
+getWebkitLineDashOffset ::
+                        (MonadDOM m) => CanvasRenderingContext2D -> m Float
+getWebkitLineDashOffset self
+  = liftDOM
+      (realToFrac <$>
+         ((self ^. js "webkitLineDashOffset") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.font Mozilla CanvasRenderingContext2D.font documentation> 
+setFont ::
+        (MonadDOM m, ToJSString val) =>
+          CanvasRenderingContext2D -> val -> m ()
+setFont self val = liftDOM (self ^. jss "font" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.font Mozilla CanvasRenderingContext2D.font documentation> 
+getFont ::
+        (MonadDOM m, FromJSString result) =>
+          CanvasRenderingContext2D -> m result
+getFont self = liftDOM ((self ^. js "font") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.textAlign Mozilla CanvasRenderingContext2D.textAlign documentation> 
+setTextAlign ::
+             (MonadDOM m, ToJSString val) =>
+               CanvasRenderingContext2D -> val -> m ()
+setTextAlign self val
+  = liftDOM (self ^. jss "textAlign" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.textAlign Mozilla CanvasRenderingContext2D.textAlign documentation> 
+getTextAlign ::
+             (MonadDOM m, FromJSString result) =>
+               CanvasRenderingContext2D -> m result
+getTextAlign self
+  = liftDOM ((self ^. js "textAlign") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.textBaseline Mozilla CanvasRenderingContext2D.textBaseline documentation> 
+setTextBaseline ::
+                (MonadDOM m, ToJSString val) =>
+                  CanvasRenderingContext2D -> val -> m ()
+setTextBaseline self val
+  = liftDOM (self ^. jss "textBaseline" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.textBaseline Mozilla CanvasRenderingContext2D.textBaseline documentation> 
+getTextBaseline ::
+                (MonadDOM m, FromJSString result) =>
+                  CanvasRenderingContext2D -> m result
+getTextBaseline self
+  = liftDOM ((self ^. js "textBaseline") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.direction Mozilla CanvasRenderingContext2D.direction documentation> 
+setDirection ::
+             (MonadDOM m, ToJSString val) =>
+               CanvasRenderingContext2D -> val -> m ()
+setDirection self val
+  = liftDOM (self ^. jss "direction" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.direction Mozilla CanvasRenderingContext2D.direction documentation> 
+getDirection ::
+             (MonadDOM m, FromJSString result) =>
+               CanvasRenderingContext2D -> m result
+getDirection self
+  = liftDOM ((self ^. js "direction") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.strokeStyle Mozilla CanvasRenderingContext2D.strokeStyle documentation> 
+setStrokeStyle ::
+               (MonadDOM m, IsCanvasStyle val) =>
+                 CanvasRenderingContext2D -> Maybe val -> m ()
+setStrokeStyle self val
+  = liftDOM (self ^. jss "strokeStyle" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.strokeStyle Mozilla CanvasRenderingContext2D.strokeStyle documentation> 
+getStrokeStyle ::
+               (MonadDOM m) => CanvasRenderingContext2D -> m (Maybe CanvasStyle)
+getStrokeStyle self
+  = liftDOM ((self ^. js "strokeStyle") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.fillStyle Mozilla CanvasRenderingContext2D.fillStyle documentation> 
+setFillStyle ::
+             (MonadDOM m, IsCanvasStyle val) =>
+               CanvasRenderingContext2D -> Maybe val -> m ()
+setFillStyle self val
+  = liftDOM (self ^. jss "fillStyle" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.fillStyle Mozilla CanvasRenderingContext2D.fillStyle documentation> 
+getFillStyle ::
+             (MonadDOM m) => CanvasRenderingContext2D -> m (Maybe CanvasStyle)
+getFillStyle self
+  = liftDOM ((self ^. js "fillStyle") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.webkitBackingStorePixelRatio Mozilla CanvasRenderingContext2D.webkitBackingStorePixelRatio documentation> 
+getWebkitBackingStorePixelRatio ::
+                                (MonadDOM m) => CanvasRenderingContext2D -> m Float
+getWebkitBackingStorePixelRatio self
+  = liftDOM
+      (realToFrac <$>
+         ((self ^. js "webkitBackingStorePixelRatio") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.webkitImageSmoothingEnabled Mozilla CanvasRenderingContext2D.webkitImageSmoothingEnabled documentation> 
+setWebkitImageSmoothingEnabled ::
+                               (MonadDOM m) => CanvasRenderingContext2D -> Bool -> m ()
+setWebkitImageSmoothingEnabled self val
+  = liftDOM (self ^. jss "webkitImageSmoothingEnabled" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.webkitImageSmoothingEnabled Mozilla CanvasRenderingContext2D.webkitImageSmoothingEnabled documentation> 
+getWebkitImageSmoothingEnabled ::
+                               (MonadDOM m) => CanvasRenderingContext2D -> m Bool
+getWebkitImageSmoothingEnabled self
+  = liftDOM
+      ((self ^. js "webkitImageSmoothingEnabled") >>= valToBool)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/CapabilityRange.hs b/src/Language/Javascript/JSaddle/DOM/Generated/CapabilityRange.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/CapabilityRange.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.CapabilityRange
+       (getMax, getMin, getSupported, CapabilityRange,
+        castToCapabilityRange, gTypeCapabilityRange)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CapabilityRange.max Mozilla CapabilityRange.max documentation> 
+getMax :: (MonadDOM m) => CapabilityRange -> m JSVal
+getMax self = liftDOM ((self ^. js "max") >>= toJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CapabilityRange.min Mozilla CapabilityRange.min documentation> 
+getMin :: (MonadDOM m) => CapabilityRange -> m JSVal
+getMin self = liftDOM ((self ^. js "min") >>= toJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CapabilityRange.supported Mozilla CapabilityRange.supported documentation> 
+getSupported :: (MonadDOM m) => CapabilityRange -> m Bool
+getSupported self
+  = liftDOM ((self ^. js "supported") >>= valToBool)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/CharacterData.hs b/src/Language/Javascript/JSaddle/DOM/Generated/CharacterData.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/CharacterData.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.CharacterData
+       (substringData, appendData, insertData, deleteData, replaceData,
+        setData, getData, getLength, CharacterData, castToCharacterData,
+        gTypeCharacterData, IsCharacterData, toCharacterData)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CharacterData.substringData Mozilla CharacterData.substringData documentation> 
+substringData ::
+              (MonadDOM m, IsCharacterData self, FromJSString result) =>
+                self -> Word -> Word -> m (Maybe result)
+substringData self offset length
+  = liftDOM
+      (((toCharacterData self) ^. jsf "substringData"
+          [toJSVal offset, toJSVal length])
+         >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CharacterData.appendData Mozilla CharacterData.appendData documentation> 
+appendData ::
+           (MonadDOM m, IsCharacterData self, ToJSString data') =>
+             self -> data' -> m ()
+appendData self data'
+  = liftDOM
+      (void ((toCharacterData self) ^. jsf "appendData" [toJSVal data']))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CharacterData.insertData Mozilla CharacterData.insertData documentation> 
+insertData ::
+           (MonadDOM m, IsCharacterData self, ToJSString data') =>
+             self -> Word -> data' -> m ()
+insertData self offset data'
+  = liftDOM
+      (void
+         ((toCharacterData self) ^. jsf "insertData"
+            [toJSVal offset, toJSVal data']))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CharacterData.deleteData Mozilla CharacterData.deleteData documentation> 
+deleteData ::
+           (MonadDOM m, IsCharacterData self) => self -> Word -> Word -> m ()
+deleteData self offset length
+  = liftDOM
+      (void
+         ((toCharacterData self) ^. jsf "deleteData"
+            [toJSVal offset, toJSVal length]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CharacterData.replaceData Mozilla CharacterData.replaceData documentation> 
+replaceData ::
+            (MonadDOM m, IsCharacterData self, ToJSString data') =>
+              self -> Word -> Word -> data' -> m ()
+replaceData self offset length data'
+  = liftDOM
+      (void
+         ((toCharacterData self) ^. jsf "replaceData"
+            [toJSVal offset, toJSVal length, toJSVal data']))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CharacterData.data Mozilla CharacterData.data documentation> 
+setData ::
+        (MonadDOM m, IsCharacterData self, ToJSString val) =>
+          self -> Maybe val -> m ()
+setData self val
+  = liftDOM ((toCharacterData self) ^. jss "data" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CharacterData.data Mozilla CharacterData.data documentation> 
+getData ::
+        (MonadDOM m, IsCharacterData self, FromJSString result) =>
+          self -> m (Maybe result)
+getData self
+  = liftDOM
+      (((toCharacterData self) ^. js "data") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CharacterData.length Mozilla CharacterData.length documentation> 
+getLength :: (MonadDOM m, IsCharacterData self) => self -> m Word
+getLength self
+  = liftDOM
+      (round <$>
+         (((toCharacterData self) ^. js "length") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/ChildNode.hs b/src/Language/Javascript/JSaddle/DOM/Generated/ChildNode.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/ChildNode.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.ChildNode
+       (remove, ChildNode, castToChildNode, gTypeChildNode) where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ChildNode.remove Mozilla ChildNode.remove documentation> 
+remove :: (MonadDOM m) => ChildNode -> m ()
+remove self = liftDOM (void (self ^. js "remove"))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/ClientRect.hs b/src/Language/Javascript/JSaddle/DOM/Generated/ClientRect.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/ClientRect.hs
@@ -0,0 +1,46 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.ClientRect
+       (getTop, getRight, getBottom, getLeft, getWidth, getHeight,
+        ClientRect, castToClientRect, gTypeClientRect)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ClientRect.top Mozilla ClientRect.top documentation> 
+getTop :: (MonadDOM m) => ClientRect -> m Float
+getTop self
+  = liftDOM (realToFrac <$> ((self ^. js "top") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ClientRect.right Mozilla ClientRect.right documentation> 
+getRight :: (MonadDOM m) => ClientRect -> m Float
+getRight self
+  = liftDOM (realToFrac <$> ((self ^. js "right") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ClientRect.bottom Mozilla ClientRect.bottom documentation> 
+getBottom :: (MonadDOM m) => ClientRect -> m Float
+getBottom self
+  = liftDOM (realToFrac <$> ((self ^. js "bottom") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ClientRect.left Mozilla ClientRect.left documentation> 
+getLeft :: (MonadDOM m) => ClientRect -> m Float
+getLeft self
+  = liftDOM (realToFrac <$> ((self ^. js "left") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ClientRect.width Mozilla ClientRect.width documentation> 
+getWidth :: (MonadDOM m) => ClientRect -> m Float
+getWidth self
+  = liftDOM (realToFrac <$> ((self ^. js "width") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ClientRect.height Mozilla ClientRect.height documentation> 
+getHeight :: (MonadDOM m) => ClientRect -> m Float
+getHeight self
+  = liftDOM (realToFrac <$> ((self ^. js "height") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/ClientRectList.hs b/src/Language/Javascript/JSaddle/DOM/Generated/ClientRectList.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/ClientRectList.hs
@@ -0,0 +1,27 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.ClientRectList
+       (item, getLength, ClientRectList, castToClientRectList,
+        gTypeClientRectList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ClientRectList.item Mozilla ClientRectList.item documentation> 
+item ::
+     (MonadDOM m) => ClientRectList -> Word -> m (Maybe ClientRect)
+item self index
+  = liftDOM ((self ^. jsf "item" [toJSVal index]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ClientRectList.length Mozilla ClientRectList.length documentation> 
+getLength :: (MonadDOM m) => ClientRectList -> m Word
+getLength self
+  = liftDOM (round <$> ((self ^. js "length") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/CloseEvent.hs b/src/Language/Javascript/JSaddle/DOM/Generated/CloseEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/CloseEvent.hs
@@ -0,0 +1,31 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.CloseEvent
+       (getWasClean, getCode, getReason, CloseEvent, castToCloseEvent,
+        gTypeCloseEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent.wasClean Mozilla CloseEvent.wasClean documentation> 
+getWasClean :: (MonadDOM m) => CloseEvent -> m Bool
+getWasClean self = liftDOM ((self ^. js "wasClean") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent.code Mozilla CloseEvent.code documentation> 
+getCode :: (MonadDOM m) => CloseEvent -> m Word
+getCode self
+  = liftDOM (round <$> ((self ^. js "code") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent.reason Mozilla CloseEvent.reason documentation> 
+getReason ::
+          (MonadDOM m, FromJSString result) => CloseEvent -> m result
+getReason self
+  = liftDOM ((self ^. js "reason") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/CommandLineAPIHost.hs b/src/Language/Javascript/JSaddle/DOM/Generated/CommandLineAPIHost.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/CommandLineAPIHost.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.CommandLineAPIHost
+       (clearConsoleMessages, copyText, inspect, inspectedObject,
+        getEventListeners, databaseId, storageId, CommandLineAPIHost,
+        castToCommandLineAPIHost, gTypeCommandLineAPIHost)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CommandLineAPIHost.clearConsoleMessages Mozilla CommandLineAPIHost.clearConsoleMessages documentation> 
+clearConsoleMessages :: (MonadDOM m) => CommandLineAPIHost -> m ()
+clearConsoleMessages self
+  = liftDOM (void (self ^. js "clearConsoleMessages"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CommandLineAPIHost.copyText Mozilla CommandLineAPIHost.copyText documentation> 
+copyText ::
+         (MonadDOM m, ToJSString text) => CommandLineAPIHost -> text -> m ()
+copyText self text
+  = liftDOM (void (self ^. jsf "copyText" [toJSVal text]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CommandLineAPIHost.inspect Mozilla CommandLineAPIHost.inspect documentation> 
+inspect ::
+        (MonadDOM m) => CommandLineAPIHost -> JSVal -> JSVal -> m ()
+inspect self objectId hints
+  = liftDOM
+      (void (self ^. jsf "inspect" [toJSVal objectId, toJSVal hints]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CommandLineAPIHost.inspectedObject Mozilla CommandLineAPIHost.inspectedObject documentation> 
+inspectedObject ::
+                (MonadDOM m) => CommandLineAPIHost -> Int -> m JSVal
+inspectedObject self num
+  = liftDOM
+      ((self ^. jsf "inspectedObject" [toJSVal num]) >>= toJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CommandLineAPIHost.getEventListeners Mozilla CommandLineAPIHost.getEventListeners documentation> 
+getEventListeners ::
+                  (MonadDOM m, IsNode node) =>
+                    CommandLineAPIHost -> Maybe node -> m (Maybe Array)
+getEventListeners self node
+  = liftDOM
+      ((self ^. jsf "getEventListeners" [toJSVal node]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CommandLineAPIHost.databaseId Mozilla CommandLineAPIHost.databaseId documentation> 
+databaseId ::
+           (MonadDOM m, FromJSString result) =>
+             CommandLineAPIHost -> JSVal -> m result
+databaseId self database
+  = liftDOM
+      ((self ^. jsf "databaseId" [toJSVal database]) >>=
+         fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CommandLineAPIHost.storageId Mozilla CommandLineAPIHost.storageId documentation> 
+storageId ::
+          (MonadDOM m, FromJSString result) =>
+            CommandLineAPIHost -> JSVal -> m result
+storageId self storage
+  = liftDOM
+      ((self ^. jsf "storageId" [toJSVal storage]) >>=
+         fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/Comment.hs b/src/Language/Javascript/JSaddle/DOM/Generated/Comment.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/Comment.hs
@@ -0,0 +1,19 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.Comment
+       (newComment, Comment, castToComment, gTypeComment) where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Comment Mozilla Comment documentation> 
+newComment :: (MonadDOM m, ToJSString data') => data' -> m Comment
+newComment data'
+  = liftDOM (Comment <$> new (jsg "Comment") [toJSVal data'])
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/CompositionEvent.hs b/src/Language/Javascript/JSaddle/DOM/Generated/CompositionEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/CompositionEvent.hs
@@ -0,0 +1,34 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.CompositionEvent
+       (initCompositionEvent, getData, CompositionEvent,
+        castToCompositionEvent, gTypeCompositionEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CompositionEvent.initCompositionEvent Mozilla CompositionEvent.initCompositionEvent documentation> 
+initCompositionEvent ::
+                     (MonadDOM m, ToJSString typeArg, ToJSString dataArg) =>
+                       CompositionEvent ->
+                         typeArg -> Bool -> Bool -> Maybe Window -> dataArg -> m ()
+initCompositionEvent self typeArg canBubbleArg cancelableArg
+  viewArg dataArg
+  = liftDOM
+      (void
+         (self ^. jsf "initCompositionEvent"
+            [toJSVal typeArg, toJSVal canBubbleArg, toJSVal cancelableArg,
+             toJSVal viewArg, toJSVal dataArg]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CompositionEvent.data Mozilla CompositionEvent.data documentation> 
+getData ::
+        (MonadDOM m, FromJSString result) => CompositionEvent -> m result
+getData self = liftDOM ((self ^. js "data") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/ConvolverNode.hs b/src/Language/Javascript/JSaddle/DOM/Generated/ConvolverNode.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/ConvolverNode.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.ConvolverNode
+       (setBuffer, getBuffer, setNormalize, getNormalize, ConvolverNode,
+        castToConvolverNode, gTypeConvolverNode)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ConvolverNode.buffer Mozilla ConvolverNode.buffer documentation> 
+setBuffer ::
+          (MonadDOM m) => ConvolverNode -> Maybe AudioBuffer -> m ()
+setBuffer self val = liftDOM (self ^. jss "buffer" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ConvolverNode.buffer Mozilla ConvolverNode.buffer documentation> 
+getBuffer :: (MonadDOM m) => ConvolverNode -> m (Maybe AudioBuffer)
+getBuffer self = liftDOM ((self ^. js "buffer") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ConvolverNode.normalize Mozilla ConvolverNode.normalize documentation> 
+setNormalize :: (MonadDOM m) => ConvolverNode -> Bool -> m ()
+setNormalize self val
+  = liftDOM (self ^. jss "normalize" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ConvolverNode.normalize Mozilla ConvolverNode.normalize documentation> 
+getNormalize :: (MonadDOM m) => ConvolverNode -> m Bool
+getNormalize self
+  = liftDOM ((self ^. js "normalize") >>= valToBool)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/Coordinates.hs b/src/Language/Javascript/JSaddle/DOM/Generated/Coordinates.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/Coordinates.hs
@@ -0,0 +1,50 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.Coordinates
+       (getLatitude, getLongitude, getAltitude, getAccuracy,
+        getAltitudeAccuracy, getHeading, getSpeed, Coordinates,
+        castToCoordinates, gTypeCoordinates)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Coordinates.latitude Mozilla Coordinates.latitude documentation> 
+getLatitude :: (MonadDOM m) => Coordinates -> m Double
+getLatitude self
+  = liftDOM ((self ^. js "latitude") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Coordinates.longitude Mozilla Coordinates.longitude documentation> 
+getLongitude :: (MonadDOM m) => Coordinates -> m Double
+getLongitude self
+  = liftDOM ((self ^. js "longitude") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Coordinates.altitude Mozilla Coordinates.altitude documentation> 
+getAltitude :: (MonadDOM m) => Coordinates -> m (Maybe Double)
+getAltitude self = liftDOM ((self ^. js "altitude") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Coordinates.accuracy Mozilla Coordinates.accuracy documentation> 
+getAccuracy :: (MonadDOM m) => Coordinates -> m Double
+getAccuracy self
+  = liftDOM ((self ^. js "accuracy") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Coordinates.altitudeAccuracy Mozilla Coordinates.altitudeAccuracy documentation> 
+getAltitudeAccuracy ::
+                    (MonadDOM m) => Coordinates -> m (Maybe Double)
+getAltitudeAccuracy self
+  = liftDOM ((self ^. js "altitudeAccuracy") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Coordinates.heading Mozilla Coordinates.heading documentation> 
+getHeading :: (MonadDOM m) => Coordinates -> m (Maybe Double)
+getHeading self = liftDOM ((self ^. js "heading") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Coordinates.speed Mozilla Coordinates.speed documentation> 
+getSpeed :: (MonadDOM m) => Coordinates -> m (Maybe Double)
+getSpeed self = liftDOM ((self ^. js "speed") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/Counter.hs b/src/Language/Javascript/JSaddle/DOM/Generated/Counter.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/Counter.hs
@@ -0,0 +1,34 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.Counter
+       (getIdentifier, getListStyle, getSeparator, Counter, castToCounter,
+        gTypeCounter)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Counter.identifier Mozilla Counter.identifier documentation> 
+getIdentifier ::
+              (MonadDOM m, FromJSString result) => Counter -> m result
+getIdentifier self
+  = liftDOM ((self ^. js "identifier") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Counter.listStyle Mozilla Counter.listStyle documentation> 
+getListStyle ::
+             (MonadDOM m, FromJSString result) => Counter -> m result
+getListStyle self
+  = liftDOM ((self ^. js "listStyle") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Counter.separator Mozilla Counter.separator documentation> 
+getSeparator ::
+             (MonadDOM m, FromJSString result) => Counter -> m result
+getSeparator self
+  = liftDOM ((self ^. js "separator") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/Crypto.hs b/src/Language/Javascript/JSaddle/DOM/Generated/Crypto.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/Crypto.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.Crypto
+       (getRandomValues, getWebkitSubtle, Crypto, castToCrypto,
+        gTypeCrypto)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Crypto.getRandomValues Mozilla Crypto.getRandomValues documentation> 
+getRandomValues ::
+                (MonadDOM m, IsArrayBufferView array) =>
+                  Crypto -> Maybe array -> m (Maybe ArrayBufferView)
+getRandomValues self array
+  = liftDOM
+      ((self ^. jsf "getRandomValues" [toJSVal array]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Crypto.webkitSubtle Mozilla Crypto.webkitSubtle documentation> 
+getWebkitSubtle :: (MonadDOM m) => Crypto -> m (Maybe SubtleCrypto)
+getWebkitSubtle self
+  = liftDOM ((self ^. js "webkitSubtle") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/CryptoKey.hs b/src/Language/Javascript/JSaddle/DOM/Generated/CryptoKey.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/CryptoKey.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.CryptoKey
+       (getType, getExtractable, getAlgorithm, getUsages, CryptoKey,
+        castToCryptoKey, gTypeCryptoKey)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CryptoKey.type Mozilla CryptoKey.type documentation> 
+getType :: (MonadDOM m) => CryptoKey -> m KeyType
+getType self = liftDOM ((self ^. js "type") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CryptoKey.extractable Mozilla CryptoKey.extractable documentation> 
+getExtractable :: (MonadDOM m) => CryptoKey -> m Bool
+getExtractable self
+  = liftDOM ((self ^. js "extractable") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CryptoKey.algorithm Mozilla CryptoKey.algorithm documentation> 
+getAlgorithm :: (MonadDOM m) => CryptoKey -> m (Maybe Algorithm)
+getAlgorithm self
+  = liftDOM ((self ^. js "algorithm") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CryptoKey.usages Mozilla CryptoKey.usages documentation> 
+getUsages :: (MonadDOM m) => CryptoKey -> m [KeyUsage]
+getUsages self
+  = liftDOM ((self ^. js "usages") >>= fromJSArrayUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/CryptoKeyPair.hs b/src/Language/Javascript/JSaddle/DOM/Generated/CryptoKeyPair.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/CryptoKeyPair.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.CryptoKeyPair
+       (getPublicKey, getPrivateKey, CryptoKeyPair, castToCryptoKeyPair,
+        gTypeCryptoKeyPair)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CryptoKeyPair.publicKey Mozilla CryptoKeyPair.publicKey documentation> 
+getPublicKey ::
+             (MonadDOM m) => CryptoKeyPair -> m (Maybe CryptoKey)
+getPublicKey self
+  = liftDOM ((self ^. js "publicKey") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CryptoKeyPair.privateKey Mozilla CryptoKeyPair.privateKey documentation> 
+getPrivateKey ::
+              (MonadDOM m) => CryptoKeyPair -> m (Maybe CryptoKey)
+getPrivateKey self
+  = liftDOM ((self ^. js "privateKey") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/CustomEvent.hs b/src/Language/Javascript/JSaddle/DOM/Generated/CustomEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/CustomEvent.hs
@@ -0,0 +1,31 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.CustomEvent
+       (initCustomEvent, getDetail, CustomEvent, castToCustomEvent,
+        gTypeCustomEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent.initCustomEvent Mozilla CustomEvent.initCustomEvent documentation> 
+initCustomEvent ::
+                (MonadDOM m, ToJSString typeArg) =>
+                  CustomEvent -> typeArg -> Bool -> Bool -> JSVal -> m ()
+initCustomEvent self typeArg canBubbleArg cancelableArg detailArg
+  = liftDOM
+      (void
+         (self ^. jsf "initCustomEvent"
+            [toJSVal typeArg, toJSVal canBubbleArg, toJSVal cancelableArg,
+             toJSVal detailArg]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent.detail Mozilla CustomEvent.detail documentation> 
+getDetail :: (MonadDOM m) => CustomEvent -> m JSVal
+getDetail self = liftDOM ((self ^. js "detail") >>= toJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/DOMError.hs b/src/Language/Javascript/JSaddle/DOM/Generated/DOMError.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/DOMError.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.DOMError
+       (getName, DOMError, castToDOMError, gTypeDOMError, IsDOMError,
+        toDOMError)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMError.name Mozilla DOMError.name documentation> 
+getName ::
+        (MonadDOM m, IsDOMError self, FromJSString result) =>
+          self -> m result
+getName self
+  = liftDOM (((toDOMError self) ^. js "name") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/DOMImplementation.hs b/src/Language/Javascript/JSaddle/DOM/Generated/DOMImplementation.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/DOMImplementation.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.DOMImplementation
+       (hasFeature, createDocumentType, createDocument,
+        createCSSStyleSheet, createHTMLDocument, DOMImplementation,
+        castToDOMImplementation, gTypeDOMImplementation)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation.hasFeature Mozilla DOMImplementation.hasFeature documentation> 
+hasFeature ::
+           (MonadDOM m, ToJSString feature, ToJSString version) =>
+             DOMImplementation -> feature -> Maybe version -> m Bool
+hasFeature self feature version
+  = liftDOM
+      ((self ^. jsf "hasFeature" [toJSVal feature, toJSVal version]) >>=
+         valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation.createDocumentType Mozilla DOMImplementation.createDocumentType documentation> 
+createDocumentType ::
+                   (MonadDOM m, ToJSString qualifiedName, ToJSString publicId,
+                    ToJSString systemId) =>
+                     DOMImplementation ->
+                       Maybe qualifiedName ->
+                         Maybe publicId -> Maybe systemId -> m (Maybe DocumentType)
+createDocumentType self qualifiedName publicId systemId
+  = liftDOM
+      ((self ^. jsf "createDocumentType"
+          [toJSVal qualifiedName, toJSVal publicId, toJSVal systemId])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation.createDocument Mozilla DOMImplementation.createDocument documentation> 
+createDocument ::
+               (MonadDOM m, ToJSString namespaceURI, ToJSString qualifiedName) =>
+                 DOMImplementation ->
+                   Maybe namespaceURI ->
+                     Maybe qualifiedName -> Maybe DocumentType -> m (Maybe Document)
+createDocument self namespaceURI qualifiedName doctype
+  = liftDOM
+      ((self ^. jsf "createDocument"
+          [toJSVal namespaceURI, toJSVal qualifiedName, toJSVal doctype])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation.createCSSStyleSheet Mozilla DOMImplementation.createCSSStyleSheet documentation> 
+createCSSStyleSheet ::
+                    (MonadDOM m, ToJSString title, ToJSString media) =>
+                      DOMImplementation -> title -> media -> m (Maybe CSSStyleSheet)
+createCSSStyleSheet self title media
+  = liftDOM
+      ((self ^. jsf "createCSSStyleSheet" [toJSVal title, toJSVal media])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation.createHTMLDocument Mozilla DOMImplementation.createHTMLDocument documentation> 
+createHTMLDocument ::
+                   (MonadDOM m, ToJSString title) =>
+                     DOMImplementation -> title -> m (Maybe HTMLDocument)
+createHTMLDocument self title
+  = liftDOM
+      ((self ^. jsf "createHTMLDocument" [toJSVal title]) >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/DOMNamedFlowCollection.hs b/src/Language/Javascript/JSaddle/DOM/Generated/DOMNamedFlowCollection.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/DOMNamedFlowCollection.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.DOMNamedFlowCollection
+       (item, namedItem, getLength, DOMNamedFlowCollection,
+        castToDOMNamedFlowCollection, gTypeDOMNamedFlowCollection)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlowCollection.item Mozilla WebKitNamedFlowCollection.item documentation> 
+item ::
+     (MonadDOM m) =>
+       DOMNamedFlowCollection -> Word -> m (Maybe WebKitNamedFlow)
+item self index
+  = liftDOM ((self ^. jsf "item" [toJSVal index]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlowCollection.namedItem Mozilla WebKitNamedFlowCollection.namedItem documentation> 
+namedItem ::
+          (MonadDOM m, ToJSString name) =>
+            DOMNamedFlowCollection -> name -> m (Maybe WebKitNamedFlow)
+namedItem self name
+  = liftDOM ((self ^. jsf "namedItem" [toJSVal name]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlowCollection.length Mozilla WebKitNamedFlowCollection.length documentation> 
+getLength :: (MonadDOM m) => DOMNamedFlowCollection -> m Word
+getLength self
+  = liftDOM (round <$> ((self ^. js "length") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/DOMParser.hs b/src/Language/Javascript/JSaddle/DOM/Generated/DOMParser.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/DOMParser.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.DOMParser
+       (newDOMParser, parseFromString, DOMParser, castToDOMParser,
+        gTypeDOMParser)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMParser Mozilla DOMParser documentation> 
+newDOMParser :: (MonadDOM m) => m DOMParser
+newDOMParser = liftDOM (DOMParser <$> new (jsg "DOMParser") ())
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMParser.parseFromString Mozilla DOMParser.parseFromString documentation> 
+parseFromString ::
+                (MonadDOM m, ToJSString str, ToJSString contentType) =>
+                  DOMParser -> str -> contentType -> m (Maybe Document)
+parseFromString self str contentType
+  = liftDOM
+      ((self ^. jsf "parseFromString" [toJSVal str, toJSVal contentType])
+         >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/DOMSettableTokenList.hs b/src/Language/Javascript/JSaddle/DOM/Generated/DOMSettableTokenList.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/DOMSettableTokenList.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.DOMSettableTokenList
+       (_get, setValue, getValue, DOMSettableTokenList,
+        castToDOMSettableTokenList, gTypeDOMSettableTokenList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMSettableTokenList._get Mozilla DOMSettableTokenList._get documentation> 
+_get ::
+     (MonadDOM m, FromJSString result) =>
+       DOMSettableTokenList -> Word -> m (Maybe result)
+_get self index
+  = liftDOM
+      ((self ^. jsf "_get" [toJSVal index]) >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMSettableTokenList.value Mozilla DOMSettableTokenList.value documentation> 
+setValue ::
+         (MonadDOM m, ToJSString val) => DOMSettableTokenList -> val -> m ()
+setValue self val = liftDOM (self ^. jss "value" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMSettableTokenList.value Mozilla DOMSettableTokenList.value documentation> 
+getValue ::
+         (MonadDOM m, FromJSString result) =>
+           DOMSettableTokenList -> m result
+getValue self
+  = liftDOM ((self ^. js "value") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/DOMStringList.hs b/src/Language/Javascript/JSaddle/DOM/Generated/DOMStringList.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/DOMStringList.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.DOMStringList
+       (item, contains, getLength, DOMStringList, castToDOMStringList,
+        gTypeDOMStringList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMStringList.item Mozilla DOMStringList.item documentation> 
+item ::
+     (MonadDOM m, FromJSString result) =>
+       DOMStringList -> Word -> m (Maybe result)
+item self index
+  = liftDOM
+      ((self ^. jsf "item" [toJSVal index]) >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMStringList.contains Mozilla DOMStringList.contains documentation> 
+contains ::
+         (MonadDOM m, ToJSString string) =>
+           DOMStringList -> string -> m Bool
+contains self string
+  = liftDOM ((self ^. jsf "contains" [toJSVal string]) >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMStringList.length Mozilla DOMStringList.length documentation> 
+getLength :: (MonadDOM m) => DOMStringList -> m Word
+getLength self
+  = liftDOM (round <$> ((self ^. js "length") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/DOMTokenList.hs b/src/Language/Javascript/JSaddle/DOM/Generated/DOMTokenList.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/DOMTokenList.hs
@@ -0,0 +1,80 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.DOMTokenList
+       (item, contains, add, remove, toggle, toString, getLength,
+        DOMTokenList, castToDOMTokenList, gTypeDOMTokenList,
+        IsDOMTokenList, toDOMTokenList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList.item Mozilla DOMTokenList.item documentation> 
+item ::
+     (MonadDOM m, IsDOMTokenList self, FromJSString result) =>
+       self -> Word -> m (Maybe result)
+item self index
+  = liftDOM
+      (((toDOMTokenList self) ^. jsf "item" [toJSVal index]) >>=
+         fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList.contains Mozilla DOMTokenList.contains documentation> 
+contains ::
+         (MonadDOM m, IsDOMTokenList self, ToJSString token) =>
+           self -> token -> m Bool
+contains self token
+  = liftDOM
+      (((toDOMTokenList self) ^. jsf "contains" [toJSVal token]) >>=
+         valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList.add Mozilla DOMTokenList.add documentation> 
+add ::
+    (MonadDOM m, IsDOMTokenList self, ToJSString tokens,
+     ToJSVal tokens) =>
+      self -> [tokens] -> m ()
+add self tokens
+  = liftDOM
+      (void
+         ((toDOMTokenList self) ^. jsf "add" [toJSVal (array tokens)]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList.remove Mozilla DOMTokenList.remove documentation> 
+remove ::
+       (MonadDOM m, IsDOMTokenList self, ToJSString tokens,
+        ToJSVal tokens) =>
+         self -> [tokens] -> m ()
+remove self tokens
+  = liftDOM
+      (void
+         ((toDOMTokenList self) ^. jsf "remove" [toJSVal (array tokens)]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList.toggle Mozilla DOMTokenList.toggle documentation> 
+toggle ::
+       (MonadDOM m, IsDOMTokenList self, ToJSString token) =>
+         self -> token -> Bool -> m Bool
+toggle self token force
+  = liftDOM
+      (((toDOMTokenList self) ^. jsf "toggle"
+          [toJSVal token, toJSVal force])
+         >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList.toString Mozilla DOMTokenList.toString documentation> 
+toString ::
+         (MonadDOM m, IsDOMTokenList self, FromJSString result) =>
+           self -> m result
+toString self
+  = liftDOM
+      (((toDOMTokenList self) ^. js "toString") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList.length Mozilla DOMTokenList.length documentation> 
+getLength :: (MonadDOM m, IsDOMTokenList self) => self -> m Word
+getLength self
+  = liftDOM
+      (round <$>
+         (((toDOMTokenList self) ^. js "length") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/DataCue.hs b/src/Language/Javascript/JSaddle/DOM/Generated/DataCue.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/DataCue.hs
@@ -0,0 +1,51 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.DataCue
+       (newDataCue, newDataCue', setData, getData, setValue, getValue,
+        getType, DataCue, castToDataCue, gTypeDataCue)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitDataCue Mozilla WebKitDataCue documentation> 
+newDataCue :: (MonadDOM m) => m DataCue
+newDataCue = liftDOM (DataCue <$> new (jsg "DataCue") ())
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitDataCue Mozilla WebKitDataCue documentation> 
+newDataCue' ::
+            (MonadDOM m, ToJSString type') =>
+              Double -> Double -> JSVal -> type' -> m DataCue
+newDataCue' startTime endTime value type'
+  = liftDOM
+      (DataCue <$>
+         new (jsg "DataCue")
+           [toJSVal startTime, toJSVal endTime, toJSVal value, toJSVal type'])
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitDataCue.data Mozilla WebKitDataCue.data documentation> 
+setData ::
+        (MonadDOM m, IsArrayBuffer val) => DataCue -> Maybe val -> m ()
+setData self val = liftDOM (self ^. jss "data" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitDataCue.data Mozilla WebKitDataCue.data documentation> 
+getData :: (MonadDOM m) => DataCue -> m (Maybe ArrayBuffer)
+getData self = liftDOM ((self ^. js "data") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitDataCue.value Mozilla WebKitDataCue.value documentation> 
+setValue :: (MonadDOM m) => DataCue -> JSVal -> m ()
+setValue self val = liftDOM (self ^. jss "value" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitDataCue.value Mozilla WebKitDataCue.value documentation> 
+getValue :: (MonadDOM m) => DataCue -> m JSVal
+getValue self = liftDOM ((self ^. js "value") >>= toJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitDataCue.type Mozilla WebKitDataCue.type documentation> 
+getType :: (MonadDOM m, FromJSString result) => DataCue -> m result
+getType self = liftDOM ((self ^. js "type") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/DataTransfer.hs b/src/Language/Javascript/JSaddle/DOM/Generated/DataTransfer.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/DataTransfer.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.DataTransfer
+       (clearData, getData, setData, setDragImage, setDropEffect,
+        getDropEffect, setEffectAllowed, getEffectAllowed, getTypes,
+        getFiles, getItems, DataTransfer, castToDataTransfer,
+        gTypeDataTransfer)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer.clearData Mozilla DataTransfer.clearData documentation> 
+clearData ::
+          (MonadDOM m, ToJSString type') => DataTransfer -> type' -> m ()
+clearData self type'
+  = liftDOM (void (self ^. jsf "clearData" [toJSVal type']))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer.getData Mozilla DataTransfer.getData documentation> 
+getData ::
+        (MonadDOM m, ToJSString type', FromJSString result) =>
+          DataTransfer -> type' -> m result
+getData self type'
+  = liftDOM
+      ((self ^. jsf "getData" [toJSVal type']) >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer.setData Mozilla DataTransfer.setData documentation> 
+setData ::
+        (MonadDOM m, ToJSString type', ToJSString data') =>
+          DataTransfer -> type' -> data' -> m ()
+setData self type' data'
+  = liftDOM
+      (void (self ^. jsf "setData" [toJSVal type', toJSVal data']))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer.setDragImage Mozilla DataTransfer.setDragImage documentation> 
+setDragImage ::
+             (MonadDOM m, IsElement image) =>
+               DataTransfer -> Maybe image -> Int -> Int -> m ()
+setDragImage self image x y
+  = liftDOM
+      (void
+         (self ^. jsf "setDragImage" [toJSVal image, toJSVal x, toJSVal y]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer.dropEffect Mozilla DataTransfer.dropEffect documentation> 
+setDropEffect ::
+              (MonadDOM m, ToJSString val) => DataTransfer -> val -> m ()
+setDropEffect self val
+  = liftDOM (self ^. jss "dropEffect" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer.dropEffect Mozilla DataTransfer.dropEffect documentation> 
+getDropEffect ::
+              (MonadDOM m, FromJSString result) => DataTransfer -> m result
+getDropEffect self
+  = liftDOM ((self ^. js "dropEffect") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer.effectAllowed Mozilla DataTransfer.effectAllowed documentation> 
+setEffectAllowed ::
+                 (MonadDOM m, ToJSString val) => DataTransfer -> val -> m ()
+setEffectAllowed self val
+  = liftDOM (self ^. jss "effectAllowed" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer.effectAllowed Mozilla DataTransfer.effectAllowed documentation> 
+getEffectAllowed ::
+                 (MonadDOM m, FromJSString result) => DataTransfer -> m result
+getEffectAllowed self
+  = liftDOM ((self ^. js "effectAllowed") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer.types Mozilla DataTransfer.types documentation> 
+getTypes :: (MonadDOM m) => DataTransfer -> m (Maybe Array)
+getTypes self = liftDOM ((self ^. js "types") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer.files Mozilla DataTransfer.files documentation> 
+getFiles :: (MonadDOM m) => DataTransfer -> m (Maybe FileList)
+getFiles self = liftDOM ((self ^. js "files") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer.items Mozilla DataTransfer.items documentation> 
+getItems ::
+         (MonadDOM m) => DataTransfer -> m (Maybe DataTransferItemList)
+getItems self = liftDOM ((self ^. js "items") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/DataTransferItem.hs b/src/Language/Javascript/JSaddle/DOM/Generated/DataTransferItem.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/DataTransferItem.hs
@@ -0,0 +1,37 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.DataTransferItem
+       (getAsString, getAsFile, getKind, getType, DataTransferItem,
+        castToDataTransferItem, gTypeDataTransferItem)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem.getAsString Mozilla DataTransferItem.getAsString documentation> 
+getAsString ::
+            (MonadDOM m, ToJSString callback) =>
+              DataTransferItem -> Maybe (StringCallback callback) -> m ()
+getAsString self callback
+  = liftDOM (void (self ^. jsf "getAsString" [toJSVal callback]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem.getAsFile Mozilla DataTransferItem.getAsFile documentation> 
+getAsFile :: (MonadDOM m) => DataTransferItem -> m (Maybe Blob)
+getAsFile self = liftDOM ((self ^. js "getAsFile") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem.kind Mozilla DataTransferItem.kind documentation> 
+getKind ::
+        (MonadDOM m, FromJSString result) => DataTransferItem -> m result
+getKind self = liftDOM ((self ^. js "kind") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem.type Mozilla DataTransferItem.type documentation> 
+getType ::
+        (MonadDOM m, FromJSString result) => DataTransferItem -> m result
+getType self = liftDOM ((self ^. js "type") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/DataTransferItemList.hs b/src/Language/Javascript/JSaddle/DOM/Generated/DataTransferItemList.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/DataTransferItemList.hs
@@ -0,0 +1,45 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.DataTransferItemList
+       (item, clear, addFile, add, getLength, DataTransferItemList,
+        castToDataTransferItemList, gTypeDataTransferItemList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItemList.item Mozilla DataTransferItemList.item documentation> 
+item ::
+     (MonadDOM m) =>
+       DataTransferItemList -> Word -> m (Maybe DataTransferItem)
+item self index
+  = liftDOM ((self ^. jsf "item" [toJSVal index]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItemList.clear Mozilla DataTransferItemList.clear documentation> 
+clear :: (MonadDOM m) => DataTransferItemList -> m ()
+clear self = liftDOM (void (self ^. js "clear"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItemList.add Mozilla DataTransferItemList.add documentation> 
+addFile ::
+        (MonadDOM m) => DataTransferItemList -> Maybe File -> m ()
+addFile self file
+  = liftDOM (void (self ^. jsf "add" [toJSVal file]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItemList.add Mozilla DataTransferItemList.add documentation> 
+add ::
+    (MonadDOM m, ToJSString data', ToJSString type') =>
+      DataTransferItemList -> data' -> type' -> m ()
+add self data' type'
+  = liftDOM (void (self ^. jsf "add" [toJSVal data', toJSVal type']))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItemList.length Mozilla DataTransferItemList.length documentation> 
+getLength :: (MonadDOM m) => DataTransferItemList -> m Int
+getLength self
+  = liftDOM (round <$> ((self ^. js "length") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/Database.hs b/src/Language/Javascript/JSaddle/DOM/Generated/Database.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/Database.hs
@@ -0,0 +1,64 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.Database
+       (changeVersion, transaction, readTransaction, getVersion, Database,
+        castToDatabase, gTypeDatabase)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Database.changeVersion Mozilla Database.changeVersion documentation> 
+changeVersion ::
+              (MonadDOM m, ToJSString oldVersion, ToJSString newVersion) =>
+                Database ->
+                  oldVersion ->
+                    newVersion ->
+                      Maybe SQLTransactionCallback ->
+                        Maybe SQLTransactionErrorCallback -> Maybe VoidCallback -> m ()
+changeVersion self oldVersion newVersion callback errorCallback
+  successCallback
+  = liftDOM
+      (void
+         (self ^. jsf "changeVersion"
+            [toJSVal oldVersion, toJSVal newVersion, toJSVal callback,
+             toJSVal errorCallback, toJSVal successCallback]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Database.transaction Mozilla Database.transaction documentation> 
+transaction ::
+            (MonadDOM m) =>
+              Database ->
+                Maybe SQLTransactionCallback ->
+                  Maybe SQLTransactionErrorCallback -> Maybe VoidCallback -> m ()
+transaction self callback errorCallback successCallback
+  = liftDOM
+      (void
+         (self ^. jsf "transaction"
+            [toJSVal callback, toJSVal errorCallback,
+             toJSVal successCallback]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Database.readTransaction Mozilla Database.readTransaction documentation> 
+readTransaction ::
+                (MonadDOM m) =>
+                  Database ->
+                    Maybe SQLTransactionCallback ->
+                      Maybe SQLTransactionErrorCallback -> Maybe VoidCallback -> m ()
+readTransaction self callback errorCallback successCallback
+  = liftDOM
+      (void
+         (self ^. jsf "readTransaction"
+            [toJSVal callback, toJSVal errorCallback,
+             toJSVal successCallback]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Database.version Mozilla Database.version documentation> 
+getVersion ::
+           (MonadDOM m, FromJSString result) => Database -> m result
+getVersion self
+  = liftDOM ((self ^. js "version") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/DatabaseCallback.hs b/src/Language/Javascript/JSaddle/DOM/Generated/DatabaseCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/DatabaseCallback.hs
@@ -0,0 +1,46 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.DatabaseCallback
+       (newDatabaseCallback, newDatabaseCallbackSync,
+        newDatabaseCallbackAsync, DatabaseCallback)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DatabaseCallback Mozilla DatabaseCallback documentation> 
+newDatabaseCallback ::
+                    (MonadDOM m) => (Maybe Database -> JSM ()) -> m DatabaseCallback
+newDatabaseCallback callback
+  = liftDOM
+      (DatabaseCallback . Callback <$>
+         function ""
+           (\ _ _ [database] ->
+              fromJSVal database >>= \ database' -> callback database'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DatabaseCallback Mozilla DatabaseCallback documentation> 
+newDatabaseCallbackSync ::
+                        (MonadDOM m) => (Maybe Database -> JSM ()) -> m DatabaseCallback
+newDatabaseCallbackSync callback
+  = liftDOM
+      (DatabaseCallback . Callback <$>
+         function ""
+           (\ _ _ [database] ->
+              fromJSVal database >>= \ database' -> callback database'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DatabaseCallback Mozilla DatabaseCallback documentation> 
+newDatabaseCallbackAsync ::
+                         (MonadDOM m) => (Maybe Database -> JSM ()) -> m DatabaseCallback
+newDatabaseCallbackAsync callback
+  = liftDOM
+      (DatabaseCallback . Callback <$>
+         function ""
+           (\ _ _ [database] ->
+              fromJSVal database >>= \ database' -> callback database'))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/DedicatedWorkerGlobalScope.hs b/src/Language/Javascript/JSaddle/DOM/Generated/DedicatedWorkerGlobalScope.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/DedicatedWorkerGlobalScope.hs
@@ -0,0 +1,30 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.DedicatedWorkerGlobalScope
+       (postMessage, message, DedicatedWorkerGlobalScope,
+        castToDedicatedWorkerGlobalScope, gTypeDedicatedWorkerGlobalScope)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DedicatedWorkerGlobalScope.postMessage Mozilla DedicatedWorkerGlobalScope.postMessage documentation> 
+postMessage ::
+            (MonadDOM m, IsArray messagePorts) =>
+              DedicatedWorkerGlobalScope -> JSVal -> Maybe messagePorts -> m ()
+postMessage self message messagePorts
+  = liftDOM
+      (void
+         (self ^. jsf "postMessage"
+            [toJSVal message, toJSVal messagePorts]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DedicatedWorkerGlobalScope.onmessage Mozilla DedicatedWorkerGlobalScope.onmessage documentation> 
+message :: EventName DedicatedWorkerGlobalScope MessageEvent
+message = unsafeEventName (toJSString "message")
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/DelayNode.hs b/src/Language/Javascript/JSaddle/DOM/Generated/DelayNode.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/DelayNode.hs
@@ -0,0 +1,19 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.DelayNode
+       (getDelayTime, DelayNode, castToDelayNode, gTypeDelayNode) where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DelayNode.delayTime Mozilla DelayNode.delayTime documentation> 
+getDelayTime :: (MonadDOM m) => DelayNode -> m (Maybe AudioParam)
+getDelayTime self
+  = liftDOM ((self ^. js "delayTime") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/DeviceMotionEvent.hs b/src/Language/Javascript/JSaddle/DOM/Generated/DeviceMotionEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/DeviceMotionEvent.hs
@@ -0,0 +1,62 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.DeviceMotionEvent
+       (initDeviceMotionEvent, getAcceleration,
+        getAccelerationIncludingGravity, getRotationRate, getInterval,
+        DeviceMotionEvent, castToDeviceMotionEvent, gTypeDeviceMotionEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEvent.initDeviceMotionEvent Mozilla DeviceMotionEvent.initDeviceMotionEvent documentation> 
+initDeviceMotionEvent ::
+                      (MonadDOM m, ToJSString type', IsAcceleration acceleration,
+                       IsAcceleration accelerationIncludingGravity,
+                       IsRotationRate rotationRate) =>
+                        DeviceMotionEvent ->
+                          type' ->
+                            Bool ->
+                              Bool ->
+                                Maybe acceleration ->
+                                  Maybe accelerationIncludingGravity ->
+                                    Maybe rotationRate -> Double -> m ()
+initDeviceMotionEvent self type' bubbles cancelable acceleration
+  accelerationIncludingGravity rotationRate interval
+  = liftDOM
+      (void
+         (self ^. jsf "initDeviceMotionEvent"
+            [toJSVal type', toJSVal bubbles, toJSVal cancelable,
+             toJSVal acceleration, toJSVal accelerationIncludingGravity,
+             toJSVal rotationRate, toJSVal interval]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEvent.acceleration Mozilla DeviceMotionEvent.acceleration documentation> 
+getAcceleration ::
+                (MonadDOM m) => DeviceMotionEvent -> m (Maybe Acceleration)
+getAcceleration self
+  = liftDOM ((self ^. js "acceleration") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEvent.accelerationIncludingGravity Mozilla DeviceMotionEvent.accelerationIncludingGravity documentation> 
+getAccelerationIncludingGravity ::
+                                (MonadDOM m) => DeviceMotionEvent -> m (Maybe Acceleration)
+getAccelerationIncludingGravity self
+  = liftDOM
+      ((self ^. js "accelerationIncludingGravity") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEvent.rotationRate Mozilla DeviceMotionEvent.rotationRate documentation> 
+getRotationRate ::
+                (MonadDOM m) => DeviceMotionEvent -> m (Maybe RotationRate)
+getRotationRate self
+  = liftDOM ((self ^. js "rotationRate") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEvent.interval Mozilla DeviceMotionEvent.interval documentation> 
+getInterval :: (MonadDOM m) => DeviceMotionEvent -> m Double
+getInterval self
+  = liftDOM ((self ^. js "interval") >>= valToNumber)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/DeviceOrientationEvent.hs b/src/Language/Javascript/JSaddle/DOM/Generated/DeviceOrientationEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/DeviceOrientationEvent.hs
@@ -0,0 +1,46 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.DeviceOrientationEvent
+       (initDeviceOrientationEvent, getAlpha, getBeta, getGamma,
+        getAbsolute, DeviceOrientationEvent, castToDeviceOrientationEvent,
+        gTypeDeviceOrientationEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceOrientationEvent.initDeviceOrientationEvent Mozilla DeviceOrientationEvent.initDeviceOrientationEvent documentation> 
+initDeviceOrientationEvent ::
+                           (MonadDOM m, ToJSString type') =>
+                             DeviceOrientationEvent ->
+                               type' -> Bool -> Bool -> Double -> Double -> Double -> Bool -> m ()
+initDeviceOrientationEvent self type' bubbles cancelable alpha beta
+  gamma absolute
+  = liftDOM
+      (void
+         (self ^. jsf "initDeviceOrientationEvent"
+            [toJSVal type', toJSVal bubbles, toJSVal cancelable, toJSVal alpha,
+             toJSVal beta, toJSVal gamma, toJSVal absolute]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceOrientationEvent.alpha Mozilla DeviceOrientationEvent.alpha documentation> 
+getAlpha :: (MonadDOM m) => DeviceOrientationEvent -> m Double
+getAlpha self = liftDOM ((self ^. js "alpha") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceOrientationEvent.beta Mozilla DeviceOrientationEvent.beta documentation> 
+getBeta :: (MonadDOM m) => DeviceOrientationEvent -> m Double
+getBeta self = liftDOM ((self ^. js "beta") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceOrientationEvent.gamma Mozilla DeviceOrientationEvent.gamma documentation> 
+getGamma :: (MonadDOM m) => DeviceOrientationEvent -> m Double
+getGamma self = liftDOM ((self ^. js "gamma") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceOrientationEvent.absolute Mozilla DeviceOrientationEvent.absolute documentation> 
+getAbsolute :: (MonadDOM m) => DeviceOrientationEvent -> m Bool
+getAbsolute self = liftDOM ((self ^. js "absolute") >>= valToBool)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/DeviceProximityEvent.hs b/src/Language/Javascript/JSaddle/DOM/Generated/DeviceProximityEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/DeviceProximityEvent.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.DeviceProximityEvent
+       (getValue, getMin, getMax, DeviceProximityEvent,
+        castToDeviceProximityEvent, gTypeDeviceProximityEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceProximityEvent.value Mozilla DeviceProximityEvent.value documentation> 
+getValue :: (MonadDOM m) => DeviceProximityEvent -> m Double
+getValue self = liftDOM ((self ^. js "value") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceProximityEvent.min Mozilla DeviceProximityEvent.min documentation> 
+getMin :: (MonadDOM m) => DeviceProximityEvent -> m Double
+getMin self = liftDOM ((self ^. js "min") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceProximityEvent.max Mozilla DeviceProximityEvent.max documentation> 
+getMax :: (MonadDOM m) => DeviceProximityEvent -> m Double
+getMax self = liftDOM ((self ^. js "max") >>= valToNumber)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/Document.hs b/src/Language/Javascript/JSaddle/DOM/Generated/Document.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/Document.hs
@@ -0,0 +1,1169 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.Document
+       (newDocument, createElement, createDocumentFragment,
+        createTextNode, createComment, createCDATASection,
+        createProcessingInstruction, createAttribute,
+        createEntityReference, getElementsByTagName, importNode,
+        createElementNS, createAttributeNS, getElementsByTagNameNS,
+        getElementById, adoptNode, createEvent, createRange,
+        createNodeIterator, createTreeWalker, getOverrideStyle,
+        createExpression, createNSResolver, evaluate, execCommand,
+        queryCommandEnabled, queryCommandIndeterm, queryCommandState,
+        queryCommandSupported, queryCommandValue, getElementsByName,
+        elementFromPoint, caretRangeFromPoint, getSelection,
+        getCSSCanvasContext, getElementsByClassName, hasFocus,
+        querySelector, querySelectorAll, webkitCancelFullScreen,
+        webkitExitFullscreen, exitPointerLock, webkitGetNamedFlows,
+        createTouch, createTouchList, getDoctype, getImplementation,
+        getDocumentElement, getInputEncoding, getXmlEncoding,
+        setXmlVersion, getXmlVersion, setXmlStandalone, getXmlStandalone,
+        getDocumentURI, getDefaultView, getStyleSheets, getContentType,
+        setTitle, getTitle, getReferrer, setDomain, getDomain, getURL,
+        setCookie, getCookie, setBody, getBody, getHead, getImages,
+        getApplets, getLinks, getForms, getAnchors, getLastModified,
+        setLocation, getLocation, setCharset, getCharset,
+        getDefaultCharset, getReadyState, getCharacterSet,
+        getPreferredStylesheetSet, setSelectedStylesheetSet,
+        getSelectedStylesheetSet, getActiveElement, getCompatMode,
+        getWebkitIsFullScreen, getWebkitFullScreenKeyboardInputAllowed,
+        getWebkitCurrentFullScreenElement, getWebkitFullscreenEnabled,
+        getWebkitFullscreenElement, getPointerLockElement, getFonts, abort,
+        blur, change, click, contextMenu, dblClick, drag, dragEnd,
+        dragEnter, dragLeave, dragOver, dragStart, drop, error, focus,
+        input, invalid, keyDown, keyPress, keyUp, load, mouseDown,
+        mouseEnter, mouseLeave, mouseMove, mouseOut, mouseOver, mouseUp,
+        mouseWheel, readyStateChange, scroll, select, submit, wheel,
+        beforeCut, cut, beforeCopy, copy, beforePaste, paste, reset,
+        search, selectStart, selectionchange, touchStart, touchMove,
+        touchEnd, touchCancel, webKitFullscreenChange,
+        webKitFullscreenError, pointerlockchange, pointerlockerror,
+        securitypolicyviolation, webKitWillRevealBottom,
+        webKitWillRevealLeft, webKitWillRevealRight, webKitWillRevealTop,
+        getVisibilityState, getHidden, getSecurityPolicy, getCurrentScript,
+        getOrigin, Document, castToDocument, gTypeDocument, IsDocument,
+        toDocument)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document Mozilla Document documentation> 
+newDocument :: (MonadDOM m) => m Document
+newDocument = liftDOM (Document <$> new (jsg "Document") ())
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createElement Mozilla Document.createElement documentation> 
+createElement ::
+              (MonadDOM m, IsDocument self, ToJSString tagName) =>
+                self -> Maybe tagName -> m (Maybe Element)
+createElement self tagName
+  = liftDOM
+      (((toDocument self) ^. jsf "createElement" [toJSVal tagName]) >>=
+         fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createDocumentFragment Mozilla Document.createDocumentFragment documentation> 
+createDocumentFragment ::
+                       (MonadDOM m, IsDocument self) => self -> m (Maybe DocumentFragment)
+createDocumentFragment self
+  = liftDOM
+      (((toDocument self) ^. js "createDocumentFragment") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createTextNode Mozilla Document.createTextNode documentation> 
+createTextNode ::
+               (MonadDOM m, IsDocument self, ToJSString data') =>
+                 self -> data' -> m (Maybe Text)
+createTextNode self data'
+  = liftDOM
+      (((toDocument self) ^. jsf "createTextNode" [toJSVal data']) >>=
+         fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createComment Mozilla Document.createComment documentation> 
+createComment ::
+              (MonadDOM m, IsDocument self, ToJSString data') =>
+                self -> data' -> m (Maybe Comment)
+createComment self data'
+  = liftDOM
+      (((toDocument self) ^. jsf "createComment" [toJSVal data']) >>=
+         fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createCDATASection Mozilla Document.createCDATASection documentation> 
+createCDATASection ::
+                   (MonadDOM m, IsDocument self, ToJSString data') =>
+                     self -> data' -> m (Maybe CDATASection)
+createCDATASection self data'
+  = liftDOM
+      (((toDocument self) ^. jsf "createCDATASection" [toJSVal data'])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createProcessingInstruction Mozilla Document.createProcessingInstruction documentation> 
+createProcessingInstruction ::
+                            (MonadDOM m, IsDocument self, ToJSString target,
+                             ToJSString data') =>
+                              self -> target -> data' -> m (Maybe ProcessingInstruction)
+createProcessingInstruction self target data'
+  = liftDOM
+      (((toDocument self) ^. jsf "createProcessingInstruction"
+          [toJSVal target, toJSVal data'])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createAttribute Mozilla Document.createAttribute documentation> 
+createAttribute ::
+                (MonadDOM m, IsDocument self, ToJSString name) =>
+                  self -> name -> m (Maybe Attr)
+createAttribute self name
+  = liftDOM
+      (((toDocument self) ^. jsf "createAttribute" [toJSVal name]) >>=
+         fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createEntityReference Mozilla Document.createEntityReference documentation> 
+createEntityReference ::
+                      (MonadDOM m, IsDocument self, ToJSString name) =>
+                        self -> name -> m (Maybe EntityReference)
+createEntityReference self name
+  = liftDOM
+      (((toDocument self) ^. jsf "createEntityReference" [toJSVal name])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getElementsByTagName Mozilla Document.getElementsByTagName documentation> 
+getElementsByTagName ::
+                     (MonadDOM m, IsDocument self, ToJSString tagname) =>
+                       self -> tagname -> m (Maybe NodeList)
+getElementsByTagName self tagname
+  = liftDOM
+      (((toDocument self) ^. jsf "getElementsByTagName"
+          [toJSVal tagname])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.importNode Mozilla Document.importNode documentation> 
+importNode ::
+           (MonadDOM m, IsDocument self, IsNode importedNode) =>
+             self -> Maybe importedNode -> Bool -> m (Maybe Node)
+importNode self importedNode deep
+  = liftDOM
+      (((toDocument self) ^. jsf "importNode"
+          [toJSVal importedNode, toJSVal deep])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createElementNS Mozilla Document.createElementNS documentation> 
+createElementNS ::
+                (MonadDOM m, IsDocument self, ToJSString namespaceURI,
+                 ToJSString qualifiedName) =>
+                  self ->
+                    Maybe namespaceURI -> Maybe qualifiedName -> m (Maybe Element)
+createElementNS self namespaceURI qualifiedName
+  = liftDOM
+      (((toDocument self) ^. jsf "createElementNS"
+          [toJSVal namespaceURI, toJSVal qualifiedName])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createAttributeNS Mozilla Document.createAttributeNS documentation> 
+createAttributeNS ::
+                  (MonadDOM m, IsDocument self, ToJSString namespaceURI,
+                   ToJSString qualifiedName) =>
+                    self -> Maybe namespaceURI -> Maybe qualifiedName -> m (Maybe Attr)
+createAttributeNS self namespaceURI qualifiedName
+  = liftDOM
+      (((toDocument self) ^. jsf "createAttributeNS"
+          [toJSVal namespaceURI, toJSVal qualifiedName])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getElementsByTagNameNS Mozilla Document.getElementsByTagNameNS documentation> 
+getElementsByTagNameNS ::
+                       (MonadDOM m, IsDocument self, ToJSString namespaceURI,
+                        ToJSString localName) =>
+                         self -> Maybe namespaceURI -> localName -> m (Maybe NodeList)
+getElementsByTagNameNS self namespaceURI localName
+  = liftDOM
+      (((toDocument self) ^. jsf "getElementsByTagNameNS"
+          [toJSVal namespaceURI, toJSVal localName])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getElementById Mozilla Document.getElementById documentation> 
+getElementById ::
+               (MonadDOM m, IsDocument self, ToJSString elementId) =>
+                 self -> elementId -> m (Maybe Element)
+getElementById self elementId
+  = liftDOM
+      (((toDocument self) ^. jsf "getElementById" [toJSVal elementId])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.adoptNode Mozilla Document.adoptNode documentation> 
+adoptNode ::
+          (MonadDOM m, IsDocument self, IsNode source) =>
+            self -> Maybe source -> m (Maybe Node)
+adoptNode self source
+  = liftDOM
+      (((toDocument self) ^. jsf "adoptNode" [toJSVal source]) >>=
+         fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createEvent Mozilla Document.createEvent documentation> 
+createEvent ::
+            (MonadDOM m, IsDocument self, ToJSString eventType) =>
+              self -> eventType -> m (Maybe Event)
+createEvent self eventType
+  = liftDOM
+      (((toDocument self) ^. jsf "createEvent" [toJSVal eventType]) >>=
+         fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createRange Mozilla Document.createRange documentation> 
+createRange ::
+            (MonadDOM m, IsDocument self) => self -> m (Maybe Range)
+createRange self
+  = liftDOM (((toDocument self) ^. js "createRange") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createNodeIterator Mozilla Document.createNodeIterator documentation> 
+createNodeIterator ::
+                   (MonadDOM m, IsDocument self, IsNode root) =>
+                     self ->
+                       Maybe root ->
+                         Word -> Maybe NodeFilter -> Bool -> m (Maybe NodeIterator)
+createNodeIterator self root whatToShow filter
+  expandEntityReferences
+  = liftDOM
+      (((toDocument self) ^. jsf "createNodeIterator"
+          [toJSVal root, toJSVal whatToShow, toJSVal filter,
+           toJSVal expandEntityReferences])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createTreeWalker Mozilla Document.createTreeWalker documentation> 
+createTreeWalker ::
+                 (MonadDOM m, IsDocument self, IsNode root) =>
+                   self ->
+                     Maybe root ->
+                       Word -> Maybe NodeFilter -> Bool -> m (Maybe TreeWalker)
+createTreeWalker self root whatToShow filter expandEntityReferences
+  = liftDOM
+      (((toDocument self) ^. jsf "createTreeWalker"
+          [toJSVal root, toJSVal whatToShow, toJSVal filter,
+           toJSVal expandEntityReferences])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getOverrideStyle Mozilla Document.getOverrideStyle documentation> 
+getOverrideStyle ::
+                 (MonadDOM m, IsDocument self, IsElement element,
+                  ToJSString pseudoElement) =>
+                   self ->
+                     Maybe element -> pseudoElement -> m (Maybe CSSStyleDeclaration)
+getOverrideStyle self element pseudoElement
+  = liftDOM
+      (((toDocument self) ^. jsf "getOverrideStyle"
+          [toJSVal element, toJSVal pseudoElement])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createExpression Mozilla Document.createExpression documentation> 
+createExpression ::
+                 (MonadDOM m, IsDocument self, ToJSString expression) =>
+                   self ->
+                     expression -> Maybe XPathNSResolver -> m (Maybe XPathExpression)
+createExpression self expression resolver
+  = liftDOM
+      (((toDocument self) ^. jsf "createExpression"
+          [toJSVal expression, toJSVal resolver])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createNSResolver Mozilla Document.createNSResolver documentation> 
+createNSResolver ::
+                 (MonadDOM m, IsDocument self, IsNode nodeResolver) =>
+                   self -> Maybe nodeResolver -> m (Maybe XPathNSResolver)
+createNSResolver self nodeResolver
+  = liftDOM
+      (((toDocument self) ^. jsf "createNSResolver"
+          [toJSVal nodeResolver])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.evaluate Mozilla Document.evaluate documentation> 
+evaluate ::
+         (MonadDOM m, IsDocument self, ToJSString expression,
+          IsNode contextNode) =>
+           self ->
+             expression ->
+               Maybe contextNode ->
+                 Maybe XPathNSResolver ->
+                   Word -> Maybe XPathResult -> m (Maybe XPathResult)
+evaluate self expression contextNode resolver type' inResult
+  = liftDOM
+      (((toDocument self) ^. jsf "evaluate"
+          [toJSVal expression, toJSVal contextNode, toJSVal resolver,
+           toJSVal type', toJSVal inResult])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.execCommand Mozilla Document.execCommand documentation> 
+execCommand ::
+            (MonadDOM m, IsDocument self, ToJSString command,
+             ToJSString value) =>
+              self -> command -> Bool -> Maybe value -> m Bool
+execCommand self command userInterface value
+  = liftDOM
+      (((toDocument self) ^. jsf "execCommand"
+          [toJSVal command, toJSVal userInterface, toJSVal value])
+         >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.queryCommandEnabled Mozilla Document.queryCommandEnabled documentation> 
+queryCommandEnabled ::
+                    (MonadDOM m, IsDocument self, ToJSString command) =>
+                      self -> command -> m Bool
+queryCommandEnabled self command
+  = liftDOM
+      (((toDocument self) ^. jsf "queryCommandEnabled" [toJSVal command])
+         >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.queryCommandIndeterm Mozilla Document.queryCommandIndeterm documentation> 
+queryCommandIndeterm ::
+                     (MonadDOM m, IsDocument self, ToJSString command) =>
+                       self -> command -> m Bool
+queryCommandIndeterm self command
+  = liftDOM
+      (((toDocument self) ^. jsf "queryCommandIndeterm"
+          [toJSVal command])
+         >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.queryCommandState Mozilla Document.queryCommandState documentation> 
+queryCommandState ::
+                  (MonadDOM m, IsDocument self, ToJSString command) =>
+                    self -> command -> m Bool
+queryCommandState self command
+  = liftDOM
+      (((toDocument self) ^. jsf "queryCommandState" [toJSVal command])
+         >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.queryCommandSupported Mozilla Document.queryCommandSupported documentation> 
+queryCommandSupported ::
+                      (MonadDOM m, IsDocument self, ToJSString command) =>
+                        self -> command -> m Bool
+queryCommandSupported self command
+  = liftDOM
+      (((toDocument self) ^. jsf "queryCommandSupported"
+          [toJSVal command])
+         >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.queryCommandValue Mozilla Document.queryCommandValue documentation> 
+queryCommandValue ::
+                  (MonadDOM m, IsDocument self, ToJSString command,
+                   FromJSString result) =>
+                    self -> command -> m result
+queryCommandValue self command
+  = liftDOM
+      (((toDocument self) ^. jsf "queryCommandValue" [toJSVal command])
+         >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getElementsByName Mozilla Document.getElementsByName documentation> 
+getElementsByName ::
+                  (MonadDOM m, IsDocument self, ToJSString elementName) =>
+                    self -> elementName -> m (Maybe NodeList)
+getElementsByName self elementName
+  = liftDOM
+      (((toDocument self) ^. jsf "getElementsByName"
+          [toJSVal elementName])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.elementFromPoint Mozilla Document.elementFromPoint documentation> 
+elementFromPoint ::
+                 (MonadDOM m, IsDocument self) =>
+                   self -> Int -> Int -> m (Maybe Element)
+elementFromPoint self x y
+  = liftDOM
+      (((toDocument self) ^. jsf "elementFromPoint"
+          [toJSVal x, toJSVal y])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.caretRangeFromPoint Mozilla Document.caretRangeFromPoint documentation> 
+caretRangeFromPoint ::
+                    (MonadDOM m, IsDocument self) =>
+                      self -> Int -> Int -> m (Maybe Range)
+caretRangeFromPoint self x y
+  = liftDOM
+      (((toDocument self) ^. jsf "caretRangeFromPoint"
+          [toJSVal x, toJSVal y])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getSelection Mozilla Document.getSelection documentation> 
+getSelection ::
+             (MonadDOM m, IsDocument self) => self -> m (Maybe Selection)
+getSelection self
+  = liftDOM (((toDocument self) ^. js "getSelection") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getCSSCanvasContext Mozilla Document.getCSSCanvasContext documentation> 
+getCSSCanvasContext ::
+                    (MonadDOM m, IsDocument self, ToJSString contextId,
+                     ToJSString name) =>
+                      self ->
+                        contextId -> name -> Int -> Int -> m (Maybe CanvasRenderingContext)
+getCSSCanvasContext self contextId name width height
+  = liftDOM
+      (((toDocument self) ^. jsf "getCSSCanvasContext"
+          [toJSVal contextId, toJSVal name, toJSVal width, toJSVal height])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getElementsByClassName Mozilla Document.getElementsByClassName documentation> 
+getElementsByClassName ::
+                       (MonadDOM m, IsDocument self, ToJSString tagname) =>
+                         self -> tagname -> m (Maybe NodeList)
+getElementsByClassName self tagname
+  = liftDOM
+      (((toDocument self) ^. jsf "getElementsByClassName"
+          [toJSVal tagname])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.hasFocus Mozilla Document.hasFocus documentation> 
+hasFocus :: (MonadDOM m, IsDocument self) => self -> m Bool
+hasFocus self
+  = liftDOM (((toDocument self) ^. js "hasFocus") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.querySelector Mozilla Document.querySelector documentation> 
+querySelector ::
+              (MonadDOM m, IsDocument self, ToJSString selectors) =>
+                self -> selectors -> m (Maybe Element)
+querySelector self selectors
+  = liftDOM
+      (((toDocument self) ^. jsf "querySelector" [toJSVal selectors]) >>=
+         fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.querySelectorAll Mozilla Document.querySelectorAll documentation> 
+querySelectorAll ::
+                 (MonadDOM m, IsDocument self, ToJSString selectors) =>
+                   self -> selectors -> m (Maybe NodeList)
+querySelectorAll self selectors
+  = liftDOM
+      (((toDocument self) ^. jsf "querySelectorAll" [toJSVal selectors])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.webkitCancelFullScreen Mozilla Document.webkitCancelFullScreen documentation> 
+webkitCancelFullScreen ::
+                       (MonadDOM m, IsDocument self) => self -> m ()
+webkitCancelFullScreen self
+  = liftDOM (void ((toDocument self) ^. js "webkitCancelFullScreen"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.webkitExitFullscreen Mozilla Document.webkitExitFullscreen documentation> 
+webkitExitFullscreen ::
+                     (MonadDOM m, IsDocument self) => self -> m ()
+webkitExitFullscreen self
+  = liftDOM (void ((toDocument self) ^. js "webkitExitFullscreen"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.exitPointerLock Mozilla Document.exitPointerLock documentation> 
+exitPointerLock :: (MonadDOM m, IsDocument self) => self -> m ()
+exitPointerLock self
+  = liftDOM (void ((toDocument self) ^. js "exitPointerLock"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.webkitGetNamedFlows Mozilla Document.webkitGetNamedFlows documentation> 
+webkitGetNamedFlows ::
+                    (MonadDOM m, IsDocument self) =>
+                      self -> m (Maybe DOMNamedFlowCollection)
+webkitGetNamedFlows self
+  = liftDOM
+      (((toDocument self) ^. js "webkitGetNamedFlows") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createTouch Mozilla Document.createTouch documentation> 
+createTouch ::
+            (MonadDOM m, IsDocument self, IsEventTarget target) =>
+              self ->
+                Maybe Window ->
+                  Maybe target ->
+                    Int ->
+                      Int ->
+                        Int ->
+                          Int -> Int -> Int -> Int -> Float -> Float -> m (Maybe Touch)
+createTouch self window target identifier pageX pageY screenX
+  screenY webkitRadiusX webkitRadiusY webkitRotationAngle webkitForce
+  = liftDOM
+      (((toDocument self) ^. jsf "createTouch"
+          [toJSVal window, toJSVal target, toJSVal identifier, toJSVal pageX,
+           toJSVal pageY, toJSVal screenX, toJSVal screenY,
+           toJSVal webkitRadiusX, toJSVal webkitRadiusY,
+           toJSVal webkitRotationAngle, toJSVal webkitForce])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createTouchList Mozilla Document.createTouchList documentation> 
+createTouchList ::
+                (MonadDOM m, IsDocument self) => self -> m (Maybe TouchList)
+createTouchList self
+  = liftDOM
+      (((toDocument self) ^. js "createTouchList") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.doctype Mozilla Document.doctype documentation> 
+getDoctype ::
+           (MonadDOM m, IsDocument self) => self -> m (Maybe DocumentType)
+getDoctype self
+  = liftDOM (((toDocument self) ^. js "doctype") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.implementation Mozilla Document.implementation documentation> 
+getImplementation ::
+                  (MonadDOM m, IsDocument self) =>
+                    self -> m (Maybe DOMImplementation)
+getImplementation self
+  = liftDOM
+      (((toDocument self) ^. js "implementation") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.documentElement Mozilla Document.documentElement documentation> 
+getDocumentElement ::
+                   (MonadDOM m, IsDocument self) => self -> m (Maybe Element)
+getDocumentElement self
+  = liftDOM
+      (((toDocument self) ^. js "documentElement") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.inputEncoding Mozilla Document.inputEncoding documentation> 
+getInputEncoding ::
+                 (MonadDOM m, IsDocument self, FromJSString result) =>
+                   self -> m (Maybe result)
+getInputEncoding self
+  = liftDOM
+      (((toDocument self) ^. js "inputEncoding") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.xmlEncoding Mozilla Document.xmlEncoding documentation> 
+getXmlEncoding ::
+               (MonadDOM m, IsDocument self, FromJSString result) =>
+                 self -> m (Maybe result)
+getXmlEncoding self
+  = liftDOM
+      (((toDocument self) ^. js "xmlEncoding") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.xmlVersion Mozilla Document.xmlVersion documentation> 
+setXmlVersion ::
+              (MonadDOM m, IsDocument self, ToJSString val) =>
+                self -> Maybe val -> m ()
+setXmlVersion self val
+  = liftDOM ((toDocument self) ^. jss "xmlVersion" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.xmlVersion Mozilla Document.xmlVersion documentation> 
+getXmlVersion ::
+              (MonadDOM m, IsDocument self, FromJSString result) =>
+                self -> m (Maybe result)
+getXmlVersion self
+  = liftDOM
+      (((toDocument self) ^. js "xmlVersion") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.xmlStandalone Mozilla Document.xmlStandalone documentation> 
+setXmlStandalone ::
+                 (MonadDOM m, IsDocument self) => self -> Bool -> m ()
+setXmlStandalone self val
+  = liftDOM ((toDocument self) ^. jss "xmlStandalone" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.xmlStandalone Mozilla Document.xmlStandalone documentation> 
+getXmlStandalone :: (MonadDOM m, IsDocument self) => self -> m Bool
+getXmlStandalone self
+  = liftDOM (((toDocument self) ^. js "xmlStandalone") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.documentURI Mozilla Document.documentURI documentation> 
+getDocumentURI ::
+               (MonadDOM m, IsDocument self, FromJSString result) =>
+                 self -> m (Maybe result)
+getDocumentURI self
+  = liftDOM
+      (((toDocument self) ^. js "documentURI") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.defaultView Mozilla Document.defaultView documentation> 
+getDefaultView ::
+               (MonadDOM m, IsDocument self) => self -> m (Maybe Window)
+getDefaultView self
+  = liftDOM (((toDocument self) ^. js "defaultView") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.styleSheets Mozilla Document.styleSheets documentation> 
+getStyleSheets ::
+               (MonadDOM m, IsDocument self) => self -> m (Maybe StyleSheetList)
+getStyleSheets self
+  = liftDOM (((toDocument self) ^. js "styleSheets") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.contentType Mozilla Document.contentType documentation> 
+getContentType ::
+               (MonadDOM m, IsDocument self, FromJSString result) =>
+                 self -> m result
+getContentType self
+  = liftDOM
+      (((toDocument self) ^. js "contentType") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.title Mozilla Document.title documentation> 
+setTitle ::
+         (MonadDOM m, IsDocument self, ToJSString val) =>
+           self -> Maybe val -> m ()
+setTitle self val
+  = liftDOM ((toDocument self) ^. jss "title" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.title Mozilla Document.title documentation> 
+getTitle ::
+         (MonadDOM m, IsDocument self, FromJSString result) =>
+           self -> m (Maybe result)
+getTitle self
+  = liftDOM (((toDocument self) ^. js "title") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.referrer Mozilla Document.referrer documentation> 
+getReferrer ::
+            (MonadDOM m, IsDocument self, FromJSString result) =>
+              self -> m result
+getReferrer self
+  = liftDOM
+      (((toDocument self) ^. js "referrer") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.domain Mozilla Document.domain documentation> 
+setDomain ::
+          (MonadDOM m, IsDocument self, ToJSString val) =>
+            self -> Maybe val -> m ()
+setDomain self val
+  = liftDOM ((toDocument self) ^. jss "domain" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.domain Mozilla Document.domain documentation> 
+getDomain ::
+          (MonadDOM m, IsDocument self, FromJSString result) =>
+            self -> m (Maybe result)
+getDomain self
+  = liftDOM
+      (((toDocument self) ^. js "domain") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.URL Mozilla Document.URL documentation> 
+getURL ::
+       (MonadDOM m, IsDocument self, FromJSString result) =>
+         self -> m result
+getURL self
+  = liftDOM (((toDocument self) ^. js "URL") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.cookie Mozilla Document.cookie documentation> 
+setCookie ::
+          (MonadDOM m, IsDocument self, ToJSString val) =>
+            self -> Maybe val -> m ()
+setCookie self val
+  = liftDOM ((toDocument self) ^. jss "cookie" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.cookie Mozilla Document.cookie documentation> 
+getCookie ::
+          (MonadDOM m, IsDocument self, FromJSString result) =>
+            self -> m (Maybe result)
+getCookie self
+  = liftDOM
+      (((toDocument self) ^. js "cookie") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.body Mozilla Document.body documentation> 
+setBody ::
+        (MonadDOM m, IsDocument self, IsHTMLElement val) =>
+          self -> Maybe val -> m ()
+setBody self val
+  = liftDOM ((toDocument self) ^. jss "body" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.body Mozilla Document.body documentation> 
+getBody ::
+        (MonadDOM m, IsDocument self) => self -> m (Maybe HTMLElement)
+getBody self
+  = liftDOM (((toDocument self) ^. js "body") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.head Mozilla Document.head documentation> 
+getHead ::
+        (MonadDOM m, IsDocument self) => self -> m (Maybe HTMLHeadElement)
+getHead self
+  = liftDOM (((toDocument self) ^. js "head") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.images Mozilla Document.images documentation> 
+getImages ::
+          (MonadDOM m, IsDocument self) => self -> m (Maybe HTMLCollection)
+getImages self
+  = liftDOM (((toDocument self) ^. js "images") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.applets Mozilla Document.applets documentation> 
+getApplets ::
+           (MonadDOM m, IsDocument self) => self -> m (Maybe HTMLCollection)
+getApplets self
+  = liftDOM (((toDocument self) ^. js "applets") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.links Mozilla Document.links documentation> 
+getLinks ::
+         (MonadDOM m, IsDocument self) => self -> m (Maybe HTMLCollection)
+getLinks self
+  = liftDOM (((toDocument self) ^. js "links") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.forms Mozilla Document.forms documentation> 
+getForms ::
+         (MonadDOM m, IsDocument self) => self -> m (Maybe HTMLCollection)
+getForms self
+  = liftDOM (((toDocument self) ^. js "forms") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.anchors Mozilla Document.anchors documentation> 
+getAnchors ::
+           (MonadDOM m, IsDocument self) => self -> m (Maybe HTMLCollection)
+getAnchors self
+  = liftDOM (((toDocument self) ^. js "anchors") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.lastModified Mozilla Document.lastModified documentation> 
+getLastModified ::
+                (MonadDOM m, IsDocument self, FromJSString result) =>
+                  self -> m result
+getLastModified self
+  = liftDOM
+      (((toDocument self) ^. js "lastModified") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.location Mozilla Document.location documentation> 
+setLocation ::
+            (MonadDOM m, IsDocument self) => self -> Maybe Location -> m ()
+setLocation self val
+  = liftDOM ((toDocument self) ^. jss "location" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.location Mozilla Document.location documentation> 
+getLocation ::
+            (MonadDOM m, IsDocument self) => self -> m (Maybe Location)
+getLocation self
+  = liftDOM (((toDocument self) ^. js "location") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.charset Mozilla Document.charset documentation> 
+setCharset ::
+           (MonadDOM m, IsDocument self, ToJSString val) =>
+             self -> Maybe val -> m ()
+setCharset self val
+  = liftDOM ((toDocument self) ^. jss "charset" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.charset Mozilla Document.charset documentation> 
+getCharset ::
+           (MonadDOM m, IsDocument self, FromJSString result) =>
+             self -> m (Maybe result)
+getCharset self
+  = liftDOM
+      (((toDocument self) ^. js "charset") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.defaultCharset Mozilla Document.defaultCharset documentation> 
+getDefaultCharset ::
+                  (MonadDOM m, IsDocument self, FromJSString result) =>
+                    self -> m (Maybe result)
+getDefaultCharset self
+  = liftDOM
+      (((toDocument self) ^. js "defaultCharset") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.readyState Mozilla Document.readyState documentation> 
+getReadyState ::
+              (MonadDOM m, IsDocument self, FromJSString result) =>
+                self -> m (Maybe result)
+getReadyState self
+  = liftDOM
+      (((toDocument self) ^. js "readyState") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.characterSet Mozilla Document.characterSet documentation> 
+getCharacterSet ::
+                (MonadDOM m, IsDocument self, FromJSString result) =>
+                  self -> m (Maybe result)
+getCharacterSet self
+  = liftDOM
+      (((toDocument self) ^. js "characterSet") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.preferredStylesheetSet Mozilla Document.preferredStylesheetSet documentation> 
+getPreferredStylesheetSet ::
+                          (MonadDOM m, IsDocument self, FromJSString result) =>
+                            self -> m (Maybe result)
+getPreferredStylesheetSet self
+  = liftDOM
+      (((toDocument self) ^. js "preferredStylesheetSet") >>=
+         fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.selectedStylesheetSet Mozilla Document.selectedStylesheetSet documentation> 
+setSelectedStylesheetSet ::
+                         (MonadDOM m, IsDocument self, ToJSString val) =>
+                           self -> Maybe val -> m ()
+setSelectedStylesheetSet self val
+  = liftDOM
+      ((toDocument self) ^. jss "selectedStylesheetSet" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.selectedStylesheetSet Mozilla Document.selectedStylesheetSet documentation> 
+getSelectedStylesheetSet ::
+                         (MonadDOM m, IsDocument self, FromJSString result) =>
+                           self -> m (Maybe result)
+getSelectedStylesheetSet self
+  = liftDOM
+      (((toDocument self) ^. js "selectedStylesheetSet") >>=
+         fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.activeElement Mozilla Document.activeElement documentation> 
+getActiveElement ::
+                 (MonadDOM m, IsDocument self) => self -> m (Maybe Element)
+getActiveElement self
+  = liftDOM (((toDocument self) ^. js "activeElement") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.compatMode Mozilla Document.compatMode documentation> 
+getCompatMode ::
+              (MonadDOM m, IsDocument self, FromJSString result) =>
+                self -> m result
+getCompatMode self
+  = liftDOM
+      (((toDocument self) ^. js "compatMode") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.webkitIsFullScreen Mozilla Document.webkitIsFullScreen documentation> 
+getWebkitIsFullScreen ::
+                      (MonadDOM m, IsDocument self) => self -> m Bool
+getWebkitIsFullScreen self
+  = liftDOM
+      (((toDocument self) ^. js "webkitIsFullScreen") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.webkitFullScreenKeyboardInputAllowed Mozilla Document.webkitFullScreenKeyboardInputAllowed documentation> 
+getWebkitFullScreenKeyboardInputAllowed ::
+                                        (MonadDOM m, IsDocument self) => self -> m Bool
+getWebkitFullScreenKeyboardInputAllowed self
+  = liftDOM
+      (((toDocument self) ^. js "webkitFullScreenKeyboardInputAllowed")
+         >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.webkitCurrentFullScreenElement Mozilla Document.webkitCurrentFullScreenElement documentation> 
+getWebkitCurrentFullScreenElement ::
+                                  (MonadDOM m, IsDocument self) => self -> m (Maybe Element)
+getWebkitCurrentFullScreenElement self
+  = liftDOM
+      (((toDocument self) ^. js "webkitCurrentFullScreenElement") >>=
+         fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.webkitFullscreenEnabled Mozilla Document.webkitFullscreenEnabled documentation> 
+getWebkitFullscreenEnabled ::
+                           (MonadDOM m, IsDocument self) => self -> m Bool
+getWebkitFullscreenEnabled self
+  = liftDOM
+      (((toDocument self) ^. js "webkitFullscreenEnabled") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.webkitFullscreenElement Mozilla Document.webkitFullscreenElement documentation> 
+getWebkitFullscreenElement ::
+                           (MonadDOM m, IsDocument self) => self -> m (Maybe Element)
+getWebkitFullscreenElement self
+  = liftDOM
+      (((toDocument self) ^. js "webkitFullscreenElement") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.pointerLockElement Mozilla Document.pointerLockElement documentation> 
+getPointerLockElement ::
+                      (MonadDOM m, IsDocument self) => self -> m (Maybe Element)
+getPointerLockElement self
+  = liftDOM
+      (((toDocument self) ^. js "pointerLockElement") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.fonts Mozilla Document.fonts documentation> 
+getFonts ::
+         (MonadDOM m, IsDocument self) => self -> m (Maybe FontLoader)
+getFonts self
+  = liftDOM (((toDocument self) ^. js "fonts") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onabort Mozilla Document.onabort documentation> 
+abort ::
+      (IsDocument self, IsEventTarget self) => EventName self UIEvent
+abort = unsafeEventName (toJSString "abort")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onblur Mozilla Document.onblur documentation> 
+blur ::
+     (IsDocument self, IsEventTarget self) => EventName self FocusEvent
+blur = unsafeEventName (toJSString "blur")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onchange Mozilla Document.onchange documentation> 
+change ::
+       (IsDocument self, IsEventTarget self) => EventName self Event
+change = unsafeEventName (toJSString "change")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onclick Mozilla Document.onclick documentation> 
+click ::
+      (IsDocument self, IsEventTarget self) => EventName self MouseEvent
+click = unsafeEventName (toJSString "click")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.oncontextmenu Mozilla Document.oncontextmenu documentation> 
+contextMenu ::
+            (IsDocument self, IsEventTarget self) => EventName self MouseEvent
+contextMenu = unsafeEventName (toJSString "contextmenu")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.ondblclick Mozilla Document.ondblclick documentation> 
+dblClick ::
+         (IsDocument self, IsEventTarget self) => EventName self MouseEvent
+dblClick = unsafeEventName (toJSString "dblclick")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.ondrag Mozilla Document.ondrag documentation> 
+drag ::
+     (IsDocument self, IsEventTarget self) => EventName self MouseEvent
+drag = unsafeEventName (toJSString "drag")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.ondragend Mozilla Document.ondragend documentation> 
+dragEnd ::
+        (IsDocument self, IsEventTarget self) => EventName self MouseEvent
+dragEnd = unsafeEventName (toJSString "dragend")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.ondragenter Mozilla Document.ondragenter documentation> 
+dragEnter ::
+          (IsDocument self, IsEventTarget self) => EventName self MouseEvent
+dragEnter = unsafeEventName (toJSString "dragenter")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.ondragleave Mozilla Document.ondragleave documentation> 
+dragLeave ::
+          (IsDocument self, IsEventTarget self) => EventName self MouseEvent
+dragLeave = unsafeEventName (toJSString "dragleave")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.ondragover Mozilla Document.ondragover documentation> 
+dragOver ::
+         (IsDocument self, IsEventTarget self) => EventName self MouseEvent
+dragOver = unsafeEventName (toJSString "dragover")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.ondragstart Mozilla Document.ondragstart documentation> 
+dragStart ::
+          (IsDocument self, IsEventTarget self) => EventName self MouseEvent
+dragStart = unsafeEventName (toJSString "dragstart")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.ondrop Mozilla Document.ondrop documentation> 
+drop ::
+     (IsDocument self, IsEventTarget self) => EventName self MouseEvent
+drop = unsafeEventName (toJSString "drop")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onerror Mozilla Document.onerror documentation> 
+error ::
+      (IsDocument self, IsEventTarget self) => EventName self UIEvent
+error = unsafeEventName (toJSString "error")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onfocus Mozilla Document.onfocus documentation> 
+focus ::
+      (IsDocument self, IsEventTarget self) => EventName self FocusEvent
+focus = unsafeEventName (toJSString "focus")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.oninput Mozilla Document.oninput documentation> 
+input ::
+      (IsDocument self, IsEventTarget self) => EventName self Event
+input = unsafeEventName (toJSString "input")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.oninvalid Mozilla Document.oninvalid documentation> 
+invalid ::
+        (IsDocument self, IsEventTarget self) => EventName self Event
+invalid = unsafeEventName (toJSString "invalid")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onkeydown Mozilla Document.onkeydown documentation> 
+keyDown ::
+        (IsDocument self, IsEventTarget self) =>
+          EventName self KeyboardEvent
+keyDown = unsafeEventName (toJSString "keydown")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onkeypress Mozilla Document.onkeypress documentation> 
+keyPress ::
+         (IsDocument self, IsEventTarget self) =>
+           EventName self KeyboardEvent
+keyPress = unsafeEventName (toJSString "keypress")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onkeyup Mozilla Document.onkeyup documentation> 
+keyUp ::
+      (IsDocument self, IsEventTarget self) =>
+        EventName self KeyboardEvent
+keyUp = unsafeEventName (toJSString "keyup")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onload Mozilla Document.onload documentation> 
+load ::
+     (IsDocument self, IsEventTarget self) => EventName self UIEvent
+load = unsafeEventName (toJSString "load")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onmousedown Mozilla Document.onmousedown documentation> 
+mouseDown ::
+          (IsDocument self, IsEventTarget self) => EventName self MouseEvent
+mouseDown = unsafeEventName (toJSString "mousedown")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onmouseenter Mozilla Document.onmouseenter documentation> 
+mouseEnter ::
+           (IsDocument self, IsEventTarget self) => EventName self MouseEvent
+mouseEnter = unsafeEventName (toJSString "mouseenter")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onmouseleave Mozilla Document.onmouseleave documentation> 
+mouseLeave ::
+           (IsDocument self, IsEventTarget self) => EventName self MouseEvent
+mouseLeave = unsafeEventName (toJSString "mouseleave")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onmousemove Mozilla Document.onmousemove documentation> 
+mouseMove ::
+          (IsDocument self, IsEventTarget self) => EventName self MouseEvent
+mouseMove = unsafeEventName (toJSString "mousemove")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onmouseout Mozilla Document.onmouseout documentation> 
+mouseOut ::
+         (IsDocument self, IsEventTarget self) => EventName self MouseEvent
+mouseOut = unsafeEventName (toJSString "mouseout")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onmouseover Mozilla Document.onmouseover documentation> 
+mouseOver ::
+          (IsDocument self, IsEventTarget self) => EventName self MouseEvent
+mouseOver = unsafeEventName (toJSString "mouseover")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onmouseup Mozilla Document.onmouseup documentation> 
+mouseUp ::
+        (IsDocument self, IsEventTarget self) => EventName self MouseEvent
+mouseUp = unsafeEventName (toJSString "mouseup")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onmousewheel Mozilla Document.onmousewheel documentation> 
+mouseWheel ::
+           (IsDocument self, IsEventTarget self) => EventName self MouseEvent
+mouseWheel = unsafeEventName (toJSString "mousewheel")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onreadystatechange Mozilla Document.onreadystatechange documentation> 
+readyStateChange ::
+                 (IsDocument self, IsEventTarget self) => EventName self Event
+readyStateChange = unsafeEventName (toJSString "readystatechange")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onscroll Mozilla Document.onscroll documentation> 
+scroll ::
+       (IsDocument self, IsEventTarget self) => EventName self UIEvent
+scroll = unsafeEventName (toJSString "scroll")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onselect Mozilla Document.onselect documentation> 
+select ::
+       (IsDocument self, IsEventTarget self) => EventName self UIEvent
+select = unsafeEventName (toJSString "select")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onsubmit Mozilla Document.onsubmit documentation> 
+submit ::
+       (IsDocument self, IsEventTarget self) => EventName self Event
+submit = unsafeEventName (toJSString "submit")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onwheel Mozilla Document.onwheel documentation> 
+wheel ::
+      (IsDocument self, IsEventTarget self) => EventName self WheelEvent
+wheel = unsafeEventName (toJSString "wheel")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onbeforecut Mozilla Document.onbeforecut documentation> 
+beforeCut ::
+          (IsDocument self, IsEventTarget self) => EventName self Event
+beforeCut = unsafeEventName (toJSString "beforecut")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.oncut Mozilla Document.oncut documentation> 
+cut ::
+    (IsDocument self, IsEventTarget self) => EventName self Event
+cut = unsafeEventName (toJSString "cut")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onbeforecopy Mozilla Document.onbeforecopy documentation> 
+beforeCopy ::
+           (IsDocument self, IsEventTarget self) => EventName self Event
+beforeCopy = unsafeEventName (toJSString "beforecopy")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.oncopy Mozilla Document.oncopy documentation> 
+copy ::
+     (IsDocument self, IsEventTarget self) => EventName self Event
+copy = unsafeEventName (toJSString "copy")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onbeforepaste Mozilla Document.onbeforepaste documentation> 
+beforePaste ::
+            (IsDocument self, IsEventTarget self) => EventName self Event
+beforePaste = unsafeEventName (toJSString "beforepaste")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onpaste Mozilla Document.onpaste documentation> 
+paste ::
+      (IsDocument self, IsEventTarget self) => EventName self Event
+paste = unsafeEventName (toJSString "paste")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onreset Mozilla Document.onreset documentation> 
+reset ::
+      (IsDocument self, IsEventTarget self) => EventName self Event
+reset = unsafeEventName (toJSString "reset")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onsearch Mozilla Document.onsearch documentation> 
+search ::
+       (IsDocument self, IsEventTarget self) => EventName self Event
+search = unsafeEventName (toJSString "search")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onselectstart Mozilla Document.onselectstart documentation> 
+selectStart ::
+            (IsDocument self, IsEventTarget self) => EventName self Event
+selectStart = unsafeEventName (toJSString "selectstart")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onselectionchange Mozilla Document.onselectionchange documentation> 
+selectionchange ::
+                (IsDocument self, IsEventTarget self) =>
+                  EventName self onselectionchange
+selectionchange = unsafeEventName (toJSString "selectionchange")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.ontouchstart Mozilla Document.ontouchstart documentation> 
+touchStart ::
+           (IsDocument self, IsEventTarget self) => EventName self TouchEvent
+touchStart = unsafeEventName (toJSString "touchstart")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.ontouchmove Mozilla Document.ontouchmove documentation> 
+touchMove ::
+          (IsDocument self, IsEventTarget self) => EventName self TouchEvent
+touchMove = unsafeEventName (toJSString "touchmove")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.ontouchend Mozilla Document.ontouchend documentation> 
+touchEnd ::
+         (IsDocument self, IsEventTarget self) => EventName self TouchEvent
+touchEnd = unsafeEventName (toJSString "touchend")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.ontouchcancel Mozilla Document.ontouchcancel documentation> 
+touchCancel ::
+            (IsDocument self, IsEventTarget self) => EventName self TouchEvent
+touchCancel = unsafeEventName (toJSString "touchcancel")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onwebkitfullscreenchange Mozilla Document.onwebkitfullscreenchange documentation> 
+webKitFullscreenChange ::
+                       (IsDocument self, IsEventTarget self) => EventName self Event
+webKitFullscreenChange
+  = unsafeEventName (toJSString "webkitfullscreenchange")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onwebkitfullscreenerror Mozilla Document.onwebkitfullscreenerror documentation> 
+webKitFullscreenError ::
+                      (IsDocument self, IsEventTarget self) => EventName self Event
+webKitFullscreenError
+  = unsafeEventName (toJSString "webkitfullscreenerror")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onpointerlockchange Mozilla Document.onpointerlockchange documentation> 
+pointerlockchange ::
+                  (IsDocument self, IsEventTarget self) => EventName self Event
+pointerlockchange
+  = unsafeEventName (toJSString "pointerlockchange")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onpointerlockerror Mozilla Document.onpointerlockerror documentation> 
+pointerlockerror ::
+                 (IsDocument self, IsEventTarget self) => EventName self Event
+pointerlockerror = unsafeEventName (toJSString "pointerlockerror")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onsecuritypolicyviolation Mozilla Document.onsecuritypolicyviolation documentation> 
+securitypolicyviolation ::
+                        (IsDocument self, IsEventTarget self) =>
+                          EventName self onsecuritypolicyviolation
+securitypolicyviolation
+  = unsafeEventName (toJSString "securitypolicyviolation")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onwebkitwillrevealbottom Mozilla Document.onwebkitwillrevealbottom documentation> 
+webKitWillRevealBottom ::
+                       (IsDocument self, IsEventTarget self) => EventName self Event
+webKitWillRevealBottom
+  = unsafeEventName (toJSString "webkitwillrevealbottom")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onwebkitwillrevealleft Mozilla Document.onwebkitwillrevealleft documentation> 
+webKitWillRevealLeft ::
+                     (IsDocument self, IsEventTarget self) => EventName self Event
+webKitWillRevealLeft
+  = unsafeEventName (toJSString "webkitwillrevealleft")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onwebkitwillrevealright Mozilla Document.onwebkitwillrevealright documentation> 
+webKitWillRevealRight ::
+                      (IsDocument self, IsEventTarget self) => EventName self Event
+webKitWillRevealRight
+  = unsafeEventName (toJSString "webkitwillrevealright")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onwebkitwillrevealtop Mozilla Document.onwebkitwillrevealtop documentation> 
+webKitWillRevealTop ::
+                    (IsDocument self, IsEventTarget self) => EventName self Event
+webKitWillRevealTop
+  = unsafeEventName (toJSString "webkitwillrevealtop")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.visibilityState Mozilla Document.visibilityState documentation> 
+getVisibilityState ::
+                   (MonadDOM m, IsDocument self, FromJSString result) =>
+                     self -> m result
+getVisibilityState self
+  = liftDOM
+      (((toDocument self) ^. js "visibilityState") >>=
+         fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.hidden Mozilla Document.hidden documentation> 
+getHidden :: (MonadDOM m, IsDocument self) => self -> m Bool
+getHidden self
+  = liftDOM (((toDocument self) ^. js "hidden") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.securityPolicy Mozilla Document.securityPolicy documentation> 
+getSecurityPolicy ::
+                  (MonadDOM m, IsDocument self) => self -> m (Maybe SecurityPolicy)
+getSecurityPolicy self
+  = liftDOM
+      (((toDocument self) ^. js "securityPolicy") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.currentScript Mozilla Document.currentScript documentation> 
+getCurrentScript ::
+                 (MonadDOM m, IsDocument self) =>
+                   self -> m (Maybe HTMLScriptElement)
+getCurrentScript self
+  = liftDOM (((toDocument self) ^. js "currentScript") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.origin Mozilla Document.origin documentation> 
+getOrigin ::
+          (MonadDOM m, IsDocument self, FromJSString result) =>
+            self -> m result
+getOrigin self
+  = liftDOM
+      (((toDocument self) ^. js "origin") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/DocumentFragment.hs b/src/Language/Javascript/JSaddle/DOM/Generated/DocumentFragment.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/DocumentFragment.hs
@@ -0,0 +1,38 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.DocumentFragment
+       (newDocumentFragment, querySelector, querySelectorAll,
+        DocumentFragment, castToDocumentFragment, gTypeDocumentFragment)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentFragment Mozilla DocumentFragment documentation> 
+newDocumentFragment :: (MonadDOM m) => m DocumentFragment
+newDocumentFragment
+  = liftDOM (DocumentFragment <$> new (jsg "DocumentFragment") ())
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentFragment.querySelector Mozilla DocumentFragment.querySelector documentation> 
+querySelector ::
+              (MonadDOM m, ToJSString selectors) =>
+                DocumentFragment -> selectors -> m (Maybe Element)
+querySelector self selectors
+  = liftDOM
+      ((self ^. jsf "querySelector" [toJSVal selectors]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentFragment.querySelectorAll Mozilla DocumentFragment.querySelectorAll documentation> 
+querySelectorAll ::
+                 (MonadDOM m, ToJSString selectors) =>
+                   DocumentFragment -> selectors -> m (Maybe NodeList)
+querySelectorAll self selectors
+  = liftDOM
+      ((self ^. jsf "querySelectorAll" [toJSVal selectors]) >>=
+         fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/DocumentType.hs b/src/Language/Javascript/JSaddle/DOM/Generated/DocumentType.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/DocumentType.hs
@@ -0,0 +1,54 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.DocumentType
+       (getName, getEntities, getNotations, getPublicId, getSystemId,
+        getInternalSubset, DocumentType, castToDocumentType,
+        gTypeDocumentType)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentType.name Mozilla DocumentType.name documentation> 
+getName ::
+        (MonadDOM m, FromJSString result) => DocumentType -> m result
+getName self = liftDOM ((self ^. js "name") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentType.entities Mozilla DocumentType.entities documentation> 
+getEntities ::
+            (MonadDOM m) => DocumentType -> m (Maybe NamedNodeMap)
+getEntities self = liftDOM ((self ^. js "entities") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentType.notations Mozilla DocumentType.notations documentation> 
+getNotations ::
+             (MonadDOM m) => DocumentType -> m (Maybe NamedNodeMap)
+getNotations self
+  = liftDOM ((self ^. js "notations") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentType.publicId Mozilla DocumentType.publicId documentation> 
+getPublicId ::
+            (MonadDOM m, FromJSString result) =>
+              DocumentType -> m (Maybe result)
+getPublicId self
+  = liftDOM ((self ^. js "publicId") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentType.systemId Mozilla DocumentType.systemId documentation> 
+getSystemId ::
+            (MonadDOM m, FromJSString result) =>
+              DocumentType -> m (Maybe result)
+getSystemId self
+  = liftDOM ((self ^. js "systemId") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentType.internalSubset Mozilla DocumentType.internalSubset documentation> 
+getInternalSubset ::
+                  (MonadDOM m, FromJSString result) =>
+                    DocumentType -> m (Maybe result)
+getInternalSubset self
+  = liftDOM ((self ^. js "internalSubset") >>= fromMaybeJSString)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/DynamicsCompressorNode.hs b/src/Language/Javascript/JSaddle/DOM/Generated/DynamicsCompressorNode.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/DynamicsCompressorNode.hs
@@ -0,0 +1,49 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.DynamicsCompressorNode
+       (getThreshold, getKnee, getRatio, getReduction, getAttack,
+        getRelease, DynamicsCompressorNode, castToDynamicsCompressorNode,
+        gTypeDynamicsCompressorNode)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DynamicsCompressorNode.threshold Mozilla DynamicsCompressorNode.threshold documentation> 
+getThreshold ::
+             (MonadDOM m) => DynamicsCompressorNode -> m (Maybe AudioParam)
+getThreshold self
+  = liftDOM ((self ^. js "threshold") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DynamicsCompressorNode.knee Mozilla DynamicsCompressorNode.knee documentation> 
+getKnee ::
+        (MonadDOM m) => DynamicsCompressorNode -> m (Maybe AudioParam)
+getKnee self = liftDOM ((self ^. js "knee") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DynamicsCompressorNode.ratio Mozilla DynamicsCompressorNode.ratio documentation> 
+getRatio ::
+         (MonadDOM m) => DynamicsCompressorNode -> m (Maybe AudioParam)
+getRatio self = liftDOM ((self ^. js "ratio") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DynamicsCompressorNode.reduction Mozilla DynamicsCompressorNode.reduction documentation> 
+getReduction ::
+             (MonadDOM m) => DynamicsCompressorNode -> m (Maybe AudioParam)
+getReduction self
+  = liftDOM ((self ^. js "reduction") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DynamicsCompressorNode.attack Mozilla DynamicsCompressorNode.attack documentation> 
+getAttack ::
+          (MonadDOM m) => DynamicsCompressorNode -> m (Maybe AudioParam)
+getAttack self = liftDOM ((self ^. js "attack") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DynamicsCompressorNode.release Mozilla DynamicsCompressorNode.release documentation> 
+getRelease ::
+           (MonadDOM m) => DynamicsCompressorNode -> m (Maybe AudioParam)
+getRelease self = liftDOM ((self ^. js "release") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/EXTBlendMinMax.hs b/src/Language/Javascript/JSaddle/DOM/Generated/EXTBlendMinMax.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/EXTBlendMinMax.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.EXTBlendMinMax
+       (pattern MIN_EXT, pattern MAX_EXT, EXTBlendMinMax,
+        castToEXTBlendMinMax, gTypeEXTBlendMinMax)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+pattern MIN_EXT = 32775
+pattern MAX_EXT = 32776
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/EXTTextureFilterAnisotropic.hs b/src/Language/Javascript/JSaddle/DOM/Generated/EXTTextureFilterAnisotropic.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/EXTTextureFilterAnisotropic.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.EXTTextureFilterAnisotropic
+       (pattern TEXTURE_MAX_ANISOTROPY_EXT,
+        pattern MAX_TEXTURE_MAX_ANISOTROPY_EXT,
+        EXTTextureFilterAnisotropic, castToEXTTextureFilterAnisotropic,
+        gTypeEXTTextureFilterAnisotropic)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+pattern TEXTURE_MAX_ANISOTROPY_EXT = 34046
+pattern MAX_TEXTURE_MAX_ANISOTROPY_EXT = 34047
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/EXTsRGB.hs b/src/Language/Javascript/JSaddle/DOM/Generated/EXTsRGB.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/EXTsRGB.hs
@@ -0,0 +1,22 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.EXTsRGB
+       (pattern SRGB_EXT, pattern SRGB_ALPHA_EXT,
+        pattern SRGB8_ALPHA8_EXT,
+        pattern FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT, EXTsRGB,
+        castToEXTsRGB, gTypeEXTsRGB)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+pattern SRGB_EXT = 35904
+pattern SRGB_ALPHA_EXT = 35906
+pattern SRGB8_ALPHA8_EXT = 35907
+pattern FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT = 33296
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/Element.hs b/src/Language/Javascript/JSaddle/DOM/Generated/Element.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/Element.hs
@@ -0,0 +1,834 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.Element
+       (getAttribute, setAttribute, removeAttribute, getAttributeNode,
+        setAttributeNode, removeAttributeNode, getElementsByTagName,
+        hasAttributes, getAttributeNS, setAttributeNS, removeAttributeNS,
+        getElementsByTagNameNS, getAttributeNodeNS, setAttributeNodeNS,
+        hasAttribute, hasAttributeNS, focus, blur, scrollIntoView,
+        scrollIntoViewIfNeeded, scrollByLines, scrollByPages,
+        getElementsByClassName, querySelector, querySelectorAll, matches,
+        closest, webkitMatchesSelector, getClientRects,
+        getBoundingClientRect, webkitRequestFullScreen,
+        webkitRequestFullscreen, requestPointerLock,
+        webkitGetRegionFlowRanges, pattern ALLOW_KEYBOARD_INPUT,
+        getTagName, getAttributes, getStyle, setId, getId, getOffsetLeft,
+        getOffsetTop, getOffsetWidth, getOffsetHeight, getClientLeft,
+        getClientTop, getClientWidth, getClientHeight, setScrollLeft,
+        getScrollLeft, setScrollTop, getScrollTop, getScrollWidth,
+        getScrollHeight, getOffsetParent, setInnerHTML, getInnerHTML,
+        setOuterHTML, getOuterHTML, setClassName, getClassName,
+        getClassList, getDataset, getFirstElementChild,
+        getLastElementChild, getPreviousElementSibling,
+        getNextElementSibling, getChildElementCount, setUiactions,
+        getUiactions, getWebkitRegionOverset, abort, blurEvent, change,
+        click, contextMenu, dblClick, drag, dragEnd, dragEnter, dragLeave,
+        dragOver, dragStart, drop, error, focusEvent, input, invalid,
+        keyDown, keyPress, keyUp, load, mouseDown, mouseEnter, mouseLeave,
+        mouseMove, mouseOut, mouseOver, mouseUp, mouseWheel, scroll,
+        select, submit, wheel, beforeCut, cut, beforeCopy, copy,
+        beforePaste, paste, reset, search, selectStart, touchStart,
+        touchMove, touchEnd, touchCancel, webKitFullscreenChange,
+        webKitFullscreenError, webKitWillRevealBottom,
+        webKitWillRevealLeft, webKitWillRevealRight, webKitWillRevealTop,
+        Element, castToElement, gTypeElement, IsElement, toElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getAttribute Mozilla Element.getAttribute documentation> 
+getAttribute ::
+             (MonadDOM m, IsElement self, ToJSString name,
+              FromJSString result) =>
+               self -> name -> m (Maybe result)
+getAttribute self name
+  = liftDOM
+      (((toElement self) ^. jsf "getAttribute" [toJSVal name]) >>=
+         fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.setAttribute Mozilla Element.setAttribute documentation> 
+setAttribute ::
+             (MonadDOM m, IsElement self, ToJSString name, ToJSString value) =>
+               self -> name -> value -> m ()
+setAttribute self name value
+  = liftDOM
+      (void
+         ((toElement self) ^. jsf "setAttribute"
+            [toJSVal name, toJSVal value]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.removeAttribute Mozilla Element.removeAttribute documentation> 
+removeAttribute ::
+                (MonadDOM m, IsElement self, ToJSString name) =>
+                  self -> name -> m ()
+removeAttribute self name
+  = liftDOM
+      (void ((toElement self) ^. jsf "removeAttribute" [toJSVal name]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getAttributeNode Mozilla Element.getAttributeNode documentation> 
+getAttributeNode ::
+                 (MonadDOM m, IsElement self, ToJSString name) =>
+                   self -> name -> m (Maybe Attr)
+getAttributeNode self name
+  = liftDOM
+      (((toElement self) ^. jsf "getAttributeNode" [toJSVal name]) >>=
+         fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.setAttributeNode Mozilla Element.setAttributeNode documentation> 
+setAttributeNode ::
+                 (MonadDOM m, IsElement self) =>
+                   self -> Maybe Attr -> m (Maybe Attr)
+setAttributeNode self newAttr
+  = liftDOM
+      (((toElement self) ^. jsf "setAttributeNode" [toJSVal newAttr]) >>=
+         fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.removeAttributeNode Mozilla Element.removeAttributeNode documentation> 
+removeAttributeNode ::
+                    (MonadDOM m, IsElement self) =>
+                      self -> Maybe Attr -> m (Maybe Attr)
+removeAttributeNode self oldAttr
+  = liftDOM
+      (((toElement self) ^. jsf "removeAttributeNode" [toJSVal oldAttr])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getElementsByTagName Mozilla Element.getElementsByTagName documentation> 
+getElementsByTagName ::
+                     (MonadDOM m, IsElement self, ToJSString name) =>
+                       self -> name -> m (Maybe NodeList)
+getElementsByTagName self name
+  = liftDOM
+      (((toElement self) ^. jsf "getElementsByTagName" [toJSVal name])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.hasAttributes Mozilla Element.hasAttributes documentation> 
+hasAttributes :: (MonadDOM m, IsElement self) => self -> m Bool
+hasAttributes self
+  = liftDOM (((toElement self) ^. js "hasAttributes") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getAttributeNS Mozilla Element.getAttributeNS documentation> 
+getAttributeNS ::
+               (MonadDOM m, IsElement self, ToJSString namespaceURI,
+                ToJSString localName, FromJSString result) =>
+                 self -> Maybe namespaceURI -> localName -> m result
+getAttributeNS self namespaceURI localName
+  = liftDOM
+      (((toElement self) ^. jsf "getAttributeNS"
+          [toJSVal namespaceURI, toJSVal localName])
+         >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.setAttributeNS Mozilla Element.setAttributeNS documentation> 
+setAttributeNS ::
+               (MonadDOM m, IsElement self, ToJSString namespaceURI,
+                ToJSString qualifiedName, ToJSString value) =>
+                 self -> Maybe namespaceURI -> qualifiedName -> value -> m ()
+setAttributeNS self namespaceURI qualifiedName value
+  = liftDOM
+      (void
+         ((toElement self) ^. jsf "setAttributeNS"
+            [toJSVal namespaceURI, toJSVal qualifiedName, toJSVal value]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.removeAttributeNS Mozilla Element.removeAttributeNS documentation> 
+removeAttributeNS ::
+                  (MonadDOM m, IsElement self, ToJSString namespaceURI,
+                   ToJSString localName) =>
+                    self -> Maybe namespaceURI -> localName -> m ()
+removeAttributeNS self namespaceURI localName
+  = liftDOM
+      (void
+         ((toElement self) ^. jsf "removeAttributeNS"
+            [toJSVal namespaceURI, toJSVal localName]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getElementsByTagNameNS Mozilla Element.getElementsByTagNameNS documentation> 
+getElementsByTagNameNS ::
+                       (MonadDOM m, IsElement self, ToJSString namespaceURI,
+                        ToJSString localName) =>
+                         self -> Maybe namespaceURI -> localName -> m (Maybe NodeList)
+getElementsByTagNameNS self namespaceURI localName
+  = liftDOM
+      (((toElement self) ^. jsf "getElementsByTagNameNS"
+          [toJSVal namespaceURI, toJSVal localName])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getAttributeNodeNS Mozilla Element.getAttributeNodeNS documentation> 
+getAttributeNodeNS ::
+                   (MonadDOM m, IsElement self, ToJSString namespaceURI,
+                    ToJSString localName) =>
+                     self -> Maybe namespaceURI -> localName -> m (Maybe Attr)
+getAttributeNodeNS self namespaceURI localName
+  = liftDOM
+      (((toElement self) ^. jsf "getAttributeNodeNS"
+          [toJSVal namespaceURI, toJSVal localName])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.setAttributeNodeNS Mozilla Element.setAttributeNodeNS documentation> 
+setAttributeNodeNS ::
+                   (MonadDOM m, IsElement self) =>
+                     self -> Maybe Attr -> m (Maybe Attr)
+setAttributeNodeNS self newAttr
+  = liftDOM
+      (((toElement self) ^. jsf "setAttributeNodeNS" [toJSVal newAttr])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.hasAttribute Mozilla Element.hasAttribute documentation> 
+hasAttribute ::
+             (MonadDOM m, IsElement self, ToJSString name) =>
+               self -> name -> m Bool
+hasAttribute self name
+  = liftDOM
+      (((toElement self) ^. jsf "hasAttribute" [toJSVal name]) >>=
+         valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.hasAttributeNS Mozilla Element.hasAttributeNS documentation> 
+hasAttributeNS ::
+               (MonadDOM m, IsElement self, ToJSString namespaceURI,
+                ToJSString localName) =>
+                 self -> Maybe namespaceURI -> localName -> m Bool
+hasAttributeNS self namespaceURI localName
+  = liftDOM
+      (((toElement self) ^. jsf "hasAttributeNS"
+          [toJSVal namespaceURI, toJSVal localName])
+         >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.focus Mozilla Element.focus documentation> 
+focus :: (MonadDOM m, IsElement self) => self -> m ()
+focus self = liftDOM (void ((toElement self) ^. js "focus"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.blur Mozilla Element.blur documentation> 
+blur :: (MonadDOM m, IsElement self) => self -> m ()
+blur self = liftDOM (void ((toElement self) ^. js "blur"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.scrollIntoView Mozilla Element.scrollIntoView documentation> 
+scrollIntoView ::
+               (MonadDOM m, IsElement self) => self -> Bool -> m ()
+scrollIntoView self alignWithTop
+  = liftDOM
+      (void
+         ((toElement self) ^. jsf "scrollIntoView" [toJSVal alignWithTop]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.scrollIntoViewIfNeeded Mozilla Element.scrollIntoViewIfNeeded documentation> 
+scrollIntoViewIfNeeded ::
+                       (MonadDOM m, IsElement self) => self -> Bool -> m ()
+scrollIntoViewIfNeeded self centerIfNeeded
+  = liftDOM
+      (void
+         ((toElement self) ^. jsf "scrollIntoViewIfNeeded"
+            [toJSVal centerIfNeeded]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.scrollByLines Mozilla Element.scrollByLines documentation> 
+scrollByLines ::
+              (MonadDOM m, IsElement self) => self -> Int -> m ()
+scrollByLines self lines
+  = liftDOM
+      (void ((toElement self) ^. jsf "scrollByLines" [toJSVal lines]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.scrollByPages Mozilla Element.scrollByPages documentation> 
+scrollByPages ::
+              (MonadDOM m, IsElement self) => self -> Int -> m ()
+scrollByPages self pages
+  = liftDOM
+      (void ((toElement self) ^. jsf "scrollByPages" [toJSVal pages]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getElementsByClassName Mozilla Element.getElementsByClassName documentation> 
+getElementsByClassName ::
+                       (MonadDOM m, IsElement self, ToJSString name) =>
+                         self -> name -> m (Maybe NodeList)
+getElementsByClassName self name
+  = liftDOM
+      (((toElement self) ^. jsf "getElementsByClassName" [toJSVal name])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.querySelector Mozilla Element.querySelector documentation> 
+querySelector ::
+              (MonadDOM m, IsElement self, ToJSString selectors) =>
+                self -> selectors -> m (Maybe Element)
+querySelector self selectors
+  = liftDOM
+      (((toElement self) ^. jsf "querySelector" [toJSVal selectors]) >>=
+         fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.querySelectorAll Mozilla Element.querySelectorAll documentation> 
+querySelectorAll ::
+                 (MonadDOM m, IsElement self, ToJSString selectors) =>
+                   self -> selectors -> m (Maybe NodeList)
+querySelectorAll self selectors
+  = liftDOM
+      (((toElement self) ^. jsf "querySelectorAll" [toJSVal selectors])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.matches Mozilla Element.matches documentation> 
+matches ::
+        (MonadDOM m, IsElement self, ToJSString selectors) =>
+          self -> selectors -> m Bool
+matches self selectors
+  = liftDOM
+      (((toElement self) ^. jsf "matches" [toJSVal selectors]) >>=
+         valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.closest Mozilla Element.closest documentation> 
+closest ::
+        (MonadDOM m, IsElement self, ToJSString selectors) =>
+          self -> selectors -> m (Maybe Element)
+closest self selectors
+  = liftDOM
+      (((toElement self) ^. jsf "closest" [toJSVal selectors]) >>=
+         fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.webkitMatchesSelector Mozilla Element.webkitMatchesSelector documentation> 
+webkitMatchesSelector ::
+                      (MonadDOM m, IsElement self, ToJSString selectors) =>
+                        self -> selectors -> m Bool
+webkitMatchesSelector self selectors
+  = liftDOM
+      (((toElement self) ^. jsf "webkitMatchesSelector"
+          [toJSVal selectors])
+         >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getClientRects Mozilla Element.getClientRects documentation> 
+getClientRects ::
+               (MonadDOM m, IsElement self) => self -> m (Maybe ClientRectList)
+getClientRects self
+  = liftDOM (((toElement self) ^. js "getClientRects") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getBoundingClientRect Mozilla Element.getBoundingClientRect documentation> 
+getBoundingClientRect ::
+                      (MonadDOM m, IsElement self) => self -> m (Maybe ClientRect)
+getBoundingClientRect self
+  = liftDOM
+      (((toElement self) ^. js "getBoundingClientRect") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.webkitRequestFullScreen Mozilla Element.webkitRequestFullScreen documentation> 
+webkitRequestFullScreen ::
+                        (MonadDOM m, IsElement self) => self -> Word -> m ()
+webkitRequestFullScreen self flags
+  = liftDOM
+      (void
+         ((toElement self) ^. jsf "webkitRequestFullScreen"
+            [toJSVal flags]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.webkitRequestFullscreen Mozilla Element.webkitRequestFullscreen documentation> 
+webkitRequestFullscreen ::
+                        (MonadDOM m, IsElement self) => self -> m ()
+webkitRequestFullscreen self
+  = liftDOM (void ((toElement self) ^. js "webkitRequestFullscreen"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.requestPointerLock Mozilla Element.requestPointerLock documentation> 
+requestPointerLock :: (MonadDOM m, IsElement self) => self -> m ()
+requestPointerLock self
+  = liftDOM (void ((toElement self) ^. js "requestPointerLock"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.webkitGetRegionFlowRanges Mozilla Element.webkitGetRegionFlowRanges documentation> 
+webkitGetRegionFlowRanges ::
+                          (MonadDOM m, IsElement self) => self -> m [Maybe Range]
+webkitGetRegionFlowRanges self
+  = liftDOM
+      (((toElement self) ^. js "webkitGetRegionFlowRanges") >>=
+         fromJSArray)
+pattern ALLOW_KEYBOARD_INPUT = 1
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.tagName Mozilla Element.tagName documentation> 
+getTagName ::
+           (MonadDOM m, IsElement self, FromJSString result) =>
+             self -> m (Maybe result)
+getTagName self
+  = liftDOM
+      (((toElement self) ^. js "tagName") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.attributes Mozilla Element.attributes documentation> 
+getAttributes ::
+              (MonadDOM m, IsElement self) => self -> m (Maybe NamedNodeMap)
+getAttributes self
+  = liftDOM (((toElement self) ^. js "attributes") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.style Mozilla Element.style documentation> 
+getStyle ::
+         (MonadDOM m, IsElement self) =>
+           self -> m (Maybe CSSStyleDeclaration)
+getStyle self
+  = liftDOM (((toElement self) ^. js "style") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.id Mozilla Element.id documentation> 
+setId ::
+      (MonadDOM m, IsElement self, ToJSString val) => self -> val -> m ()
+setId self val
+  = liftDOM ((toElement self) ^. jss "id" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.id Mozilla Element.id documentation> 
+getId ::
+      (MonadDOM m, IsElement self, FromJSString result) =>
+        self -> m result
+getId self
+  = liftDOM (((toElement self) ^. js "id") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.offsetLeft Mozilla Element.offsetLeft documentation> 
+getOffsetLeft :: (MonadDOM m, IsElement self) => self -> m Double
+getOffsetLeft self
+  = liftDOM (((toElement self) ^. js "offsetLeft") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.offsetTop Mozilla Element.offsetTop documentation> 
+getOffsetTop :: (MonadDOM m, IsElement self) => self -> m Double
+getOffsetTop self
+  = liftDOM (((toElement self) ^. js "offsetTop") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.offsetWidth Mozilla Element.offsetWidth documentation> 
+getOffsetWidth :: (MonadDOM m, IsElement self) => self -> m Double
+getOffsetWidth self
+  = liftDOM (((toElement self) ^. js "offsetWidth") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.offsetHeight Mozilla Element.offsetHeight documentation> 
+getOffsetHeight :: (MonadDOM m, IsElement self) => self -> m Double
+getOffsetHeight self
+  = liftDOM (((toElement self) ^. js "offsetHeight") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.clientLeft Mozilla Element.clientLeft documentation> 
+getClientLeft :: (MonadDOM m, IsElement self) => self -> m Double
+getClientLeft self
+  = liftDOM (((toElement self) ^. js "clientLeft") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.clientTop Mozilla Element.clientTop documentation> 
+getClientTop :: (MonadDOM m, IsElement self) => self -> m Double
+getClientTop self
+  = liftDOM (((toElement self) ^. js "clientTop") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.clientWidth Mozilla Element.clientWidth documentation> 
+getClientWidth :: (MonadDOM m, IsElement self) => self -> m Double
+getClientWidth self
+  = liftDOM (((toElement self) ^. js "clientWidth") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.clientHeight Mozilla Element.clientHeight documentation> 
+getClientHeight :: (MonadDOM m, IsElement self) => self -> m Double
+getClientHeight self
+  = liftDOM (((toElement self) ^. js "clientHeight") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.scrollLeft Mozilla Element.scrollLeft documentation> 
+setScrollLeft ::
+              (MonadDOM m, IsElement self) => self -> Int -> m ()
+setScrollLeft self val
+  = liftDOM ((toElement self) ^. jss "scrollLeft" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.scrollLeft Mozilla Element.scrollLeft documentation> 
+getScrollLeft :: (MonadDOM m, IsElement self) => self -> m Int
+getScrollLeft self
+  = liftDOM
+      (round <$> (((toElement self) ^. js "scrollLeft") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.scrollTop Mozilla Element.scrollTop documentation> 
+setScrollTop :: (MonadDOM m, IsElement self) => self -> Int -> m ()
+setScrollTop self val
+  = liftDOM ((toElement self) ^. jss "scrollTop" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.scrollTop Mozilla Element.scrollTop documentation> 
+getScrollTop :: (MonadDOM m, IsElement self) => self -> m Int
+getScrollTop self
+  = liftDOM
+      (round <$> (((toElement self) ^. js "scrollTop") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.scrollWidth Mozilla Element.scrollWidth documentation> 
+getScrollWidth :: (MonadDOM m, IsElement self) => self -> m Int
+getScrollWidth self
+  = liftDOM
+      (round <$>
+         (((toElement self) ^. js "scrollWidth") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.scrollHeight Mozilla Element.scrollHeight documentation> 
+getScrollHeight :: (MonadDOM m, IsElement self) => self -> m Int
+getScrollHeight self
+  = liftDOM
+      (round <$>
+         (((toElement self) ^. js "scrollHeight") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.offsetParent Mozilla Element.offsetParent documentation> 
+getOffsetParent ::
+                (MonadDOM m, IsElement self) => self -> m (Maybe Element)
+getOffsetParent self
+  = liftDOM (((toElement self) ^. js "offsetParent") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.innerHTML Mozilla Element.innerHTML documentation> 
+setInnerHTML ::
+             (MonadDOM m, IsElement self, ToJSString val) =>
+               self -> Maybe val -> m ()
+setInnerHTML self val
+  = liftDOM ((toElement self) ^. jss "innerHTML" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.innerHTML Mozilla Element.innerHTML documentation> 
+getInnerHTML ::
+             (MonadDOM m, IsElement self, FromJSString result) =>
+               self -> m (Maybe result)
+getInnerHTML self
+  = liftDOM
+      (((toElement self) ^. js "innerHTML") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.outerHTML Mozilla Element.outerHTML documentation> 
+setOuterHTML ::
+             (MonadDOM m, IsElement self, ToJSString val) =>
+               self -> Maybe val -> m ()
+setOuterHTML self val
+  = liftDOM ((toElement self) ^. jss "outerHTML" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.outerHTML Mozilla Element.outerHTML documentation> 
+getOuterHTML ::
+             (MonadDOM m, IsElement self, FromJSString result) =>
+               self -> m (Maybe result)
+getOuterHTML self
+  = liftDOM
+      (((toElement self) ^. js "outerHTML") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.className Mozilla Element.className documentation> 
+setClassName ::
+             (MonadDOM m, IsElement self, ToJSString val) => self -> val -> m ()
+setClassName self val
+  = liftDOM ((toElement self) ^. jss "className" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.className Mozilla Element.className documentation> 
+getClassName ::
+             (MonadDOM m, IsElement self, FromJSString result) =>
+               self -> m result
+getClassName self
+  = liftDOM
+      (((toElement self) ^. js "className") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.classList Mozilla Element.classList documentation> 
+getClassList ::
+             (MonadDOM m, IsElement self) => self -> m (Maybe DOMTokenList)
+getClassList self
+  = liftDOM (((toElement self) ^. js "classList") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.dataset Mozilla Element.dataset documentation> 
+getDataset ::
+           (MonadDOM m, IsElement self) => self -> m (Maybe DOMStringMap)
+getDataset self
+  = liftDOM (((toElement self) ^. js "dataset") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.firstElementChild Mozilla Element.firstElementChild documentation> 
+getFirstElementChild ::
+                     (MonadDOM m, IsElement self) => self -> m (Maybe Element)
+getFirstElementChild self
+  = liftDOM
+      (((toElement self) ^. js "firstElementChild") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.lastElementChild Mozilla Element.lastElementChild documentation> 
+getLastElementChild ::
+                    (MonadDOM m, IsElement self) => self -> m (Maybe Element)
+getLastElementChild self
+  = liftDOM
+      (((toElement self) ^. js "lastElementChild") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.previousElementSibling Mozilla Element.previousElementSibling documentation> 
+getPreviousElementSibling ::
+                          (MonadDOM m, IsElement self) => self -> m (Maybe Element)
+getPreviousElementSibling self
+  = liftDOM
+      (((toElement self) ^. js "previousElementSibling") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.nextElementSibling Mozilla Element.nextElementSibling documentation> 
+getNextElementSibling ::
+                      (MonadDOM m, IsElement self) => self -> m (Maybe Element)
+getNextElementSibling self
+  = liftDOM
+      (((toElement self) ^. js "nextElementSibling") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.childElementCount Mozilla Element.childElementCount documentation> 
+getChildElementCount ::
+                     (MonadDOM m, IsElement self) => self -> m Word
+getChildElementCount self
+  = liftDOM
+      (round <$>
+         (((toElement self) ^. js "childElementCount") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.uiactions Mozilla Element.uiactions documentation> 
+setUiactions ::
+             (MonadDOM m, IsElement self, ToJSString val) => self -> val -> m ()
+setUiactions self val
+  = liftDOM ((toElement self) ^. jss "uiactions" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.uiactions Mozilla Element.uiactions documentation> 
+getUiactions ::
+             (MonadDOM m, IsElement self, FromJSString result) =>
+               self -> m result
+getUiactions self
+  = liftDOM
+      (((toElement self) ^. js "uiactions") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.webkitRegionOverset Mozilla Element.webkitRegionOverset documentation> 
+getWebkitRegionOverset ::
+                       (MonadDOM m, IsElement self, FromJSString result) =>
+                         self -> m result
+getWebkitRegionOverset self
+  = liftDOM
+      (((toElement self) ^. js "webkitRegionOverset") >>=
+         fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onabort Mozilla Element.onabort documentation> 
+abort ::
+      (IsElement self, IsEventTarget self) => EventName self UIEvent
+abort = unsafeEventName (toJSString "abort")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onblur Mozilla Element.onblur documentation> 
+blurEvent ::
+          (IsElement self, IsEventTarget self) => EventName self FocusEvent
+blurEvent = unsafeEventName (toJSString "blur")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onchange Mozilla Element.onchange documentation> 
+change ::
+       (IsElement self, IsEventTarget self) => EventName self Event
+change = unsafeEventName (toJSString "change")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onclick Mozilla Element.onclick documentation> 
+click ::
+      (IsElement self, IsEventTarget self) => EventName self MouseEvent
+click = unsafeEventName (toJSString "click")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.oncontextmenu Mozilla Element.oncontextmenu documentation> 
+contextMenu ::
+            (IsElement self, IsEventTarget self) => EventName self MouseEvent
+contextMenu = unsafeEventName (toJSString "contextmenu")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.ondblclick Mozilla Element.ondblclick documentation> 
+dblClick ::
+         (IsElement self, IsEventTarget self) => EventName self MouseEvent
+dblClick = unsafeEventName (toJSString "dblclick")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.ondrag Mozilla Element.ondrag documentation> 
+drag ::
+     (IsElement self, IsEventTarget self) => EventName self MouseEvent
+drag = unsafeEventName (toJSString "drag")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.ondragend Mozilla Element.ondragend documentation> 
+dragEnd ::
+        (IsElement self, IsEventTarget self) => EventName self MouseEvent
+dragEnd = unsafeEventName (toJSString "dragend")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.ondragenter Mozilla Element.ondragenter documentation> 
+dragEnter ::
+          (IsElement self, IsEventTarget self) => EventName self MouseEvent
+dragEnter = unsafeEventName (toJSString "dragenter")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.ondragleave Mozilla Element.ondragleave documentation> 
+dragLeave ::
+          (IsElement self, IsEventTarget self) => EventName self MouseEvent
+dragLeave = unsafeEventName (toJSString "dragleave")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.ondragover Mozilla Element.ondragover documentation> 
+dragOver ::
+         (IsElement self, IsEventTarget self) => EventName self MouseEvent
+dragOver = unsafeEventName (toJSString "dragover")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.ondragstart Mozilla Element.ondragstart documentation> 
+dragStart ::
+          (IsElement self, IsEventTarget self) => EventName self MouseEvent
+dragStart = unsafeEventName (toJSString "dragstart")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.ondrop Mozilla Element.ondrop documentation> 
+drop ::
+     (IsElement self, IsEventTarget self) => EventName self MouseEvent
+drop = unsafeEventName (toJSString "drop")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onerror Mozilla Element.onerror documentation> 
+error ::
+      (IsElement self, IsEventTarget self) => EventName self UIEvent
+error = unsafeEventName (toJSString "error")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onfocus Mozilla Element.onfocus documentation> 
+focusEvent ::
+           (IsElement self, IsEventTarget self) => EventName self FocusEvent
+focusEvent = unsafeEventName (toJSString "focus")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.oninput Mozilla Element.oninput documentation> 
+input ::
+      (IsElement self, IsEventTarget self) => EventName self Event
+input = unsafeEventName (toJSString "input")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.oninvalid Mozilla Element.oninvalid documentation> 
+invalid ::
+        (IsElement self, IsEventTarget self) => EventName self Event
+invalid = unsafeEventName (toJSString "invalid")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onkeydown Mozilla Element.onkeydown documentation> 
+keyDown ::
+        (IsElement self, IsEventTarget self) =>
+          EventName self KeyboardEvent
+keyDown = unsafeEventName (toJSString "keydown")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onkeypress Mozilla Element.onkeypress documentation> 
+keyPress ::
+         (IsElement self, IsEventTarget self) =>
+           EventName self KeyboardEvent
+keyPress = unsafeEventName (toJSString "keypress")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onkeyup Mozilla Element.onkeyup documentation> 
+keyUp ::
+      (IsElement self, IsEventTarget self) =>
+        EventName self KeyboardEvent
+keyUp = unsafeEventName (toJSString "keyup")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onload Mozilla Element.onload documentation> 
+load ::
+     (IsElement self, IsEventTarget self) => EventName self UIEvent
+load = unsafeEventName (toJSString "load")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onmousedown Mozilla Element.onmousedown documentation> 
+mouseDown ::
+          (IsElement self, IsEventTarget self) => EventName self MouseEvent
+mouseDown = unsafeEventName (toJSString "mousedown")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onmouseenter Mozilla Element.onmouseenter documentation> 
+mouseEnter ::
+           (IsElement self, IsEventTarget self) => EventName self MouseEvent
+mouseEnter = unsafeEventName (toJSString "mouseenter")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onmouseleave Mozilla Element.onmouseleave documentation> 
+mouseLeave ::
+           (IsElement self, IsEventTarget self) => EventName self MouseEvent
+mouseLeave = unsafeEventName (toJSString "mouseleave")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onmousemove Mozilla Element.onmousemove documentation> 
+mouseMove ::
+          (IsElement self, IsEventTarget self) => EventName self MouseEvent
+mouseMove = unsafeEventName (toJSString "mousemove")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onmouseout Mozilla Element.onmouseout documentation> 
+mouseOut ::
+         (IsElement self, IsEventTarget self) => EventName self MouseEvent
+mouseOut = unsafeEventName (toJSString "mouseout")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onmouseover Mozilla Element.onmouseover documentation> 
+mouseOver ::
+          (IsElement self, IsEventTarget self) => EventName self MouseEvent
+mouseOver = unsafeEventName (toJSString "mouseover")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onmouseup Mozilla Element.onmouseup documentation> 
+mouseUp ::
+        (IsElement self, IsEventTarget self) => EventName self MouseEvent
+mouseUp = unsafeEventName (toJSString "mouseup")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onmousewheel Mozilla Element.onmousewheel documentation> 
+mouseWheel ::
+           (IsElement self, IsEventTarget self) => EventName self MouseEvent
+mouseWheel = unsafeEventName (toJSString "mousewheel")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onscroll Mozilla Element.onscroll documentation> 
+scroll ::
+       (IsElement self, IsEventTarget self) => EventName self UIEvent
+scroll = unsafeEventName (toJSString "scroll")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onselect Mozilla Element.onselect documentation> 
+select ::
+       (IsElement self, IsEventTarget self) => EventName self UIEvent
+select = unsafeEventName (toJSString "select")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onsubmit Mozilla Element.onsubmit documentation> 
+submit ::
+       (IsElement self, IsEventTarget self) => EventName self Event
+submit = unsafeEventName (toJSString "submit")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onwheel Mozilla Element.onwheel documentation> 
+wheel ::
+      (IsElement self, IsEventTarget self) => EventName self WheelEvent
+wheel = unsafeEventName (toJSString "wheel")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onbeforecut Mozilla Element.onbeforecut documentation> 
+beforeCut ::
+          (IsElement self, IsEventTarget self) => EventName self Event
+beforeCut = unsafeEventName (toJSString "beforecut")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.oncut Mozilla Element.oncut documentation> 
+cut :: (IsElement self, IsEventTarget self) => EventName self Event
+cut = unsafeEventName (toJSString "cut")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onbeforecopy Mozilla Element.onbeforecopy documentation> 
+beforeCopy ::
+           (IsElement self, IsEventTarget self) => EventName self Event
+beforeCopy = unsafeEventName (toJSString "beforecopy")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.oncopy Mozilla Element.oncopy documentation> 
+copy ::
+     (IsElement self, IsEventTarget self) => EventName self Event
+copy = unsafeEventName (toJSString "copy")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onbeforepaste Mozilla Element.onbeforepaste documentation> 
+beforePaste ::
+            (IsElement self, IsEventTarget self) => EventName self Event
+beforePaste = unsafeEventName (toJSString "beforepaste")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onpaste Mozilla Element.onpaste documentation> 
+paste ::
+      (IsElement self, IsEventTarget self) => EventName self Event
+paste = unsafeEventName (toJSString "paste")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onreset Mozilla Element.onreset documentation> 
+reset ::
+      (IsElement self, IsEventTarget self) => EventName self Event
+reset = unsafeEventName (toJSString "reset")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onsearch Mozilla Element.onsearch documentation> 
+search ::
+       (IsElement self, IsEventTarget self) => EventName self Event
+search = unsafeEventName (toJSString "search")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onselectstart Mozilla Element.onselectstart documentation> 
+selectStart ::
+            (IsElement self, IsEventTarget self) => EventName self Event
+selectStart = unsafeEventName (toJSString "selectstart")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.ontouchstart Mozilla Element.ontouchstart documentation> 
+touchStart ::
+           (IsElement self, IsEventTarget self) => EventName self TouchEvent
+touchStart = unsafeEventName (toJSString "touchstart")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.ontouchmove Mozilla Element.ontouchmove documentation> 
+touchMove ::
+          (IsElement self, IsEventTarget self) => EventName self TouchEvent
+touchMove = unsafeEventName (toJSString "touchmove")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.ontouchend Mozilla Element.ontouchend documentation> 
+touchEnd ::
+         (IsElement self, IsEventTarget self) => EventName self TouchEvent
+touchEnd = unsafeEventName (toJSString "touchend")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.ontouchcancel Mozilla Element.ontouchcancel documentation> 
+touchCancel ::
+            (IsElement self, IsEventTarget self) => EventName self TouchEvent
+touchCancel = unsafeEventName (toJSString "touchcancel")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onwebkitfullscreenchange Mozilla Element.onwebkitfullscreenchange documentation> 
+webKitFullscreenChange ::
+                       (IsElement self, IsEventTarget self) => EventName self Event
+webKitFullscreenChange
+  = unsafeEventName (toJSString "webkitfullscreenchange")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onwebkitfullscreenerror Mozilla Element.onwebkitfullscreenerror documentation> 
+webKitFullscreenError ::
+                      (IsElement self, IsEventTarget self) => EventName self Event
+webKitFullscreenError
+  = unsafeEventName (toJSString "webkitfullscreenerror")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onwebkitwillrevealbottom Mozilla Element.onwebkitwillrevealbottom documentation> 
+webKitWillRevealBottom ::
+                       (IsElement self, IsEventTarget self) => EventName self Event
+webKitWillRevealBottom
+  = unsafeEventName (toJSString "webkitwillrevealbottom")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onwebkitwillrevealleft Mozilla Element.onwebkitwillrevealleft documentation> 
+webKitWillRevealLeft ::
+                     (IsElement self, IsEventTarget self) => EventName self Event
+webKitWillRevealLeft
+  = unsafeEventName (toJSString "webkitwillrevealleft")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onwebkitwillrevealright Mozilla Element.onwebkitwillrevealright documentation> 
+webKitWillRevealRight ::
+                      (IsElement self, IsEventTarget self) => EventName self Event
+webKitWillRevealRight
+  = unsafeEventName (toJSString "webkitwillrevealright")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onwebkitwillrevealtop Mozilla Element.onwebkitwillrevealtop documentation> 
+webKitWillRevealTop ::
+                    (IsElement self, IsEventTarget self) => EventName self Event
+webKitWillRevealTop
+  = unsafeEventName (toJSString "webkitwillrevealtop")
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/Entity.hs b/src/Language/Javascript/JSaddle/DOM/Generated/Entity.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/Entity.hs
@@ -0,0 +1,34 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.Entity
+       (getPublicId, getSystemId, getNotationName, Entity, castToEntity,
+        gTypeEntity)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Entity.publicId Mozilla Entity.publicId documentation> 
+getPublicId ::
+            (MonadDOM m, FromJSString result) => Entity -> m (Maybe result)
+getPublicId self
+  = liftDOM ((self ^. js "publicId") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Entity.systemId Mozilla Entity.systemId documentation> 
+getSystemId ::
+            (MonadDOM m, FromJSString result) => Entity -> m (Maybe result)
+getSystemId self
+  = liftDOM ((self ^. js "systemId") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Entity.notationName Mozilla Entity.notationName documentation> 
+getNotationName ::
+                (MonadDOM m, FromJSString result) => Entity -> m (Maybe result)
+getNotationName self
+  = liftDOM ((self ^. js "notationName") >>= fromMaybeJSString)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/Enums.hs b/src/Language/Javascript/JSaddle/DOM/Generated/Enums.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/Enums.hs
@@ -0,0 +1,792 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+module Language.Javascript.JSaddle.DOM.Generated.Enums
+       (KeyType(..), ToJSVal, FromJSVal, js_KeyTypeSecret,
+        js_KeyTypePublic, js_KeyTypePrivate, KeyUsage(..),
+        js_KeyUsageEncrypt, js_KeyUsageDecrypt, js_KeyUsageSign,
+        js_KeyUsageVerify, js_KeyUsageDeriveKey, js_KeyUsageDeriveBits,
+        js_KeyUsageWrapKey, js_KeyUsageUnwrapKey, CanvasWindingRule(..),
+        js_CanvasWindingRuleNonzero, js_CanvasWindingRuleEvenodd,
+        VideoPresentationMode(..), js_VideoPresentationModeFullscreen,
+        js_VideoPresentationModeOptimized, js_VideoPresentationModeInline,
+        TextTrackMode(..), js_TextTrackModeDisabled,
+        js_TextTrackModeHidden, js_TextTrackModeShowing, TextTrackKind(..),
+        js_TextTrackKindSubtitles, js_TextTrackKindCaptions,
+        js_TextTrackKindDescriptions, js_TextTrackKindChapters,
+        js_TextTrackKindMetadata, DeviceType(..), js_DeviceTypeNone,
+        js_DeviceTypeAirplay, js_DeviceTypeTvout, MediaUIPartID(..),
+        js_MediaUIPartIDOptimizedFullscreenButton,
+        js_MediaUIPartIDOptimizedFullscreenPlaceholder,
+        EndOfStreamError(..), js_EndOfStreamErrorNetwork,
+        js_EndOfStreamErrorDecode, AppendMode(..), js_AppendModeSegments,
+        js_AppendModeSequence, SourceTypeEnum(..), js_SourceTypeEnumNone,
+        js_SourceTypeEnumCamera, js_SourceTypeEnumMicrophone,
+        VideoFacingModeEnum(..), js_VideoFacingModeEnumUser,
+        js_VideoFacingModeEnumEnvironment, js_VideoFacingModeEnumLeft,
+        js_VideoFacingModeEnumRight, MediaStreamTrackState(..),
+        js_MediaStreamTrackStateNew, js_MediaStreamTrackStateLive,
+        js_MediaStreamTrackStateEnded, RTCIceTransportsEnum(..),
+        js_RTCIceTransportsEnumNone, js_RTCIceTransportsEnumRelay,
+        js_RTCIceTransportsEnumAll, RTCIdentityOptionEnum(..),
+        js_RTCIdentityOptionEnumYes, js_RTCIdentityOptionEnumNo,
+        js_RTCIdentityOptionEnumIfconfigured, ReadableStreamStateType(..),
+        js_ReadableStreamStateTypeReadable,
+        js_ReadableStreamStateTypeWaiting,
+        js_ReadableStreamStateTypeClosed,
+        js_ReadableStreamStateTypeErrored, OverSampleType(..),
+        js_OverSampleTypeNone, js_OverSampleType2x, js_OverSampleType4x,
+        PageOverlayType(..), js_PageOverlayTypeView,
+        js_PageOverlayTypeDocument, XMLHttpRequestResponseType(..),
+        js_XMLHttpRequestResponseType,
+        js_XMLHttpRequestResponseTypeArraybuffer,
+        js_XMLHttpRequestResponseTypeBlob,
+        js_XMLHttpRequestResponseTypeDocument,
+        js_XMLHttpRequestResponseTypeJson,
+        js_XMLHttpRequestResponseTypeText)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+ 
+data KeyType = KeyTypeSecret
+             | KeyTypePublic
+             | KeyTypePrivate
+             deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance ToJSVal KeyType where
+        toJSVal KeyTypeSecret = toJSVal js_KeyTypeSecret
+        toJSVal KeyTypePublic = toJSVal js_KeyTypePublic
+        toJSVal KeyTypePrivate = toJSVal js_KeyTypePrivate
+ 
+instance FromJSVal KeyType where
+        fromJSVal x
+          = x `strictEqual` js_KeyTypeSecret >>=
+              \ r ->
+                case r of
+                    True -> return (Just KeyTypeSecret)
+                    False
+                      -> x `strictEqual` js_KeyTypePublic >>=
+                           \ r ->
+                             case r of
+                                 True -> return (Just KeyTypePublic)
+                                 False
+                                   -> x `strictEqual` js_KeyTypePrivate >>=
+                                        \ r ->
+                                          case r of
+                                              True -> return (Just KeyTypePrivate)
+                                              False -> return Nothing
+js_KeyTypeSecret = "secret"
+js_KeyTypePublic = "public"
+js_KeyTypePrivate = "private"
+ 
+data KeyUsage = KeyUsageEncrypt
+              | KeyUsageDecrypt
+              | KeyUsageSign
+              | KeyUsageVerify
+              | KeyUsageDeriveKey
+              | KeyUsageDeriveBits
+              | KeyUsageWrapKey
+              | KeyUsageUnwrapKey
+              deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance ToJSVal KeyUsage where
+        toJSVal KeyUsageEncrypt = toJSVal js_KeyUsageEncrypt
+        toJSVal KeyUsageDecrypt = toJSVal js_KeyUsageDecrypt
+        toJSVal KeyUsageSign = toJSVal js_KeyUsageSign
+        toJSVal KeyUsageVerify = toJSVal js_KeyUsageVerify
+        toJSVal KeyUsageDeriveKey = toJSVal js_KeyUsageDeriveKey
+        toJSVal KeyUsageDeriveBits = toJSVal js_KeyUsageDeriveBits
+        toJSVal KeyUsageWrapKey = toJSVal js_KeyUsageWrapKey
+        toJSVal KeyUsageUnwrapKey = toJSVal js_KeyUsageUnwrapKey
+ 
+instance FromJSVal KeyUsage where
+        fromJSVal x
+          = x `strictEqual` js_KeyUsageEncrypt >>=
+              \ r ->
+                case r of
+                    True -> return (Just KeyUsageEncrypt)
+                    False
+                      -> x `strictEqual` js_KeyUsageDecrypt >>=
+                           \ r ->
+                             case r of
+                                 True -> return (Just KeyUsageDecrypt)
+                                 False
+                                   -> x `strictEqual` js_KeyUsageSign >>=
+                                        \ r ->
+                                          case r of
+                                              True -> return (Just KeyUsageSign)
+                                              False
+                                                -> x `strictEqual` js_KeyUsageVerify >>=
+                                                     \ r ->
+                                                       case r of
+                                                           True -> return (Just KeyUsageVerify)
+                                                           False
+                                                             -> x `strictEqual` js_KeyUsageDeriveKey
+                                                                  >>=
+                                                                  \ r ->
+                                                                    case r of
+                                                                        True
+                                                                          -> return
+                                                                               (Just
+                                                                                  KeyUsageDeriveKey)
+                                                                        False
+                                                                          -> x `strictEqual`
+                                                                               js_KeyUsageDeriveBits
+                                                                               >>=
+                                                                               \ r ->
+                                                                                 case r of
+                                                                                     True
+                                                                                       -> return
+                                                                                            (Just
+                                                                                               KeyUsageDeriveBits)
+                                                                                     False
+                                                                                       -> x `strictEqual`
+                                                                                            js_KeyUsageWrapKey
+                                                                                            >>=
+                                                                                            \ r ->
+                                                                                              case r
+                                                                                                of
+                                                                                                  True
+                                                                                                    -> return
+                                                                                                         (Just
+                                                                                                            KeyUsageWrapKey)
+                                                                                                  False
+                                                                                                    -> x `strictEqual`
+                                                                                                         js_KeyUsageUnwrapKey
+                                                                                                         >>=
+                                                                                                         \ r
+                                                                                                           ->
+                                                                                                           case
+                                                                                                             r
+                                                                                                             of
+                                                                                                               True
+                                                                                                                 -> return
+                                                                                                                      (Just
+                                                                                                                         KeyUsageUnwrapKey)
+                                                                                                               False
+                                                                                                                 -> return
+                                                                                                                      Nothing
+js_KeyUsageEncrypt = "encrypt"
+js_KeyUsageDecrypt = "decrypt"
+js_KeyUsageSign = "sign"
+js_KeyUsageVerify = "verify"
+js_KeyUsageDeriveKey = "deriveKey"
+js_KeyUsageDeriveBits = "deriveBits"
+js_KeyUsageWrapKey = "wrapKey"
+js_KeyUsageUnwrapKey = "unwrapKey"
+ 
+data CanvasWindingRule = CanvasWindingRuleNonzero
+                       | CanvasWindingRuleEvenodd
+                       deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance ToJSVal CanvasWindingRule where
+        toJSVal CanvasWindingRuleNonzero
+          = toJSVal js_CanvasWindingRuleNonzero
+        toJSVal CanvasWindingRuleEvenodd
+          = toJSVal js_CanvasWindingRuleEvenodd
+ 
+instance FromJSVal CanvasWindingRule where
+        fromJSVal x
+          = x `strictEqual` js_CanvasWindingRuleNonzero >>=
+              \ r ->
+                case r of
+                    True -> return (Just CanvasWindingRuleNonzero)
+                    False
+                      -> x `strictEqual` js_CanvasWindingRuleEvenodd >>=
+                           \ r ->
+                             case r of
+                                 True -> return (Just CanvasWindingRuleEvenodd)
+                                 False -> return Nothing
+js_CanvasWindingRuleNonzero = "nonzero"
+js_CanvasWindingRuleEvenodd = "evenodd"
+ 
+data VideoPresentationMode = VideoPresentationModeFullscreen
+                           | VideoPresentationModeOptimized
+                           | VideoPresentationModeInline
+                           deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance ToJSVal VideoPresentationMode where
+        toJSVal VideoPresentationModeFullscreen
+          = toJSVal js_VideoPresentationModeFullscreen
+        toJSVal VideoPresentationModeOptimized
+          = toJSVal js_VideoPresentationModeOptimized
+        toJSVal VideoPresentationModeInline
+          = toJSVal js_VideoPresentationModeInline
+ 
+instance FromJSVal VideoPresentationMode where
+        fromJSVal x
+          = x `strictEqual` js_VideoPresentationModeFullscreen >>=
+              \ r ->
+                case r of
+                    True -> return (Just VideoPresentationModeFullscreen)
+                    False
+                      -> x `strictEqual` js_VideoPresentationModeOptimized >>=
+                           \ r ->
+                             case r of
+                                 True -> return (Just VideoPresentationModeOptimized)
+                                 False
+                                   -> x `strictEqual` js_VideoPresentationModeInline >>=
+                                        \ r ->
+                                          case r of
+                                              True -> return (Just VideoPresentationModeInline)
+                                              False -> return Nothing
+js_VideoPresentationModeFullscreen = "fullscreen"
+js_VideoPresentationModeOptimized = "optimized"
+js_VideoPresentationModeInline = "inline"
+ 
+data TextTrackMode = TextTrackModeDisabled
+                   | TextTrackModeHidden
+                   | TextTrackModeShowing
+                   deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance ToJSVal TextTrackMode where
+        toJSVal TextTrackModeDisabled = toJSVal js_TextTrackModeDisabled
+        toJSVal TextTrackModeHidden = toJSVal js_TextTrackModeHidden
+        toJSVal TextTrackModeShowing = toJSVal js_TextTrackModeShowing
+ 
+instance FromJSVal TextTrackMode where
+        fromJSVal x
+          = x `strictEqual` js_TextTrackModeDisabled >>=
+              \ r ->
+                case r of
+                    True -> return (Just TextTrackModeDisabled)
+                    False
+                      -> x `strictEqual` js_TextTrackModeHidden >>=
+                           \ r ->
+                             case r of
+                                 True -> return (Just TextTrackModeHidden)
+                                 False
+                                   -> x `strictEqual` js_TextTrackModeShowing >>=
+                                        \ r ->
+                                          case r of
+                                              True -> return (Just TextTrackModeShowing)
+                                              False -> return Nothing
+js_TextTrackModeDisabled = "disabled"
+js_TextTrackModeHidden = "hidden"
+js_TextTrackModeShowing = "showing"
+ 
+data TextTrackKind = TextTrackKindSubtitles
+                   | TextTrackKindCaptions
+                   | TextTrackKindDescriptions
+                   | TextTrackKindChapters
+                   | TextTrackKindMetadata
+                   deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance ToJSVal TextTrackKind where
+        toJSVal TextTrackKindSubtitles = toJSVal js_TextTrackKindSubtitles
+        toJSVal TextTrackKindCaptions = toJSVal js_TextTrackKindCaptions
+        toJSVal TextTrackKindDescriptions
+          = toJSVal js_TextTrackKindDescriptions
+        toJSVal TextTrackKindChapters = toJSVal js_TextTrackKindChapters
+        toJSVal TextTrackKindMetadata = toJSVal js_TextTrackKindMetadata
+ 
+instance FromJSVal TextTrackKind where
+        fromJSVal x
+          = x `strictEqual` js_TextTrackKindSubtitles >>=
+              \ r ->
+                case r of
+                    True -> return (Just TextTrackKindSubtitles)
+                    False
+                      -> x `strictEqual` js_TextTrackKindCaptions >>=
+                           \ r ->
+                             case r of
+                                 True -> return (Just TextTrackKindCaptions)
+                                 False
+                                   -> x `strictEqual` js_TextTrackKindDescriptions >>=
+                                        \ r ->
+                                          case r of
+                                              True -> return (Just TextTrackKindDescriptions)
+                                              False
+                                                -> x `strictEqual` js_TextTrackKindChapters >>=
+                                                     \ r ->
+                                                       case r of
+                                                           True
+                                                             -> return (Just TextTrackKindChapters)
+                                                           False
+                                                             -> x `strictEqual`
+                                                                  js_TextTrackKindMetadata
+                                                                  >>=
+                                                                  \ r ->
+                                                                    case r of
+                                                                        True
+                                                                          -> return
+                                                                               (Just
+                                                                                  TextTrackKindMetadata)
+                                                                        False -> return Nothing
+js_TextTrackKindSubtitles = "subtitles"
+js_TextTrackKindCaptions = "captions"
+js_TextTrackKindDescriptions = "descriptions"
+js_TextTrackKindChapters = "chapters"
+js_TextTrackKindMetadata = "metadata"
+ 
+data DeviceType = DeviceTypeNone
+                | DeviceTypeAirplay
+                | DeviceTypeTvout
+                deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance ToJSVal DeviceType where
+        toJSVal DeviceTypeNone = toJSVal js_DeviceTypeNone
+        toJSVal DeviceTypeAirplay = toJSVal js_DeviceTypeAirplay
+        toJSVal DeviceTypeTvout = toJSVal js_DeviceTypeTvout
+ 
+instance FromJSVal DeviceType where
+        fromJSVal x
+          = x `strictEqual` js_DeviceTypeNone >>=
+              \ r ->
+                case r of
+                    True -> return (Just DeviceTypeNone)
+                    False
+                      -> x `strictEqual` js_DeviceTypeAirplay >>=
+                           \ r ->
+                             case r of
+                                 True -> return (Just DeviceTypeAirplay)
+                                 False
+                                   -> x `strictEqual` js_DeviceTypeTvout >>=
+                                        \ r ->
+                                          case r of
+                                              True -> return (Just DeviceTypeTvout)
+                                              False -> return Nothing
+js_DeviceTypeNone = "none"
+js_DeviceTypeAirplay = "airplay"
+js_DeviceTypeTvout = "tvout"
+ 
+data MediaUIPartID = MediaUIPartIDOptimizedFullscreenButton
+                   | MediaUIPartIDOptimizedFullscreenPlaceholder
+                   deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance ToJSVal MediaUIPartID where
+        toJSVal MediaUIPartIDOptimizedFullscreenButton
+          = toJSVal js_MediaUIPartIDOptimizedFullscreenButton
+        toJSVal MediaUIPartIDOptimizedFullscreenPlaceholder
+          = toJSVal js_MediaUIPartIDOptimizedFullscreenPlaceholder
+ 
+instance FromJSVal MediaUIPartID where
+        fromJSVal x
+          = x `strictEqual` js_MediaUIPartIDOptimizedFullscreenButton >>=
+              \ r ->
+                case r of
+                    True -> return (Just MediaUIPartIDOptimizedFullscreenButton)
+                    False
+                      -> x `strictEqual` js_MediaUIPartIDOptimizedFullscreenPlaceholder
+                           >>=
+                           \ r ->
+                             case r of
+                                 True -> return (Just MediaUIPartIDOptimizedFullscreenPlaceholder)
+                                 False -> return Nothing
+js_MediaUIPartIDOptimizedFullscreenButton
+  = "optimized-fullscreen-button"
+js_MediaUIPartIDOptimizedFullscreenPlaceholder
+  = "optimized-fullscreen-placeholder"
+ 
+data EndOfStreamError = EndOfStreamErrorNetwork
+                      | EndOfStreamErrorDecode
+                      deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance ToJSVal EndOfStreamError where
+        toJSVal EndOfStreamErrorNetwork
+          = toJSVal js_EndOfStreamErrorNetwork
+        toJSVal EndOfStreamErrorDecode = toJSVal js_EndOfStreamErrorDecode
+ 
+instance FromJSVal EndOfStreamError where
+        fromJSVal x
+          = x `strictEqual` js_EndOfStreamErrorNetwork >>=
+              \ r ->
+                case r of
+                    True -> return (Just EndOfStreamErrorNetwork)
+                    False
+                      -> x `strictEqual` js_EndOfStreamErrorDecode >>=
+                           \ r ->
+                             case r of
+                                 True -> return (Just EndOfStreamErrorDecode)
+                                 False -> return Nothing
+js_EndOfStreamErrorNetwork = "network"
+js_EndOfStreamErrorDecode = "decode"
+ 
+data AppendMode = AppendModeSegments
+                | AppendModeSequence
+                deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance ToJSVal AppendMode where
+        toJSVal AppendModeSegments = toJSVal js_AppendModeSegments
+        toJSVal AppendModeSequence = toJSVal js_AppendModeSequence
+ 
+instance FromJSVal AppendMode where
+        fromJSVal x
+          = x `strictEqual` js_AppendModeSegments >>=
+              \ r ->
+                case r of
+                    True -> return (Just AppendModeSegments)
+                    False
+                      -> x `strictEqual` js_AppendModeSequence >>=
+                           \ r ->
+                             case r of
+                                 True -> return (Just AppendModeSequence)
+                                 False -> return Nothing
+js_AppendModeSegments = "segments"
+js_AppendModeSequence = "sequence"
+ 
+data SourceTypeEnum = SourceTypeEnumNone
+                    | SourceTypeEnumCamera
+                    | SourceTypeEnumMicrophone
+                    deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance ToJSVal SourceTypeEnum where
+        toJSVal SourceTypeEnumNone = toJSVal js_SourceTypeEnumNone
+        toJSVal SourceTypeEnumCamera = toJSVal js_SourceTypeEnumCamera
+        toJSVal SourceTypeEnumMicrophone
+          = toJSVal js_SourceTypeEnumMicrophone
+ 
+instance FromJSVal SourceTypeEnum where
+        fromJSVal x
+          = x `strictEqual` js_SourceTypeEnumNone >>=
+              \ r ->
+                case r of
+                    True -> return (Just SourceTypeEnumNone)
+                    False
+                      -> x `strictEqual` js_SourceTypeEnumCamera >>=
+                           \ r ->
+                             case r of
+                                 True -> return (Just SourceTypeEnumCamera)
+                                 False
+                                   -> x `strictEqual` js_SourceTypeEnumMicrophone >>=
+                                        \ r ->
+                                          case r of
+                                              True -> return (Just SourceTypeEnumMicrophone)
+                                              False -> return Nothing
+js_SourceTypeEnumNone = "none"
+js_SourceTypeEnumCamera = "camera"
+js_SourceTypeEnumMicrophone = "microphone"
+ 
+data VideoFacingModeEnum = VideoFacingModeEnumUser
+                         | VideoFacingModeEnumEnvironment
+                         | VideoFacingModeEnumLeft
+                         | VideoFacingModeEnumRight
+                         deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance ToJSVal VideoFacingModeEnum where
+        toJSVal VideoFacingModeEnumUser
+          = toJSVal js_VideoFacingModeEnumUser
+        toJSVal VideoFacingModeEnumEnvironment
+          = toJSVal js_VideoFacingModeEnumEnvironment
+        toJSVal VideoFacingModeEnumLeft
+          = toJSVal js_VideoFacingModeEnumLeft
+        toJSVal VideoFacingModeEnumRight
+          = toJSVal js_VideoFacingModeEnumRight
+ 
+instance FromJSVal VideoFacingModeEnum where
+        fromJSVal x
+          = x `strictEqual` js_VideoFacingModeEnumUser >>=
+              \ r ->
+                case r of
+                    True -> return (Just VideoFacingModeEnumUser)
+                    False
+                      -> x `strictEqual` js_VideoFacingModeEnumEnvironment >>=
+                           \ r ->
+                             case r of
+                                 True -> return (Just VideoFacingModeEnumEnvironment)
+                                 False
+                                   -> x `strictEqual` js_VideoFacingModeEnumLeft >>=
+                                        \ r ->
+                                          case r of
+                                              True -> return (Just VideoFacingModeEnumLeft)
+                                              False
+                                                -> x `strictEqual` js_VideoFacingModeEnumRight >>=
+                                                     \ r ->
+                                                       case r of
+                                                           True
+                                                             -> return
+                                                                  (Just VideoFacingModeEnumRight)
+                                                           False -> return Nothing
+js_VideoFacingModeEnumUser = "user"
+js_VideoFacingModeEnumEnvironment = "environment"
+js_VideoFacingModeEnumLeft = "left"
+js_VideoFacingModeEnumRight = "right"
+ 
+data MediaStreamTrackState = MediaStreamTrackStateNew
+                           | MediaStreamTrackStateLive
+                           | MediaStreamTrackStateEnded
+                           deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance ToJSVal MediaStreamTrackState where
+        toJSVal MediaStreamTrackStateNew
+          = toJSVal js_MediaStreamTrackStateNew
+        toJSVal MediaStreamTrackStateLive
+          = toJSVal js_MediaStreamTrackStateLive
+        toJSVal MediaStreamTrackStateEnded
+          = toJSVal js_MediaStreamTrackStateEnded
+ 
+instance FromJSVal MediaStreamTrackState where
+        fromJSVal x
+          = x `strictEqual` js_MediaStreamTrackStateNew >>=
+              \ r ->
+                case r of
+                    True -> return (Just MediaStreamTrackStateNew)
+                    False
+                      -> x `strictEqual` js_MediaStreamTrackStateLive >>=
+                           \ r ->
+                             case r of
+                                 True -> return (Just MediaStreamTrackStateLive)
+                                 False
+                                   -> x `strictEqual` js_MediaStreamTrackStateEnded >>=
+                                        \ r ->
+                                          case r of
+                                              True -> return (Just MediaStreamTrackStateEnded)
+                                              False -> return Nothing
+js_MediaStreamTrackStateNew = "new"
+js_MediaStreamTrackStateLive = "live"
+js_MediaStreamTrackStateEnded = "ended"
+ 
+data RTCIceTransportsEnum = RTCIceTransportsEnumNone
+                          | RTCIceTransportsEnumRelay
+                          | RTCIceTransportsEnumAll
+                          deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance ToJSVal RTCIceTransportsEnum where
+        toJSVal RTCIceTransportsEnumNone
+          = toJSVal js_RTCIceTransportsEnumNone
+        toJSVal RTCIceTransportsEnumRelay
+          = toJSVal js_RTCIceTransportsEnumRelay
+        toJSVal RTCIceTransportsEnumAll
+          = toJSVal js_RTCIceTransportsEnumAll
+ 
+instance FromJSVal RTCIceTransportsEnum where
+        fromJSVal x
+          = x `strictEqual` js_RTCIceTransportsEnumNone >>=
+              \ r ->
+                case r of
+                    True -> return (Just RTCIceTransportsEnumNone)
+                    False
+                      -> x `strictEqual` js_RTCIceTransportsEnumRelay >>=
+                           \ r ->
+                             case r of
+                                 True -> return (Just RTCIceTransportsEnumRelay)
+                                 False
+                                   -> x `strictEqual` js_RTCIceTransportsEnumAll >>=
+                                        \ r ->
+                                          case r of
+                                              True -> return (Just RTCIceTransportsEnumAll)
+                                              False -> return Nothing
+js_RTCIceTransportsEnumNone = "none"
+js_RTCIceTransportsEnumRelay = "relay"
+js_RTCIceTransportsEnumAll = "all"
+ 
+data RTCIdentityOptionEnum = RTCIdentityOptionEnumYes
+                           | RTCIdentityOptionEnumNo
+                           | RTCIdentityOptionEnumIfconfigured
+                           deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance ToJSVal RTCIdentityOptionEnum where
+        toJSVal RTCIdentityOptionEnumYes
+          = toJSVal js_RTCIdentityOptionEnumYes
+        toJSVal RTCIdentityOptionEnumNo
+          = toJSVal js_RTCIdentityOptionEnumNo
+        toJSVal RTCIdentityOptionEnumIfconfigured
+          = toJSVal js_RTCIdentityOptionEnumIfconfigured
+ 
+instance FromJSVal RTCIdentityOptionEnum where
+        fromJSVal x
+          = x `strictEqual` js_RTCIdentityOptionEnumYes >>=
+              \ r ->
+                case r of
+                    True -> return (Just RTCIdentityOptionEnumYes)
+                    False
+                      -> x `strictEqual` js_RTCIdentityOptionEnumNo >>=
+                           \ r ->
+                             case r of
+                                 True -> return (Just RTCIdentityOptionEnumNo)
+                                 False
+                                   -> x `strictEqual` js_RTCIdentityOptionEnumIfconfigured >>=
+                                        \ r ->
+                                          case r of
+                                              True
+                                                -> return (Just RTCIdentityOptionEnumIfconfigured)
+                                              False -> return Nothing
+js_RTCIdentityOptionEnumYes = "yes"
+js_RTCIdentityOptionEnumNo = "no"
+js_RTCIdentityOptionEnumIfconfigured = "ifconfigured"
+ 
+data ReadableStreamStateType = ReadableStreamStateTypeReadable
+                             | ReadableStreamStateTypeWaiting
+                             | ReadableStreamStateTypeClosed
+                             | ReadableStreamStateTypeErrored
+                             deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance ToJSVal ReadableStreamStateType where
+        toJSVal ReadableStreamStateTypeReadable
+          = toJSVal js_ReadableStreamStateTypeReadable
+        toJSVal ReadableStreamStateTypeWaiting
+          = toJSVal js_ReadableStreamStateTypeWaiting
+        toJSVal ReadableStreamStateTypeClosed
+          = toJSVal js_ReadableStreamStateTypeClosed
+        toJSVal ReadableStreamStateTypeErrored
+          = toJSVal js_ReadableStreamStateTypeErrored
+ 
+instance FromJSVal ReadableStreamStateType where
+        fromJSVal x
+          = x `strictEqual` js_ReadableStreamStateTypeReadable >>=
+              \ r ->
+                case r of
+                    True -> return (Just ReadableStreamStateTypeReadable)
+                    False
+                      -> x `strictEqual` js_ReadableStreamStateTypeWaiting >>=
+                           \ r ->
+                             case r of
+                                 True -> return (Just ReadableStreamStateTypeWaiting)
+                                 False
+                                   -> x `strictEqual` js_ReadableStreamStateTypeClosed >>=
+                                        \ r ->
+                                          case r of
+                                              True -> return (Just ReadableStreamStateTypeClosed)
+                                              False
+                                                -> x `strictEqual` js_ReadableStreamStateTypeErrored
+                                                     >>=
+                                                     \ r ->
+                                                       case r of
+                                                           True
+                                                             -> return
+                                                                  (Just
+                                                                     ReadableStreamStateTypeErrored)
+                                                           False -> return Nothing
+js_ReadableStreamStateTypeReadable = "readable"
+js_ReadableStreamStateTypeWaiting = "waiting"
+js_ReadableStreamStateTypeClosed = "closed"
+js_ReadableStreamStateTypeErrored = "errored"
+ 
+data OverSampleType = OverSampleTypeNone
+                    | OverSampleType2x
+                    | OverSampleType4x
+                    deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance ToJSVal OverSampleType where
+        toJSVal OverSampleTypeNone = toJSVal js_OverSampleTypeNone
+        toJSVal OverSampleType2x = toJSVal js_OverSampleType2x
+        toJSVal OverSampleType4x = toJSVal js_OverSampleType4x
+ 
+instance FromJSVal OverSampleType where
+        fromJSVal x
+          = x `strictEqual` js_OverSampleTypeNone >>=
+              \ r ->
+                case r of
+                    True -> return (Just OverSampleTypeNone)
+                    False
+                      -> x `strictEqual` js_OverSampleType2x >>=
+                           \ r ->
+                             case r of
+                                 True -> return (Just OverSampleType2x)
+                                 False
+                                   -> x `strictEqual` js_OverSampleType4x >>=
+                                        \ r ->
+                                          case r of
+                                              True -> return (Just OverSampleType4x)
+                                              False -> return Nothing
+js_OverSampleTypeNone = "none"
+js_OverSampleType2x = "2x"
+js_OverSampleType4x = "4x"
+ 
+data PageOverlayType = PageOverlayTypeView
+                     | PageOverlayTypeDocument
+                     deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance ToJSVal PageOverlayType where
+        toJSVal PageOverlayTypeView = toJSVal js_PageOverlayTypeView
+        toJSVal PageOverlayTypeDocument
+          = toJSVal js_PageOverlayTypeDocument
+ 
+instance FromJSVal PageOverlayType where
+        fromJSVal x
+          = x `strictEqual` js_PageOverlayTypeView >>=
+              \ r ->
+                case r of
+                    True -> return (Just PageOverlayTypeView)
+                    False
+                      -> x `strictEqual` js_PageOverlayTypeDocument >>=
+                           \ r ->
+                             case r of
+                                 True -> return (Just PageOverlayTypeDocument)
+                                 False -> return Nothing
+js_PageOverlayTypeView = "view"
+js_PageOverlayTypeDocument = "document"
+ 
+data XMLHttpRequestResponseType = XMLHttpRequestResponseType
+                                | XMLHttpRequestResponseTypeArraybuffer
+                                | XMLHttpRequestResponseTypeBlob
+                                | XMLHttpRequestResponseTypeDocument
+                                | XMLHttpRequestResponseTypeJson
+                                | XMLHttpRequestResponseTypeText
+                                deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance ToJSVal XMLHttpRequestResponseType where
+        toJSVal XMLHttpRequestResponseType
+          = toJSVal js_XMLHttpRequestResponseType
+        toJSVal XMLHttpRequestResponseTypeArraybuffer
+          = toJSVal js_XMLHttpRequestResponseTypeArraybuffer
+        toJSVal XMLHttpRequestResponseTypeBlob
+          = toJSVal js_XMLHttpRequestResponseTypeBlob
+        toJSVal XMLHttpRequestResponseTypeDocument
+          = toJSVal js_XMLHttpRequestResponseTypeDocument
+        toJSVal XMLHttpRequestResponseTypeJson
+          = toJSVal js_XMLHttpRequestResponseTypeJson
+        toJSVal XMLHttpRequestResponseTypeText
+          = toJSVal js_XMLHttpRequestResponseTypeText
+ 
+instance FromJSVal XMLHttpRequestResponseType where
+        fromJSVal x
+          = x `strictEqual` js_XMLHttpRequestResponseType >>=
+              \ r ->
+                case r of
+                    True -> return (Just XMLHttpRequestResponseType)
+                    False
+                      -> x `strictEqual` js_XMLHttpRequestResponseTypeArraybuffer >>=
+                           \ r ->
+                             case r of
+                                 True -> return (Just XMLHttpRequestResponseTypeArraybuffer)
+                                 False
+                                   -> x `strictEqual` js_XMLHttpRequestResponseTypeBlob >>=
+                                        \ r ->
+                                          case r of
+                                              True -> return (Just XMLHttpRequestResponseTypeBlob)
+                                              False
+                                                -> x `strictEqual`
+                                                     js_XMLHttpRequestResponseTypeDocument
+                                                     >>=
+                                                     \ r ->
+                                                       case r of
+                                                           True
+                                                             -> return
+                                                                  (Just
+                                                                     XMLHttpRequestResponseTypeDocument)
+                                                           False
+                                                             -> x `strictEqual`
+                                                                  js_XMLHttpRequestResponseTypeJson
+                                                                  >>=
+                                                                  \ r ->
+                                                                    case r of
+                                                                        True
+                                                                          -> return
+                                                                               (Just
+                                                                                  XMLHttpRequestResponseTypeJson)
+                                                                        False
+                                                                          -> x `strictEqual`
+                                                                               js_XMLHttpRequestResponseTypeText
+                                                                               >>=
+                                                                               \ r ->
+                                                                                 case r of
+                                                                                     True
+                                                                                       -> return
+                                                                                            (Just
+                                                                                               XMLHttpRequestResponseTypeText)
+                                                                                     False
+                                                                                       -> return
+                                                                                            Nothing
+js_XMLHttpRequestResponseType = ""
+js_XMLHttpRequestResponseTypeArraybuffer = "arraybuffer"
+js_XMLHttpRequestResponseTypeBlob = "blob"
+js_XMLHttpRequestResponseTypeDocument = "document"
+js_XMLHttpRequestResponseTypeJson = "json"
+js_XMLHttpRequestResponseTypeText = "text"
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/ErrorEvent.hs b/src/Language/Javascript/JSaddle/DOM/Generated/ErrorEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/ErrorEvent.hs
@@ -0,0 +1,38 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.ErrorEvent
+       (getMessage, getFilename, getLineno, getColno, ErrorEvent,
+        castToErrorEvent, gTypeErrorEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ErrorEvent.message Mozilla ErrorEvent.message documentation> 
+getMessage ::
+           (MonadDOM m, FromJSString result) => ErrorEvent -> m result
+getMessage self
+  = liftDOM ((self ^. js "message") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ErrorEvent.filename Mozilla ErrorEvent.filename documentation> 
+getFilename ::
+            (MonadDOM m, FromJSString result) => ErrorEvent -> m result
+getFilename self
+  = liftDOM ((self ^. js "filename") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ErrorEvent.lineno Mozilla ErrorEvent.lineno documentation> 
+getLineno :: (MonadDOM m) => ErrorEvent -> m Word
+getLineno self
+  = liftDOM (round <$> ((self ^. js "lineno") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ErrorEvent.colno Mozilla ErrorEvent.colno documentation> 
+getColno :: (MonadDOM m) => ErrorEvent -> m Word
+getColno self
+  = liftDOM (round <$> ((self ^. js "colno") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/Event.hs b/src/Language/Javascript/JSaddle/DOM/Generated/Event.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/Event.hs
@@ -0,0 +1,151 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.Event
+       (stopPropagation, preventDefault, initEvent,
+        stopImmediatePropagation, pattern NONE, pattern CAPTURING_PHASE,
+        pattern AT_TARGET, pattern BUBBLING_PHASE, pattern MOUSEDOWN,
+        pattern MOUSEUP, pattern MOUSEOVER, pattern MOUSEOUT,
+        pattern MOUSEMOVE, pattern MOUSEDRAG, pattern CLICK,
+        pattern DBLCLICK, pattern KEYDOWN, pattern KEYUP, pattern KEYPRESS,
+        pattern DRAGDROP, pattern FOCUS, pattern BLUR, pattern SELECT,
+        pattern CHANGE, getType, getTarget, getCurrentTarget,
+        getEventPhase, getBubbles, getCancelable, getTimeStamp,
+        getDefaultPrevented, getSrcElement, setReturnValue, getReturnValue,
+        setCancelBubble, getCancelBubble, getClipboardData, Event,
+        castToEvent, gTypeEvent, IsEvent, toEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.stopPropagation Mozilla Event.stopPropagation documentation> 
+stopPropagation :: (MonadDOM m, IsEvent self) => self -> m ()
+stopPropagation self
+  = liftDOM (void ((toEvent self) ^. js "stopPropagation"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.preventDefault Mozilla Event.preventDefault documentation> 
+preventDefault :: (MonadDOM m, IsEvent self) => self -> m ()
+preventDefault self
+  = liftDOM (void ((toEvent self) ^. js "preventDefault"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.initEvent Mozilla Event.initEvent documentation> 
+initEvent ::
+          (MonadDOM m, IsEvent self, ToJSString eventTypeArg) =>
+            self -> eventTypeArg -> Bool -> Bool -> m ()
+initEvent self eventTypeArg canBubbleArg cancelableArg
+  = liftDOM
+      (void
+         ((toEvent self) ^. jsf "initEvent"
+            [toJSVal eventTypeArg, toJSVal canBubbleArg,
+             toJSVal cancelableArg]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.stopImmediatePropagation Mozilla Event.stopImmediatePropagation documentation> 
+stopImmediatePropagation ::
+                         (MonadDOM m, IsEvent self) => self -> m ()
+stopImmediatePropagation self
+  = liftDOM (void ((toEvent self) ^. js "stopImmediatePropagation"))
+pattern NONE = 0
+pattern CAPTURING_PHASE = 1
+pattern AT_TARGET = 2
+pattern BUBBLING_PHASE = 3
+pattern MOUSEDOWN = 1
+pattern MOUSEUP = 2
+pattern MOUSEOVER = 4
+pattern MOUSEOUT = 8
+pattern MOUSEMOVE = 16
+pattern MOUSEDRAG = 32
+pattern CLICK = 64
+pattern DBLCLICK = 128
+pattern KEYDOWN = 256
+pattern KEYUP = 512
+pattern KEYPRESS = 1024
+pattern DRAGDROP = 2048
+pattern FOCUS = 4096
+pattern BLUR = 8192
+pattern SELECT = 16384
+pattern CHANGE = 32768
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.type Mozilla Event.type documentation> 
+getType ::
+        (MonadDOM m, IsEvent self, FromJSString result) => self -> m result
+getType self
+  = liftDOM (((toEvent self) ^. js "type") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.target Mozilla Event.target documentation> 
+getTarget ::
+          (MonadDOM m, IsEvent self) => self -> m (Maybe EventTarget)
+getTarget self
+  = liftDOM (((toEvent self) ^. js "target") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.currentTarget Mozilla Event.currentTarget documentation> 
+getCurrentTarget ::
+                 (MonadDOM m, IsEvent self) => self -> m (Maybe EventTarget)
+getCurrentTarget self
+  = liftDOM (((toEvent self) ^. js "currentTarget") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.eventPhase Mozilla Event.eventPhase documentation> 
+getEventPhase :: (MonadDOM m, IsEvent self) => self -> m Word
+getEventPhase self
+  = liftDOM
+      (round <$> (((toEvent self) ^. js "eventPhase") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.bubbles Mozilla Event.bubbles documentation> 
+getBubbles :: (MonadDOM m, IsEvent self) => self -> m Bool
+getBubbles self
+  = liftDOM (((toEvent self) ^. js "bubbles") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.cancelable Mozilla Event.cancelable documentation> 
+getCancelable :: (MonadDOM m, IsEvent self) => self -> m Bool
+getCancelable self
+  = liftDOM (((toEvent self) ^. js "cancelable") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.timeStamp Mozilla Event.timeStamp documentation> 
+getTimeStamp :: (MonadDOM m, IsEvent self) => self -> m Word
+getTimeStamp self
+  = liftDOM
+      (round <$> (((toEvent self) ^. js "timeStamp") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.defaultPrevented Mozilla Event.defaultPrevented documentation> 
+getDefaultPrevented :: (MonadDOM m, IsEvent self) => self -> m Bool
+getDefaultPrevented self
+  = liftDOM (((toEvent self) ^. js "defaultPrevented") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.srcElement Mozilla Event.srcElement documentation> 
+getSrcElement ::
+              (MonadDOM m, IsEvent self) => self -> m (Maybe EventTarget)
+getSrcElement self
+  = liftDOM (((toEvent self) ^. js "srcElement") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.returnValue Mozilla Event.returnValue documentation> 
+setReturnValue ::
+               (MonadDOM m, IsEvent self) => self -> Bool -> m ()
+setReturnValue self val
+  = liftDOM ((toEvent self) ^. jss "returnValue" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.returnValue Mozilla Event.returnValue documentation> 
+getReturnValue :: (MonadDOM m, IsEvent self) => self -> m Bool
+getReturnValue self
+  = liftDOM (((toEvent self) ^. js "returnValue") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.cancelBubble Mozilla Event.cancelBubble documentation> 
+setCancelBubble ::
+                (MonadDOM m, IsEvent self) => self -> Bool -> m ()
+setCancelBubble self val
+  = liftDOM ((toEvent self) ^. jss "cancelBubble" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.cancelBubble Mozilla Event.cancelBubble documentation> 
+getCancelBubble :: (MonadDOM m, IsEvent self) => self -> m Bool
+getCancelBubble self
+  = liftDOM (((toEvent self) ^. js "cancelBubble") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.clipboardData Mozilla Event.clipboardData documentation> 
+getClipboardData ::
+                 (MonadDOM m, IsEvent self) => self -> m (Maybe DataTransfer)
+getClipboardData self
+  = liftDOM (((toEvent self) ^. js "clipboardData") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/EventListener.hs b/src/Language/Javascript/JSaddle/DOM/Generated/EventListener.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/EventListener.hs
@@ -0,0 +1,22 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.EventListener
+       (handleEvent, EventListener, castToEventListener,
+        gTypeEventListener)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/EventListener.handleEvent Mozilla EventListener.handleEvent documentation> 
+handleEvent ::
+            (MonadDOM m, IsEvent evt) => EventListener -> Maybe evt -> m ()
+handleEvent self evt
+  = liftDOM (void (self ^. jsf "handleEvent" [toJSVal evt]))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/EventSource.hs b/src/Language/Javascript/JSaddle/DOM/Generated/EventSource.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/EventSource.hs
@@ -0,0 +1,60 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.EventSource
+       (newEventSource, close, pattern CONNECTING, pattern OPEN,
+        pattern CLOSED, getUrl, getWithCredentials, getReadyState, open,
+        message, error, EventSource, castToEventSource, gTypeEventSource)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/EventSource Mozilla EventSource documentation> 
+newEventSource ::
+               (MonadDOM m, ToJSString url, IsDictionary eventSourceInit) =>
+                 url -> Maybe eventSourceInit -> m EventSource
+newEventSource url eventSourceInit
+  = liftDOM
+      (EventSource <$>
+         new (jsg "EventSource") [toJSVal url, toJSVal eventSourceInit])
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/EventSource.close Mozilla EventSource.close documentation> 
+close :: (MonadDOM m) => EventSource -> m ()
+close self = liftDOM (void (self ^. js "close"))
+pattern CONNECTING = 0
+pattern OPEN = 1
+pattern CLOSED = 2
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/EventSource.url Mozilla EventSource.url documentation> 
+getUrl ::
+       (MonadDOM m, FromJSString result) => EventSource -> m result
+getUrl self = liftDOM ((self ^. js "url") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/EventSource.withCredentials Mozilla EventSource.withCredentials documentation> 
+getWithCredentials :: (MonadDOM m) => EventSource -> m Bool
+getWithCredentials self
+  = liftDOM ((self ^. js "withCredentials") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/EventSource.readyState Mozilla EventSource.readyState documentation> 
+getReadyState :: (MonadDOM m) => EventSource -> m Word
+getReadyState self
+  = liftDOM (round <$> ((self ^. js "readyState") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/EventSource.onopen Mozilla EventSource.onopen documentation> 
+open :: EventName EventSource Event
+open = unsafeEventName (toJSString "open")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/EventSource.onmessage Mozilla EventSource.onmessage documentation> 
+message :: EventName EventSource MessageEvent
+message = unsafeEventName (toJSString "message")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/EventSource.onerror Mozilla EventSource.onerror documentation> 
+error :: EventName EventSource UIEvent
+error = unsafeEventName (toJSString "error")
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/EventTarget.hs b/src/Language/Javascript/JSaddle/DOM/Generated/EventTarget.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/EventTarget.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.EventTarget
+       (addEventListener, removeEventListener, dispatchEvent, EventTarget,
+        castToEventTarget, gTypeEventTarget, IsEventTarget, toEventTarget)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/EventTarget.addEventListener Mozilla EventTarget.addEventListener documentation> 
+addEventListener ::
+                 (MonadDOM m, IsEventTarget self, ToJSString type') =>
+                   self -> type' -> Maybe EventListener -> Bool -> m ()
+addEventListener self type' listener useCapture
+  = liftDOM
+      (void
+         ((toEventTarget self) ^. jsf "addEventListener"
+            [toJSVal type', toJSVal listener, toJSVal useCapture]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/EventTarget.removeEventListener Mozilla EventTarget.removeEventListener documentation> 
+removeEventListener ::
+                    (MonadDOM m, IsEventTarget self, ToJSString type') =>
+                      self -> type' -> Maybe EventListener -> Bool -> m ()
+removeEventListener self type' listener useCapture
+  = liftDOM
+      (void
+         ((toEventTarget self) ^. jsf "removeEventListener"
+            [toJSVal type', toJSVal listener, toJSVal useCapture]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/EventTarget.dispatchEvent Mozilla EventTarget.dispatchEvent documentation> 
+dispatchEvent ::
+              (MonadDOM m, IsEventTarget self, IsEvent event) =>
+                self -> Maybe event -> m Bool
+dispatchEvent self event
+  = liftDOM
+      (((toEventTarget self) ^. jsf "dispatchEvent" [toJSVal event]) >>=
+         valToBool)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/File.hs b/src/Language/Javascript/JSaddle/DOM/Generated/File.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/File.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.File
+       (getName, getLastModifiedDate, File, castToFile, gTypeFile) where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/File.name Mozilla File.name documentation> 
+getName :: (MonadDOM m, FromJSString result) => File -> m result
+getName self = liftDOM ((self ^. js "name") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/File.lastModifiedDate Mozilla File.lastModifiedDate documentation> 
+getLastModifiedDate :: (MonadDOM m) => File -> m (Maybe Date)
+getLastModifiedDate self
+  = liftDOM ((self ^. js "lastModifiedDate") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/FileError.hs b/src/Language/Javascript/JSaddle/DOM/Generated/FileError.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/FileError.hs
@@ -0,0 +1,38 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.FileError
+       (pattern NOT_FOUND_ERR, pattern SECURITY_ERR, pattern ABORT_ERR,
+        pattern NOT_READABLE_ERR, pattern ENCODING_ERR,
+        pattern NO_MODIFICATION_ALLOWED_ERR, pattern INVALID_STATE_ERR,
+        pattern SYNTAX_ERR, pattern INVALID_MODIFICATION_ERR,
+        pattern QUOTA_EXCEEDED_ERR, pattern TYPE_MISMATCH_ERR,
+        pattern PATH_EXISTS_ERR, getCode, FileError, castToFileError,
+        gTypeFileError)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+pattern NOT_FOUND_ERR = 1
+pattern SECURITY_ERR = 2
+pattern ABORT_ERR = 3
+pattern NOT_READABLE_ERR = 4
+pattern ENCODING_ERR = 5
+pattern NO_MODIFICATION_ALLOWED_ERR = 6
+pattern INVALID_STATE_ERR = 7
+pattern SYNTAX_ERR = 8
+pattern INVALID_MODIFICATION_ERR = 9
+pattern QUOTA_EXCEEDED_ERR = 10
+pattern TYPE_MISMATCH_ERR = 11
+pattern PATH_EXISTS_ERR = 12
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileError.code Mozilla FileError.code documentation> 
+getCode :: (MonadDOM m) => FileError -> m Word
+getCode self
+  = liftDOM (round <$> ((self ^. js "code") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/FileList.hs b/src/Language/Javascript/JSaddle/DOM/Generated/FileList.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/FileList.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.FileList
+       (item, getLength, FileList, castToFileList, gTypeFileList) where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileList.item Mozilla FileList.item documentation> 
+item :: (MonadDOM m) => FileList -> Word -> m (Maybe File)
+item self index
+  = liftDOM ((self ^. jsf "item" [toJSVal index]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileList.length Mozilla FileList.length documentation> 
+getLength :: (MonadDOM m) => FileList -> m Word
+getLength self
+  = liftDOM (round <$> ((self ^. js "length") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/FileReader.hs b/src/Language/Javascript/JSaddle/DOM/Generated/FileReader.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/FileReader.hs
@@ -0,0 +1,93 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.FileReader
+       (newFileReader, readAsArrayBuffer, readAsBinaryString, readAsText,
+        readAsDataURL, abort, pattern EMPTY, pattern LOADING, pattern DONE,
+        getReadyState, getResult, getError, loadStart, progress, load,
+        abortEvent, error, loadEnd, FileReader, castToFileReader,
+        gTypeFileReader)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader Mozilla FileReader documentation> 
+newFileReader :: (MonadDOM m) => m FileReader
+newFileReader = liftDOM (FileReader <$> new (jsg "FileReader") ())
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.readAsArrayBuffer Mozilla FileReader.readAsArrayBuffer documentation> 
+readAsArrayBuffer ::
+                  (MonadDOM m, IsBlob blob) => FileReader -> Maybe blob -> m ()
+readAsArrayBuffer self blob
+  = liftDOM (void (self ^. jsf "readAsArrayBuffer" [toJSVal blob]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.readAsBinaryString Mozilla FileReader.readAsBinaryString documentation> 
+readAsBinaryString ::
+                   (MonadDOM m, IsBlob blob) => FileReader -> Maybe blob -> m ()
+readAsBinaryString self blob
+  = liftDOM (void (self ^. jsf "readAsBinaryString" [toJSVal blob]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.readAsText Mozilla FileReader.readAsText documentation> 
+readAsText ::
+           (MonadDOM m, IsBlob blob, ToJSString encoding) =>
+             FileReader -> Maybe blob -> encoding -> m ()
+readAsText self blob encoding
+  = liftDOM
+      (void (self ^. jsf "readAsText" [toJSVal blob, toJSVal encoding]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.readAsDataURL Mozilla FileReader.readAsDataURL documentation> 
+readAsDataURL ::
+              (MonadDOM m, IsBlob blob) => FileReader -> Maybe blob -> m ()
+readAsDataURL self blob
+  = liftDOM (void (self ^. jsf "readAsDataURL" [toJSVal blob]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.abort Mozilla FileReader.abort documentation> 
+abort :: (MonadDOM m) => FileReader -> m ()
+abort self = liftDOM (void (self ^. js "abort"))
+pattern EMPTY = 0
+pattern LOADING = 1
+pattern DONE = 2
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.readyState Mozilla FileReader.readyState documentation> 
+getReadyState :: (MonadDOM m) => FileReader -> m Word
+getReadyState self
+  = liftDOM (round <$> ((self ^. js "readyState") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.result Mozilla FileReader.result documentation> 
+getResult :: (MonadDOM m) => FileReader -> m JSVal
+getResult self = liftDOM ((self ^. js "result") >>= toJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.error Mozilla FileReader.error documentation> 
+getError :: (MonadDOM m) => FileReader -> m (Maybe FileError)
+getError self = liftDOM ((self ^. js "error") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.onloadstart Mozilla FileReader.onloadstart documentation> 
+loadStart :: EventName FileReader ProgressEvent
+loadStart = unsafeEventName (toJSString "loadstart")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.onprogress Mozilla FileReader.onprogress documentation> 
+progress :: EventName FileReader ProgressEvent
+progress = unsafeEventName (toJSString "progress")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.onload Mozilla FileReader.onload documentation> 
+load :: EventName FileReader UIEvent
+load = unsafeEventName (toJSString "load")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.onabort Mozilla FileReader.onabort documentation> 
+abortEvent :: EventName FileReader UIEvent
+abortEvent = unsafeEventName (toJSString "abort")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.onerror Mozilla FileReader.onerror documentation> 
+error :: EventName FileReader UIEvent
+error = unsafeEventName (toJSString "error")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.onloadend Mozilla FileReader.onloadend documentation> 
+loadEnd :: EventName FileReader ProgressEvent
+loadEnd = unsafeEventName (toJSString "loadend")
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/FileReaderSync.hs b/src/Language/Javascript/JSaddle/DOM/Generated/FileReaderSync.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/FileReaderSync.hs
@@ -0,0 +1,58 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.FileReaderSync
+       (newFileReaderSync, readAsArrayBuffer, readAsBinaryString,
+        readAsText, readAsDataURL, FileReaderSync, castToFileReaderSync,
+        gTypeFileReaderSync)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReaderSync Mozilla FileReaderSync documentation> 
+newFileReaderSync :: (MonadDOM m) => m FileReaderSync
+newFileReaderSync
+  = liftDOM (FileReaderSync <$> new (jsg "FileReaderSync") ())
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReaderSync.readAsArrayBuffer Mozilla FileReaderSync.readAsArrayBuffer documentation> 
+readAsArrayBuffer ::
+                  (MonadDOM m, IsBlob blob) =>
+                    FileReaderSync -> Maybe blob -> m (Maybe ArrayBuffer)
+readAsArrayBuffer self blob
+  = liftDOM
+      ((self ^. jsf "readAsArrayBuffer" [toJSVal blob]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReaderSync.readAsBinaryString Mozilla FileReaderSync.readAsBinaryString documentation> 
+readAsBinaryString ::
+                   (MonadDOM m, IsBlob blob, FromJSString result) =>
+                     FileReaderSync -> Maybe blob -> m result
+readAsBinaryString self blob
+  = liftDOM
+      ((self ^. jsf "readAsBinaryString" [toJSVal blob]) >>=
+         fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReaderSync.readAsText Mozilla FileReaderSync.readAsText documentation> 
+readAsText ::
+           (MonadDOM m, IsBlob blob, ToJSString encoding,
+            FromJSString result) =>
+             FileReaderSync -> Maybe blob -> encoding -> m result
+readAsText self blob encoding
+  = liftDOM
+      ((self ^. jsf "readAsText" [toJSVal blob, toJSVal encoding]) >>=
+         fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReaderSync.readAsDataURL Mozilla FileReaderSync.readAsDataURL documentation> 
+readAsDataURL ::
+              (MonadDOM m, IsBlob blob, FromJSString result) =>
+                FileReaderSync -> Maybe blob -> m result
+readAsDataURL self blob
+  = liftDOM
+      ((self ^. jsf "readAsDataURL" [toJSVal blob]) >>=
+         fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/FocusEvent.hs b/src/Language/Javascript/JSaddle/DOM/Generated/FocusEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/FocusEvent.hs
@@ -0,0 +1,21 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.FocusEvent
+       (getRelatedTarget, FocusEvent, castToFocusEvent, gTypeFocusEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FocusEvent.relatedTarget Mozilla FocusEvent.relatedTarget documentation> 
+getRelatedTarget ::
+                 (MonadDOM m) => FocusEvent -> m (Maybe EventTarget)
+getRelatedTarget self
+  = liftDOM ((self ^. js "relatedTarget") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/FontLoader.hs b/src/Language/Javascript/JSaddle/DOM/Generated/FontLoader.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/FontLoader.hs
@@ -0,0 +1,64 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.FontLoader
+       (checkFont, loadFont, notifyWhenFontsReady, loading, loadingDone,
+        loadStart, load, error, getLoading, FontLoader, castToFontLoader,
+        gTypeFontLoader)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FontLoader.checkFont Mozilla FontLoader.checkFont documentation> 
+checkFont ::
+          (MonadDOM m, ToJSString font, ToJSString text) =>
+            FontLoader -> font -> text -> m Bool
+checkFont self font text
+  = liftDOM
+      ((self ^. jsf "checkFont" [toJSVal font, toJSVal text]) >>=
+         valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FontLoader.loadFont Mozilla FontLoader.loadFont documentation> 
+loadFont ::
+         (MonadDOM m, IsDictionary params) =>
+           FontLoader -> Maybe params -> m ()
+loadFont self params
+  = liftDOM (void (self ^. jsf "loadFont" [toJSVal params]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FontLoader.notifyWhenFontsReady Mozilla FontLoader.notifyWhenFontsReady documentation> 
+notifyWhenFontsReady ::
+                     (MonadDOM m) => FontLoader -> Maybe VoidCallback -> m ()
+notifyWhenFontsReady self callback
+  = liftDOM
+      (void (self ^. jsf "notifyWhenFontsReady" [toJSVal callback]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FontLoader.onloading Mozilla FontLoader.onloading documentation> 
+loading :: EventName FontLoader Event
+loading = unsafeEventName (toJSString "loading")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FontLoader.onloadingdone Mozilla FontLoader.onloadingdone documentation> 
+loadingDone :: EventName FontLoader Event
+loadingDone = unsafeEventName (toJSString "loadingdone")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FontLoader.onloadstart Mozilla FontLoader.onloadstart documentation> 
+loadStart :: EventName FontLoader ProgressEvent
+loadStart = unsafeEventName (toJSString "loadstart")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FontLoader.onload Mozilla FontLoader.onload documentation> 
+load :: EventName FontLoader UIEvent
+load = unsafeEventName (toJSString "load")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FontLoader.onerror Mozilla FontLoader.onerror documentation> 
+error :: EventName FontLoader UIEvent
+error = unsafeEventName (toJSString "error")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FontLoader.loading Mozilla FontLoader.loading documentation> 
+getLoading :: (MonadDOM m) => FontLoader -> m Bool
+getLoading self = liftDOM ((self ^. js "loading") >>= valToBool)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/FormData.hs b/src/Language/Javascript/JSaddle/DOM/Generated/FormData.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/FormData.hs
@@ -0,0 +1,31 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.FormData
+       (newFormData, append, FormData, castToFormData, gTypeFormData)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FormData Mozilla FormData documentation> 
+newFormData :: (MonadDOM m) => Maybe HTMLFormElement -> m FormData
+newFormData form
+  = liftDOM (FormData <$> new (jsg "FormData") [toJSVal form])
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FormData.append Mozilla FormData.append documentation> 
+append ::
+       (MonadDOM m, ToJSString name, ToJSString value,
+        ToJSString filename) =>
+         FormData -> name -> value -> filename -> m ()
+append self name value filename
+  = liftDOM
+      (void
+         (self ^. jsf "append"
+            [toJSVal name, toJSVal value, toJSVal filename]))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/GainNode.hs b/src/Language/Javascript/JSaddle/DOM/Generated/GainNode.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/GainNode.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.GainNode
+       (getGain, GainNode, castToGainNode, gTypeGainNode) where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GainNode.gain Mozilla GainNode.gain documentation> 
+getGain :: (MonadDOM m) => GainNode -> m (Maybe AudioParam)
+getGain self = liftDOM ((self ^. js "gain") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/Gamepad.hs b/src/Language/Javascript/JSaddle/DOM/Generated/Gamepad.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/Gamepad.hs
@@ -0,0 +1,50 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.Gamepad
+       (getId, getIndex, getConnected, getTimestamp, getMapping, getAxes,
+        getButtons, Gamepad, castToGamepad, gTypeGamepad)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Gamepad.id Mozilla Gamepad.id documentation> 
+getId :: (MonadDOM m, FromJSString result) => Gamepad -> m result
+getId self = liftDOM ((self ^. js "id") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Gamepad.index Mozilla Gamepad.index documentation> 
+getIndex :: (MonadDOM m) => Gamepad -> m Word
+getIndex self
+  = liftDOM (round <$> ((self ^. js "index") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Gamepad.connected Mozilla Gamepad.connected documentation> 
+getConnected :: (MonadDOM m) => Gamepad -> m Bool
+getConnected self
+  = liftDOM ((self ^. js "connected") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Gamepad.timestamp Mozilla Gamepad.timestamp documentation> 
+getTimestamp :: (MonadDOM m) => Gamepad -> m Double
+getTimestamp self
+  = liftDOM ((self ^. js "timestamp") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Gamepad.mapping Mozilla Gamepad.mapping documentation> 
+getMapping ::
+           (MonadDOM m, FromJSString result) => Gamepad -> m result
+getMapping self
+  = liftDOM ((self ^. js "mapping") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Gamepad.axes Mozilla Gamepad.axes documentation> 
+getAxes :: (MonadDOM m) => Gamepad -> m [Double]
+getAxes self
+  = liftDOM ((self ^. js "axes") >>= fromJSArrayUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Gamepad.buttons Mozilla Gamepad.buttons documentation> 
+getButtons :: (MonadDOM m) => Gamepad -> m [Maybe GamepadButton]
+getButtons self = liftDOM ((self ^. js "buttons") >>= fromJSArray)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/GamepadButton.hs b/src/Language/Javascript/JSaddle/DOM/Generated/GamepadButton.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/GamepadButton.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.GamepadButton
+       (getPressed, getValue, GamepadButton, castToGamepadButton,
+        gTypeGamepadButton)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GamepadButton.pressed Mozilla GamepadButton.pressed documentation> 
+getPressed :: (MonadDOM m) => GamepadButton -> m Bool
+getPressed self = liftDOM ((self ^. js "pressed") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GamepadButton.value Mozilla GamepadButton.value documentation> 
+getValue :: (MonadDOM m) => GamepadButton -> m Double
+getValue self = liftDOM ((self ^. js "value") >>= valToNumber)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/GamepadEvent.hs b/src/Language/Javascript/JSaddle/DOM/Generated/GamepadEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/GamepadEvent.hs
@@ -0,0 +1,19 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.GamepadEvent
+       (getGamepad, GamepadEvent, castToGamepadEvent, gTypeGamepadEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GamepadEvent.gamepad Mozilla GamepadEvent.gamepad documentation> 
+getGamepad :: (MonadDOM m) => GamepadEvent -> m (Maybe Gamepad)
+getGamepad self = liftDOM ((self ^. js "gamepad") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/Geolocation.hs b/src/Language/Javascript/JSaddle/DOM/Generated/Geolocation.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/Geolocation.hs
@@ -0,0 +1,46 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.Geolocation
+       (getCurrentPosition, watchPosition, clearWatch, Geolocation,
+        castToGeolocation, gTypeGeolocation)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Geolocation.getCurrentPosition Mozilla Geolocation.getCurrentPosition documentation> 
+getCurrentPosition ::
+                   (MonadDOM m, IsPositionOptions options) =>
+                     Geolocation ->
+                       Maybe PositionCallback ->
+                         Maybe PositionErrorCallback -> Maybe options -> m ()
+getCurrentPosition self successCallback errorCallback options
+  = liftDOM
+      (void
+         (self ^. jsf "getCurrentPosition"
+            [toJSVal successCallback, toJSVal errorCallback, toJSVal options]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Geolocation.watchPosition Mozilla Geolocation.watchPosition documentation> 
+watchPosition ::
+              (MonadDOM m, IsPositionOptions options) =>
+                Geolocation ->
+                  Maybe PositionCallback ->
+                    Maybe PositionErrorCallback -> Maybe options -> m Int
+watchPosition self successCallback errorCallback options
+  = liftDOM
+      (round <$>
+         ((self ^. jsf "watchPosition"
+             [toJSVal successCallback, toJSVal errorCallback, toJSVal options])
+            >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Geolocation.clearWatch Mozilla Geolocation.clearWatch documentation> 
+clearWatch :: (MonadDOM m) => Geolocation -> Int -> m ()
+clearWatch self watchID
+  = liftDOM (void (self ^. jsf "clearWatch" [toJSVal watchID]))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/Geoposition.hs b/src/Language/Javascript/JSaddle/DOM/Generated/Geoposition.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/Geoposition.hs
@@ -0,0 +1,25 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.Geoposition
+       (getCoords, getTimestamp, Geoposition, castToGeoposition,
+        gTypeGeoposition)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Geoposition.coords Mozilla Geoposition.coords documentation> 
+getCoords :: (MonadDOM m) => Geoposition -> m (Maybe Coordinates)
+getCoords self = liftDOM ((self ^. js "coords") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Geoposition.timestamp Mozilla Geoposition.timestamp documentation> 
+getTimestamp :: (MonadDOM m) => Geoposition -> m Word
+getTimestamp self
+  = liftDOM (round <$> ((self ^. js "timestamp") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HTMLAllCollection.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLAllCollection.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLAllCollection.hs
@@ -0,0 +1,40 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HTMLAllCollection
+       (item, namedItem, tags, getLength, HTMLAllCollection,
+        castToHTMLAllCollection, gTypeHTMLAllCollection)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAllCollection.item Mozilla HTMLAllCollection.item documentation> 
+item :: (MonadDOM m) => HTMLAllCollection -> Word -> m (Maybe Node)
+item self index
+  = liftDOM ((self ^. jsf "item" [toJSVal index]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAllCollection.namedItem Mozilla HTMLAllCollection.namedItem documentation> 
+namedItem ::
+          (MonadDOM m, ToJSString name) =>
+            HTMLAllCollection -> name -> m (Maybe Node)
+namedItem self name
+  = liftDOM ((self ^. jsf "namedItem" [toJSVal name]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAllCollection.tags Mozilla HTMLAllCollection.tags documentation> 
+tags ::
+     (MonadDOM m, ToJSString name) =>
+       HTMLAllCollection -> name -> m (Maybe NodeList)
+tags self name
+  = liftDOM ((self ^. jsf "tags" [toJSVal name]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAllCollection.length Mozilla HTMLAllCollection.length documentation> 
+getLength :: (MonadDOM m) => HTMLAllCollection -> m Word
+getLength self
+  = liftDOM (round <$> ((self ^. js "length") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HTMLAnchorElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLAnchorElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLAnchorElement.hs
@@ -0,0 +1,270 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HTMLAnchorElement
+       (toString, setCharset, getCharset, setCoords, getCoords,
+        setDownload, getDownload, setHref, getHref, setHreflang,
+        getHreflang, setName, getName, setPing, getPing, setRel, getRel,
+        setRev, getRev, setShape, getShape, setTarget, getTarget, setType,
+        getType, setHash, getHash, setHost, getHost, setHostname,
+        getHostname, setPathname, getPathname, setPort, getPort,
+        setProtocol, getProtocol, setSearch, getSearch, getOrigin, setText,
+        getText, getRelList, HTMLAnchorElement, castToHTMLAnchorElement,
+        gTypeHTMLAnchorElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.toString Mozilla HTMLAnchorElement.toString documentation> 
+toString ::
+         (MonadDOM m, FromJSString result) => HTMLAnchorElement -> m result
+toString self
+  = liftDOM ((self ^. js "toString") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.charset Mozilla HTMLAnchorElement.charset documentation> 
+setCharset ::
+           (MonadDOM m, ToJSString val) => HTMLAnchorElement -> val -> m ()
+setCharset self val = liftDOM (self ^. jss "charset" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.charset Mozilla HTMLAnchorElement.charset documentation> 
+getCharset ::
+           (MonadDOM m, FromJSString result) => HTMLAnchorElement -> m result
+getCharset self
+  = liftDOM ((self ^. js "charset") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.coords Mozilla HTMLAnchorElement.coords documentation> 
+setCoords ::
+          (MonadDOM m, ToJSString val) => HTMLAnchorElement -> val -> m ()
+setCoords self val = liftDOM (self ^. jss "coords" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.coords Mozilla HTMLAnchorElement.coords documentation> 
+getCoords ::
+          (MonadDOM m, FromJSString result) => HTMLAnchorElement -> m result
+getCoords self
+  = liftDOM ((self ^. js "coords") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.download Mozilla HTMLAnchorElement.download documentation> 
+setDownload ::
+            (MonadDOM m, ToJSString val) => HTMLAnchorElement -> val -> m ()
+setDownload self val
+  = liftDOM (self ^. jss "download" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.download Mozilla HTMLAnchorElement.download documentation> 
+getDownload ::
+            (MonadDOM m, FromJSString result) => HTMLAnchorElement -> m result
+getDownload self
+  = liftDOM ((self ^. js "download") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.href Mozilla HTMLAnchorElement.href documentation> 
+setHref ::
+        (MonadDOM m, ToJSString val) => HTMLAnchorElement -> val -> m ()
+setHref self val = liftDOM (self ^. jss "href" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.href Mozilla HTMLAnchorElement.href documentation> 
+getHref ::
+        (MonadDOM m, FromJSString result) => HTMLAnchorElement -> m result
+getHref self = liftDOM ((self ^. js "href") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.hreflang Mozilla HTMLAnchorElement.hreflang documentation> 
+setHreflang ::
+            (MonadDOM m, ToJSString val) => HTMLAnchorElement -> val -> m ()
+setHreflang self val
+  = liftDOM (self ^. jss "hreflang" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.hreflang Mozilla HTMLAnchorElement.hreflang documentation> 
+getHreflang ::
+            (MonadDOM m, FromJSString result) => HTMLAnchorElement -> m result
+getHreflang self
+  = liftDOM ((self ^. js "hreflang") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.name Mozilla HTMLAnchorElement.name documentation> 
+setName ::
+        (MonadDOM m, ToJSString val) => HTMLAnchorElement -> val -> m ()
+setName self val = liftDOM (self ^. jss "name" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.name Mozilla HTMLAnchorElement.name documentation> 
+getName ::
+        (MonadDOM m, FromJSString result) => HTMLAnchorElement -> m result
+getName self = liftDOM ((self ^. js "name") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.ping Mozilla HTMLAnchorElement.ping documentation> 
+setPing ::
+        (MonadDOM m, ToJSString val) => HTMLAnchorElement -> val -> m ()
+setPing self val = liftDOM (self ^. jss "ping" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.ping Mozilla HTMLAnchorElement.ping documentation> 
+getPing ::
+        (MonadDOM m, FromJSString result) => HTMLAnchorElement -> m result
+getPing self = liftDOM ((self ^. js "ping") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.rel Mozilla HTMLAnchorElement.rel documentation> 
+setRel ::
+       (MonadDOM m, ToJSString val) => HTMLAnchorElement -> val -> m ()
+setRel self val = liftDOM (self ^. jss "rel" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.rel Mozilla HTMLAnchorElement.rel documentation> 
+getRel ::
+       (MonadDOM m, FromJSString result) => HTMLAnchorElement -> m result
+getRel self = liftDOM ((self ^. js "rel") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.rev Mozilla HTMLAnchorElement.rev documentation> 
+setRev ::
+       (MonadDOM m, ToJSString val) => HTMLAnchorElement -> val -> m ()
+setRev self val = liftDOM (self ^. jss "rev" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.rev Mozilla HTMLAnchorElement.rev documentation> 
+getRev ::
+       (MonadDOM m, FromJSString result) => HTMLAnchorElement -> m result
+getRev self = liftDOM ((self ^. js "rev") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.shape Mozilla HTMLAnchorElement.shape documentation> 
+setShape ::
+         (MonadDOM m, ToJSString val) => HTMLAnchorElement -> val -> m ()
+setShape self val = liftDOM (self ^. jss "shape" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.shape Mozilla HTMLAnchorElement.shape documentation> 
+getShape ::
+         (MonadDOM m, FromJSString result) => HTMLAnchorElement -> m result
+getShape self
+  = liftDOM ((self ^. js "shape") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.target Mozilla HTMLAnchorElement.target documentation> 
+setTarget ::
+          (MonadDOM m, ToJSString val) => HTMLAnchorElement -> val -> m ()
+setTarget self val = liftDOM (self ^. jss "target" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.target Mozilla HTMLAnchorElement.target documentation> 
+getTarget ::
+          (MonadDOM m, FromJSString result) => HTMLAnchorElement -> m result
+getTarget self
+  = liftDOM ((self ^. js "target") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.type Mozilla HTMLAnchorElement.type documentation> 
+setType ::
+        (MonadDOM m, ToJSString val) => HTMLAnchorElement -> val -> m ()
+setType self val = liftDOM (self ^. jss "type" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.type Mozilla HTMLAnchorElement.type documentation> 
+getType ::
+        (MonadDOM m, FromJSString result) => HTMLAnchorElement -> m result
+getType self = liftDOM ((self ^. js "type") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.hash Mozilla HTMLAnchorElement.hash documentation> 
+setHash ::
+        (MonadDOM m, ToJSString val) =>
+          HTMLAnchorElement -> Maybe val -> m ()
+setHash self val = liftDOM (self ^. jss "hash" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.hash Mozilla HTMLAnchorElement.hash documentation> 
+getHash ::
+        (MonadDOM m, FromJSString result) =>
+          HTMLAnchorElement -> m (Maybe result)
+getHash self = liftDOM ((self ^. js "hash") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.host Mozilla HTMLAnchorElement.host documentation> 
+setHost ::
+        (MonadDOM m, ToJSString val) =>
+          HTMLAnchorElement -> Maybe val -> m ()
+setHost self val = liftDOM (self ^. jss "host" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.host Mozilla HTMLAnchorElement.host documentation> 
+getHost ::
+        (MonadDOM m, FromJSString result) =>
+          HTMLAnchorElement -> m (Maybe result)
+getHost self = liftDOM ((self ^. js "host") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.hostname Mozilla HTMLAnchorElement.hostname documentation> 
+setHostname ::
+            (MonadDOM m, ToJSString val) =>
+              HTMLAnchorElement -> Maybe val -> m ()
+setHostname self val
+  = liftDOM (self ^. jss "hostname" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.hostname Mozilla HTMLAnchorElement.hostname documentation> 
+getHostname ::
+            (MonadDOM m, FromJSString result) =>
+              HTMLAnchorElement -> m (Maybe result)
+getHostname self
+  = liftDOM ((self ^. js "hostname") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.pathname Mozilla HTMLAnchorElement.pathname documentation> 
+setPathname ::
+            (MonadDOM m, ToJSString val) =>
+              HTMLAnchorElement -> Maybe val -> m ()
+setPathname self val
+  = liftDOM (self ^. jss "pathname" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.pathname Mozilla HTMLAnchorElement.pathname documentation> 
+getPathname ::
+            (MonadDOM m, FromJSString result) =>
+              HTMLAnchorElement -> m (Maybe result)
+getPathname self
+  = liftDOM ((self ^. js "pathname") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.port Mozilla HTMLAnchorElement.port documentation> 
+setPort ::
+        (MonadDOM m, ToJSString val) =>
+          HTMLAnchorElement -> Maybe val -> m ()
+setPort self val = liftDOM (self ^. jss "port" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.port Mozilla HTMLAnchorElement.port documentation> 
+getPort ::
+        (MonadDOM m, FromJSString result) =>
+          HTMLAnchorElement -> m (Maybe result)
+getPort self = liftDOM ((self ^. js "port") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.protocol Mozilla HTMLAnchorElement.protocol documentation> 
+setProtocol ::
+            (MonadDOM m, ToJSString val) =>
+              HTMLAnchorElement -> Maybe val -> m ()
+setProtocol self val
+  = liftDOM (self ^. jss "protocol" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.protocol Mozilla HTMLAnchorElement.protocol documentation> 
+getProtocol ::
+            (MonadDOM m, FromJSString result) =>
+              HTMLAnchorElement -> m (Maybe result)
+getProtocol self
+  = liftDOM ((self ^. js "protocol") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.search Mozilla HTMLAnchorElement.search documentation> 
+setSearch ::
+          (MonadDOM m, ToJSString val) =>
+            HTMLAnchorElement -> Maybe val -> m ()
+setSearch self val = liftDOM (self ^. jss "search" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.search Mozilla HTMLAnchorElement.search documentation> 
+getSearch ::
+          (MonadDOM m, FromJSString result) =>
+            HTMLAnchorElement -> m (Maybe result)
+getSearch self
+  = liftDOM ((self ^. js "search") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.origin Mozilla HTMLAnchorElement.origin documentation> 
+getOrigin ::
+          (MonadDOM m, FromJSString result) =>
+            HTMLAnchorElement -> m (Maybe result)
+getOrigin self
+  = liftDOM ((self ^. js "origin") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.text Mozilla HTMLAnchorElement.text documentation> 
+setText ::
+        (MonadDOM m, ToJSString val) => HTMLAnchorElement -> val -> m ()
+setText self val = liftDOM (self ^. jss "text" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.text Mozilla HTMLAnchorElement.text documentation> 
+getText ::
+        (MonadDOM m, FromJSString result) => HTMLAnchorElement -> m result
+getText self = liftDOM ((self ^. js "text") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.relList Mozilla HTMLAnchorElement.relList documentation> 
+getRelList ::
+           (MonadDOM m) => HTMLAnchorElement -> m (Maybe DOMTokenList)
+getRelList self = liftDOM ((self ^. js "relList") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HTMLAppletElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLAppletElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLAppletElement.hs
@@ -0,0 +1,138 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HTMLAppletElement
+       (setAlign, getAlign, setAlt, getAlt, setArchive, getArchive,
+        setCode, getCode, setCodeBase, getCodeBase, setHeight, getHeight,
+        setHspace, getHspace, setName, getName, setObject, getObject,
+        setVspace, getVspace, setWidth, getWidth, HTMLAppletElement,
+        castToHTMLAppletElement, gTypeHTMLAppletElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.align Mozilla HTMLAppletElement.align documentation> 
+setAlign ::
+         (MonadDOM m, ToJSString val) => HTMLAppletElement -> val -> m ()
+setAlign self val = liftDOM (self ^. jss "align" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.align Mozilla HTMLAppletElement.align documentation> 
+getAlign ::
+         (MonadDOM m, FromJSString result) => HTMLAppletElement -> m result
+getAlign self
+  = liftDOM ((self ^. js "align") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.alt Mozilla HTMLAppletElement.alt documentation> 
+setAlt ::
+       (MonadDOM m, ToJSString val) => HTMLAppletElement -> val -> m ()
+setAlt self val = liftDOM (self ^. jss "alt" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.alt Mozilla HTMLAppletElement.alt documentation> 
+getAlt ::
+       (MonadDOM m, FromJSString result) => HTMLAppletElement -> m result
+getAlt self = liftDOM ((self ^. js "alt") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.archive Mozilla HTMLAppletElement.archive documentation> 
+setArchive ::
+           (MonadDOM m, ToJSString val) => HTMLAppletElement -> val -> m ()
+setArchive self val = liftDOM (self ^. jss "archive" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.archive Mozilla HTMLAppletElement.archive documentation> 
+getArchive ::
+           (MonadDOM m, FromJSString result) => HTMLAppletElement -> m result
+getArchive self
+  = liftDOM ((self ^. js "archive") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.code Mozilla HTMLAppletElement.code documentation> 
+setCode ::
+        (MonadDOM m, ToJSString val) => HTMLAppletElement -> val -> m ()
+setCode self val = liftDOM (self ^. jss "code" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.code Mozilla HTMLAppletElement.code documentation> 
+getCode ::
+        (MonadDOM m, FromJSString result) => HTMLAppletElement -> m result
+getCode self = liftDOM ((self ^. js "code") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.codeBase Mozilla HTMLAppletElement.codeBase documentation> 
+setCodeBase ::
+            (MonadDOM m, ToJSString val) => HTMLAppletElement -> val -> m ()
+setCodeBase self val
+  = liftDOM (self ^. jss "codeBase" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.codeBase Mozilla HTMLAppletElement.codeBase documentation> 
+getCodeBase ::
+            (MonadDOM m, FromJSString result) => HTMLAppletElement -> m result
+getCodeBase self
+  = liftDOM ((self ^. js "codeBase") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.height Mozilla HTMLAppletElement.height documentation> 
+setHeight ::
+          (MonadDOM m, ToJSString val) => HTMLAppletElement -> val -> m ()
+setHeight self val = liftDOM (self ^. jss "height" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.height Mozilla HTMLAppletElement.height documentation> 
+getHeight ::
+          (MonadDOM m, FromJSString result) => HTMLAppletElement -> m result
+getHeight self
+  = liftDOM ((self ^. js "height") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.hspace Mozilla HTMLAppletElement.hspace documentation> 
+setHspace ::
+          (MonadDOM m, ToJSString val) => HTMLAppletElement -> val -> m ()
+setHspace self val = liftDOM (self ^. jss "hspace" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.hspace Mozilla HTMLAppletElement.hspace documentation> 
+getHspace ::
+          (MonadDOM m, FromJSString result) => HTMLAppletElement -> m result
+getHspace self
+  = liftDOM ((self ^. js "hspace") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.name Mozilla HTMLAppletElement.name documentation> 
+setName ::
+        (MonadDOM m, ToJSString val) => HTMLAppletElement -> val -> m ()
+setName self val = liftDOM (self ^. jss "name" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.name Mozilla HTMLAppletElement.name documentation> 
+getName ::
+        (MonadDOM m, FromJSString result) => HTMLAppletElement -> m result
+getName self = liftDOM ((self ^. js "name") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.object Mozilla HTMLAppletElement.object documentation> 
+setObject ::
+          (MonadDOM m, ToJSString val) => HTMLAppletElement -> val -> m ()
+setObject self val = liftDOM (self ^. jss "object" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.object Mozilla HTMLAppletElement.object documentation> 
+getObject ::
+          (MonadDOM m, FromJSString result) => HTMLAppletElement -> m result
+getObject self
+  = liftDOM ((self ^. js "object") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.vspace Mozilla HTMLAppletElement.vspace documentation> 
+setVspace ::
+          (MonadDOM m, ToJSString val) => HTMLAppletElement -> val -> m ()
+setVspace self val = liftDOM (self ^. jss "vspace" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.vspace Mozilla HTMLAppletElement.vspace documentation> 
+getVspace ::
+          (MonadDOM m, FromJSString result) => HTMLAppletElement -> m result
+getVspace self
+  = liftDOM ((self ^. js "vspace") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.width Mozilla HTMLAppletElement.width documentation> 
+setWidth ::
+         (MonadDOM m, ToJSString val) => HTMLAppletElement -> val -> m ()
+setWidth self val = liftDOM (self ^. jss "width" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.width Mozilla HTMLAppletElement.width documentation> 
+getWidth ::
+         (MonadDOM m, FromJSString result) => HTMLAppletElement -> m result
+getWidth self
+  = liftDOM ((self ^. js "width") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HTMLAreaElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLAreaElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLAreaElement.hs
@@ -0,0 +1,144 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HTMLAreaElement
+       (setAlt, getAlt, setCoords, getCoords, setHref, getHref, setNoHref,
+        getNoHref, setPing, getPing, setRel, getRel, setShape, getShape,
+        setTarget, getTarget, getHash, getHost, getHostname, getPathname,
+        getPort, getProtocol, getSearch, getRelList, HTMLAreaElement,
+        castToHTMLAreaElement, gTypeHTMLAreaElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.alt Mozilla HTMLAreaElement.alt documentation> 
+setAlt ::
+       (MonadDOM m, ToJSString val) => HTMLAreaElement -> val -> m ()
+setAlt self val = liftDOM (self ^. jss "alt" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.alt Mozilla HTMLAreaElement.alt documentation> 
+getAlt ::
+       (MonadDOM m, FromJSString result) => HTMLAreaElement -> m result
+getAlt self = liftDOM ((self ^. js "alt") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.coords Mozilla HTMLAreaElement.coords documentation> 
+setCoords ::
+          (MonadDOM m, ToJSString val) => HTMLAreaElement -> val -> m ()
+setCoords self val = liftDOM (self ^. jss "coords" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.coords Mozilla HTMLAreaElement.coords documentation> 
+getCoords ::
+          (MonadDOM m, FromJSString result) => HTMLAreaElement -> m result
+getCoords self
+  = liftDOM ((self ^. js "coords") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.href Mozilla HTMLAreaElement.href documentation> 
+setHref ::
+        (MonadDOM m, ToJSString val) => HTMLAreaElement -> val -> m ()
+setHref self val = liftDOM (self ^. jss "href" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.href Mozilla HTMLAreaElement.href documentation> 
+getHref ::
+        (MonadDOM m, FromJSString result) => HTMLAreaElement -> m result
+getHref self = liftDOM ((self ^. js "href") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.noHref Mozilla HTMLAreaElement.noHref documentation> 
+setNoHref :: (MonadDOM m) => HTMLAreaElement -> Bool -> m ()
+setNoHref self val = liftDOM (self ^. jss "noHref" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.noHref Mozilla HTMLAreaElement.noHref documentation> 
+getNoHref :: (MonadDOM m) => HTMLAreaElement -> m Bool
+getNoHref self = liftDOM ((self ^. js "noHref") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.ping Mozilla HTMLAreaElement.ping documentation> 
+setPing ::
+        (MonadDOM m, ToJSString val) => HTMLAreaElement -> val -> m ()
+setPing self val = liftDOM (self ^. jss "ping" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.ping Mozilla HTMLAreaElement.ping documentation> 
+getPing ::
+        (MonadDOM m, FromJSString result) => HTMLAreaElement -> m result
+getPing self = liftDOM ((self ^. js "ping") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.rel Mozilla HTMLAreaElement.rel documentation> 
+setRel ::
+       (MonadDOM m, ToJSString val) => HTMLAreaElement -> val -> m ()
+setRel self val = liftDOM (self ^. jss "rel" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.rel Mozilla HTMLAreaElement.rel documentation> 
+getRel ::
+       (MonadDOM m, FromJSString result) => HTMLAreaElement -> m result
+getRel self = liftDOM ((self ^. js "rel") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.shape Mozilla HTMLAreaElement.shape documentation> 
+setShape ::
+         (MonadDOM m, ToJSString val) => HTMLAreaElement -> val -> m ()
+setShape self val = liftDOM (self ^. jss "shape" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.shape Mozilla HTMLAreaElement.shape documentation> 
+getShape ::
+         (MonadDOM m, FromJSString result) => HTMLAreaElement -> m result
+getShape self
+  = liftDOM ((self ^. js "shape") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.target Mozilla HTMLAreaElement.target documentation> 
+setTarget ::
+          (MonadDOM m, ToJSString val) => HTMLAreaElement -> val -> m ()
+setTarget self val = liftDOM (self ^. jss "target" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.target Mozilla HTMLAreaElement.target documentation> 
+getTarget ::
+          (MonadDOM m, FromJSString result) => HTMLAreaElement -> m result
+getTarget self
+  = liftDOM ((self ^. js "target") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.hash Mozilla HTMLAreaElement.hash documentation> 
+getHash ::
+        (MonadDOM m, FromJSString result) => HTMLAreaElement -> m result
+getHash self = liftDOM ((self ^. js "hash") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.host Mozilla HTMLAreaElement.host documentation> 
+getHost ::
+        (MonadDOM m, FromJSString result) => HTMLAreaElement -> m result
+getHost self = liftDOM ((self ^. js "host") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.hostname Mozilla HTMLAreaElement.hostname documentation> 
+getHostname ::
+            (MonadDOM m, FromJSString result) => HTMLAreaElement -> m result
+getHostname self
+  = liftDOM ((self ^. js "hostname") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.pathname Mozilla HTMLAreaElement.pathname documentation> 
+getPathname ::
+            (MonadDOM m, FromJSString result) => HTMLAreaElement -> m result
+getPathname self
+  = liftDOM ((self ^. js "pathname") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.port Mozilla HTMLAreaElement.port documentation> 
+getPort ::
+        (MonadDOM m, FromJSString result) => HTMLAreaElement -> m result
+getPort self = liftDOM ((self ^. js "port") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.protocol Mozilla HTMLAreaElement.protocol documentation> 
+getProtocol ::
+            (MonadDOM m, FromJSString result) => HTMLAreaElement -> m result
+getProtocol self
+  = liftDOM ((self ^. js "protocol") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.search Mozilla HTMLAreaElement.search documentation> 
+getSearch ::
+          (MonadDOM m, FromJSString result) => HTMLAreaElement -> m result
+getSearch self
+  = liftDOM ((self ^. js "search") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.relList Mozilla HTMLAreaElement.relList documentation> 
+getRelList ::
+           (MonadDOM m) => HTMLAreaElement -> m (Maybe DOMTokenList)
+getRelList self = liftDOM ((self ^. js "relList") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HTMLBRElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLBRElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLBRElement.hs
@@ -0,0 +1,27 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HTMLBRElement
+       (setClear, getClear, HTMLBRElement, castToHTMLBRElement,
+        gTypeHTMLBRElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBRElement.clear Mozilla HTMLBRElement.clear documentation> 
+setClear ::
+         (MonadDOM m, ToJSString val) => HTMLBRElement -> val -> m ()
+setClear self val = liftDOM (self ^. jss "clear" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBRElement.clear Mozilla HTMLBRElement.clear documentation> 
+getClear ::
+         (MonadDOM m, FromJSString result) => HTMLBRElement -> m result
+getClear self
+  = liftDOM ((self ^. js "clear") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HTMLBaseElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLBaseElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLBaseElement.hs
@@ -0,0 +1,39 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HTMLBaseElement
+       (setHref, getHref, setTarget, getTarget, HTMLBaseElement,
+        castToHTMLBaseElement, gTypeHTMLBaseElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBaseElement.href Mozilla HTMLBaseElement.href documentation> 
+setHref ::
+        (MonadDOM m, ToJSString val) =>
+          HTMLBaseElement -> Maybe val -> m ()
+setHref self val = liftDOM (self ^. jss "href" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBaseElement.href Mozilla HTMLBaseElement.href documentation> 
+getHref ::
+        (MonadDOM m, FromJSString result) =>
+          HTMLBaseElement -> m (Maybe result)
+getHref self = liftDOM ((self ^. js "href") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBaseElement.target Mozilla HTMLBaseElement.target documentation> 
+setTarget ::
+          (MonadDOM m, ToJSString val) => HTMLBaseElement -> val -> m ()
+setTarget self val = liftDOM (self ^. jss "target" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBaseElement.target Mozilla HTMLBaseElement.target documentation> 
+getTarget ::
+          (MonadDOM m, FromJSString result) => HTMLBaseElement -> m result
+getTarget self
+  = liftDOM ((self ^. js "target") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HTMLBaseFontElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLBaseFontElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLBaseFontElement.hs
@@ -0,0 +1,49 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HTMLBaseFontElement
+       (setColor, getColor, setFace, getFace, setSize, getSize,
+        HTMLBaseFontElement, castToHTMLBaseFontElement,
+        gTypeHTMLBaseFontElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBaseFontElement.color Mozilla HTMLBaseFontElement.color documentation> 
+setColor ::
+         (MonadDOM m, ToJSString val) => HTMLBaseFontElement -> val -> m ()
+setColor self val = liftDOM (self ^. jss "color" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBaseFontElement.color Mozilla HTMLBaseFontElement.color documentation> 
+getColor ::
+         (MonadDOM m, FromJSString result) =>
+           HTMLBaseFontElement -> m result
+getColor self
+  = liftDOM ((self ^. js "color") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBaseFontElement.face Mozilla HTMLBaseFontElement.face documentation> 
+setFace ::
+        (MonadDOM m, ToJSString val) => HTMLBaseFontElement -> val -> m ()
+setFace self val = liftDOM (self ^. jss "face" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBaseFontElement.face Mozilla HTMLBaseFontElement.face documentation> 
+getFace ::
+        (MonadDOM m, FromJSString result) =>
+          HTMLBaseFontElement -> m result
+getFace self = liftDOM ((self ^. js "face") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBaseFontElement.size Mozilla HTMLBaseFontElement.size documentation> 
+setSize :: (MonadDOM m) => HTMLBaseFontElement -> Int -> m ()
+setSize self val = liftDOM (self ^. jss "size" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBaseFontElement.size Mozilla HTMLBaseFontElement.size documentation> 
+getSize :: (MonadDOM m) => HTMLBaseFontElement -> m Int
+getSize self
+  = liftDOM (round <$> ((self ^. js "size") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HTMLBodyElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLBodyElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLBodyElement.hs
@@ -0,0 +1,141 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HTMLBodyElement
+       (setALink, getALink, setBackground, getBackground, setBgColor,
+        getBgColor, setLink, getLink, setText, getText, setVLink, getVLink,
+        beforeUnload, hashChange, message, offline, online, popState,
+        resize, storage, unload, orientationChange, blur, error, focus,
+        load, HTMLBodyElement, castToHTMLBodyElement, gTypeHTMLBodyElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.aLink Mozilla HTMLBodyElement.aLink documentation> 
+setALink ::
+         (MonadDOM m, ToJSString val) => HTMLBodyElement -> val -> m ()
+setALink self val = liftDOM (self ^. jss "aLink" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.aLink Mozilla HTMLBodyElement.aLink documentation> 
+getALink ::
+         (MonadDOM m, FromJSString result) => HTMLBodyElement -> m result
+getALink self
+  = liftDOM ((self ^. js "aLink") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.background Mozilla HTMLBodyElement.background documentation> 
+setBackground ::
+              (MonadDOM m, ToJSString val) => HTMLBodyElement -> val -> m ()
+setBackground self val
+  = liftDOM (self ^. jss "background" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.background Mozilla HTMLBodyElement.background documentation> 
+getBackground ::
+              (MonadDOM m, FromJSString result) => HTMLBodyElement -> m result
+getBackground self
+  = liftDOM ((self ^. js "background") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.bgColor Mozilla HTMLBodyElement.bgColor documentation> 
+setBgColor ::
+           (MonadDOM m, ToJSString val) => HTMLBodyElement -> val -> m ()
+setBgColor self val = liftDOM (self ^. jss "bgColor" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.bgColor Mozilla HTMLBodyElement.bgColor documentation> 
+getBgColor ::
+           (MonadDOM m, FromJSString result) => HTMLBodyElement -> m result
+getBgColor self
+  = liftDOM ((self ^. js "bgColor") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.link Mozilla HTMLBodyElement.link documentation> 
+setLink ::
+        (MonadDOM m, ToJSString val) => HTMLBodyElement -> val -> m ()
+setLink self val = liftDOM (self ^. jss "link" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.link Mozilla HTMLBodyElement.link documentation> 
+getLink ::
+        (MonadDOM m, FromJSString result) => HTMLBodyElement -> m result
+getLink self = liftDOM ((self ^. js "link") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.text Mozilla HTMLBodyElement.text documentation> 
+setText ::
+        (MonadDOM m, ToJSString val) => HTMLBodyElement -> val -> m ()
+setText self val = liftDOM (self ^. jss "text" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.text Mozilla HTMLBodyElement.text documentation> 
+getText ::
+        (MonadDOM m, FromJSString result) => HTMLBodyElement -> m result
+getText self = liftDOM ((self ^. js "text") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.vLink Mozilla HTMLBodyElement.vLink documentation> 
+setVLink ::
+         (MonadDOM m, ToJSString val) => HTMLBodyElement -> val -> m ()
+setVLink self val = liftDOM (self ^. jss "vLink" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.vLink Mozilla HTMLBodyElement.vLink documentation> 
+getVLink ::
+         (MonadDOM m, FromJSString result) => HTMLBodyElement -> m result
+getVLink self
+  = liftDOM ((self ^. js "vLink") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onbeforeunload Mozilla HTMLBodyElement.onbeforeunload documentation> 
+beforeUnload :: EventName HTMLBodyElement BeforeUnloadEvent
+beforeUnload = unsafeEventName (toJSString "beforeunload")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onhashchange Mozilla HTMLBodyElement.onhashchange documentation> 
+hashChange :: EventName HTMLBodyElement HashChangeEvent
+hashChange = unsafeEventName (toJSString "hashchange")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onmessage Mozilla HTMLBodyElement.onmessage documentation> 
+message :: EventName HTMLBodyElement MessageEvent
+message = unsafeEventName (toJSString "message")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onoffline Mozilla HTMLBodyElement.onoffline documentation> 
+offline :: EventName HTMLBodyElement Event
+offline = unsafeEventName (toJSString "offline")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.ononline Mozilla HTMLBodyElement.ononline documentation> 
+online :: EventName HTMLBodyElement Event
+online = unsafeEventName (toJSString "online")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onpopstate Mozilla HTMLBodyElement.onpopstate documentation> 
+popState :: EventName HTMLBodyElement PopStateEvent
+popState = unsafeEventName (toJSString "popstate")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onresize Mozilla HTMLBodyElement.onresize documentation> 
+resize :: EventName HTMLBodyElement UIEvent
+resize = unsafeEventName (toJSString "resize")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onstorage Mozilla HTMLBodyElement.onstorage documentation> 
+storage :: EventName HTMLBodyElement StorageEvent
+storage = unsafeEventName (toJSString "storage")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onunload Mozilla HTMLBodyElement.onunload documentation> 
+unload :: EventName HTMLBodyElement UIEvent
+unload = unsafeEventName (toJSString "unload")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onorientationchange Mozilla HTMLBodyElement.onorientationchange documentation> 
+orientationChange :: EventName HTMLBodyElement Event
+orientationChange
+  = unsafeEventName (toJSString "orientationchange")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onblur Mozilla HTMLBodyElement.onblur documentation> 
+blur :: EventName HTMLBodyElement FocusEvent
+blur = unsafeEventName (toJSString "blur")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onerror Mozilla HTMLBodyElement.onerror documentation> 
+error :: EventName HTMLBodyElement UIEvent
+error = unsafeEventName (toJSString "error")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onfocus Mozilla HTMLBodyElement.onfocus documentation> 
+focus :: EventName HTMLBodyElement FocusEvent
+focus = unsafeEventName (toJSString "focus")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onload Mozilla HTMLBodyElement.onload documentation> 
+load :: EventName HTMLBodyElement UIEvent
+load = unsafeEventName (toJSString "load")
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HTMLButtonElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLButtonElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLButtonElement.hs
@@ -0,0 +1,174 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HTMLButtonElement
+       (checkValidity, setCustomValidity, setAutofocus, getAutofocus,
+        setDisabled, getDisabled, getForm, setFormAction, getFormAction,
+        setFormEnctype, getFormEnctype, setFormMethod, getFormMethod,
+        setFormNoValidate, getFormNoValidate, setFormTarget, getFormTarget,
+        setName, getName, setType, getType, setValue, getValue,
+        getWillValidate, getValidity, getValidationMessage, getLabels,
+        HTMLButtonElement, castToHTMLButtonElement, gTypeHTMLButtonElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.checkValidity Mozilla HTMLButtonElement.checkValidity documentation> 
+checkValidity :: (MonadDOM m) => HTMLButtonElement -> m Bool
+checkValidity self
+  = liftDOM ((self ^. js "checkValidity") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.setCustomValidity Mozilla HTMLButtonElement.setCustomValidity documentation> 
+setCustomValidity ::
+                  (MonadDOM m, ToJSString error) =>
+                    HTMLButtonElement -> Maybe error -> m ()
+setCustomValidity self error
+  = liftDOM (void (self ^. jsf "setCustomValidity" [toJSVal error]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.autofocus Mozilla HTMLButtonElement.autofocus documentation> 
+setAutofocus :: (MonadDOM m) => HTMLButtonElement -> Bool -> m ()
+setAutofocus self val
+  = liftDOM (self ^. jss "autofocus" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.autofocus Mozilla HTMLButtonElement.autofocus documentation> 
+getAutofocus :: (MonadDOM m) => HTMLButtonElement -> m Bool
+getAutofocus self
+  = liftDOM ((self ^. js "autofocus") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.disabled Mozilla HTMLButtonElement.disabled documentation> 
+setDisabled :: (MonadDOM m) => HTMLButtonElement -> Bool -> m ()
+setDisabled self val
+  = liftDOM (self ^. jss "disabled" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.disabled Mozilla HTMLButtonElement.disabled documentation> 
+getDisabled :: (MonadDOM m) => HTMLButtonElement -> m Bool
+getDisabled self = liftDOM ((self ^. js "disabled") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.form Mozilla HTMLButtonElement.form documentation> 
+getForm ::
+        (MonadDOM m) => HTMLButtonElement -> m (Maybe HTMLFormElement)
+getForm self = liftDOM ((self ^. js "form") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.formAction Mozilla HTMLButtonElement.formAction documentation> 
+setFormAction ::
+              (MonadDOM m, ToJSString val) => HTMLButtonElement -> val -> m ()
+setFormAction self val
+  = liftDOM (self ^. jss "formAction" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.formAction Mozilla HTMLButtonElement.formAction documentation> 
+getFormAction ::
+              (MonadDOM m, FromJSString result) => HTMLButtonElement -> m result
+getFormAction self
+  = liftDOM ((self ^. js "formAction") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.formEnctype Mozilla HTMLButtonElement.formEnctype documentation> 
+setFormEnctype ::
+               (MonadDOM m, ToJSString val) =>
+                 HTMLButtonElement -> Maybe val -> m ()
+setFormEnctype self val
+  = liftDOM (self ^. jss "formEnctype" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.formEnctype Mozilla HTMLButtonElement.formEnctype documentation> 
+getFormEnctype ::
+               (MonadDOM m, FromJSString result) =>
+                 HTMLButtonElement -> m (Maybe result)
+getFormEnctype self
+  = liftDOM ((self ^. js "formEnctype") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.formMethod Mozilla HTMLButtonElement.formMethod documentation> 
+setFormMethod ::
+              (MonadDOM m, ToJSString val) =>
+                HTMLButtonElement -> Maybe val -> m ()
+setFormMethod self val
+  = liftDOM (self ^. jss "formMethod" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.formMethod Mozilla HTMLButtonElement.formMethod documentation> 
+getFormMethod ::
+              (MonadDOM m, FromJSString result) =>
+                HTMLButtonElement -> m (Maybe result)
+getFormMethod self
+  = liftDOM ((self ^. js "formMethod") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.formNoValidate Mozilla HTMLButtonElement.formNoValidate documentation> 
+setFormNoValidate ::
+                  (MonadDOM m) => HTMLButtonElement -> Bool -> m ()
+setFormNoValidate self val
+  = liftDOM (self ^. jss "formNoValidate" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.formNoValidate Mozilla HTMLButtonElement.formNoValidate documentation> 
+getFormNoValidate :: (MonadDOM m) => HTMLButtonElement -> m Bool
+getFormNoValidate self
+  = liftDOM ((self ^. js "formNoValidate") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.formTarget Mozilla HTMLButtonElement.formTarget documentation> 
+setFormTarget ::
+              (MonadDOM m, ToJSString val) => HTMLButtonElement -> val -> m ()
+setFormTarget self val
+  = liftDOM (self ^. jss "formTarget" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.formTarget Mozilla HTMLButtonElement.formTarget documentation> 
+getFormTarget ::
+              (MonadDOM m, FromJSString result) => HTMLButtonElement -> m result
+getFormTarget self
+  = liftDOM ((self ^. js "formTarget") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.name Mozilla HTMLButtonElement.name documentation> 
+setName ::
+        (MonadDOM m, ToJSString val) => HTMLButtonElement -> val -> m ()
+setName self val = liftDOM (self ^. jss "name" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.name Mozilla HTMLButtonElement.name documentation> 
+getName ::
+        (MonadDOM m, FromJSString result) => HTMLButtonElement -> m result
+getName self = liftDOM ((self ^. js "name") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.type Mozilla HTMLButtonElement.type documentation> 
+setType ::
+        (MonadDOM m, ToJSString val) =>
+          HTMLButtonElement -> Maybe val -> m ()
+setType self val = liftDOM (self ^. jss "type" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.type Mozilla HTMLButtonElement.type documentation> 
+getType ::
+        (MonadDOM m, FromJSString result) =>
+          HTMLButtonElement -> m (Maybe result)
+getType self = liftDOM ((self ^. js "type") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.value Mozilla HTMLButtonElement.value documentation> 
+setValue ::
+         (MonadDOM m, ToJSString val) => HTMLButtonElement -> val -> m ()
+setValue self val = liftDOM (self ^. jss "value" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.value Mozilla HTMLButtonElement.value documentation> 
+getValue ::
+         (MonadDOM m, FromJSString result) => HTMLButtonElement -> m result
+getValue self
+  = liftDOM ((self ^. js "value") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.willValidate Mozilla HTMLButtonElement.willValidate documentation> 
+getWillValidate :: (MonadDOM m) => HTMLButtonElement -> m Bool
+getWillValidate self
+  = liftDOM ((self ^. js "willValidate") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.validity Mozilla HTMLButtonElement.validity documentation> 
+getValidity ::
+            (MonadDOM m) => HTMLButtonElement -> m (Maybe ValidityState)
+getValidity self = liftDOM ((self ^. js "validity") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.validationMessage Mozilla HTMLButtonElement.validationMessage documentation> 
+getValidationMessage ::
+                     (MonadDOM m, FromJSString result) => HTMLButtonElement -> m result
+getValidationMessage self
+  = liftDOM ((self ^. js "validationMessage") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.labels Mozilla HTMLButtonElement.labels documentation> 
+getLabels ::
+          (MonadDOM m) => HTMLButtonElement -> m (Maybe NodeList)
+getLabels self = liftDOM ((self ^. js "labels") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HTMLCanvasElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLCanvasElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLCanvasElement.hs
@@ -0,0 +1,60 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HTMLCanvasElement
+       (toDataURL, getContext, probablySupportsContext, setWidth,
+        getWidth, setHeight, getHeight, HTMLCanvasElement,
+        castToHTMLCanvasElement, gTypeHTMLCanvasElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement.toDataURL Mozilla HTMLCanvasElement.toDataURL documentation> 
+toDataURL ::
+          (MonadDOM m, ToJSString type', FromJSString result) =>
+            HTMLCanvasElement -> Maybe type' -> m result
+toDataURL self type'
+  = liftDOM
+      ((self ^. jsf "toDataURL" [toJSVal type']) >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement.getContext Mozilla HTMLCanvasElement.getContext documentation> 
+getContext ::
+           (MonadDOM m, ToJSString contextId) =>
+             HTMLCanvasElement -> contextId -> m JSVal
+getContext self contextId
+  = liftDOM
+      ((self ^. jsf "getContext" [toJSVal contextId]) >>= toJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement.probablySupportsContext Mozilla HTMLCanvasElement.probablySupportsContext documentation> 
+probablySupportsContext ::
+                        (MonadDOM m, ToJSString contextId) =>
+                          HTMLCanvasElement -> contextId -> m JSVal
+probablySupportsContext self contextId
+  = liftDOM
+      ((self ^. jsf "probablySupportsContext" [toJSVal contextId]) >>=
+         toJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement.width Mozilla HTMLCanvasElement.width documentation> 
+setWidth :: (MonadDOM m) => HTMLCanvasElement -> Int -> m ()
+setWidth self val = liftDOM (self ^. jss "width" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement.width Mozilla HTMLCanvasElement.width documentation> 
+getWidth :: (MonadDOM m) => HTMLCanvasElement -> m Int
+getWidth self
+  = liftDOM (round <$> ((self ^. js "width") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement.height Mozilla HTMLCanvasElement.height documentation> 
+setHeight :: (MonadDOM m) => HTMLCanvasElement -> Int -> m ()
+setHeight self val = liftDOM (self ^. jss "height" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement.height Mozilla HTMLCanvasElement.height documentation> 
+getHeight :: (MonadDOM m) => HTMLCanvasElement -> m Int
+getHeight self
+  = liftDOM (round <$> ((self ^. js "height") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HTMLCollection.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLCollection.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLCollection.hs
@@ -0,0 +1,41 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HTMLCollection
+       (item, namedItem, getLength, HTMLCollection, castToHTMLCollection,
+        gTypeHTMLCollection, IsHTMLCollection, toHTMLCollection)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCollection.item Mozilla HTMLCollection.item documentation> 
+item ::
+     (MonadDOM m, IsHTMLCollection self) =>
+       self -> Word -> m (Maybe Node)
+item self index
+  = liftDOM
+      (((toHTMLCollection self) ^. jsf "item" [toJSVal index]) >>=
+         fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCollection.namedItem Mozilla HTMLCollection.namedItem documentation> 
+namedItem ::
+          (MonadDOM m, IsHTMLCollection self, ToJSString name) =>
+            self -> name -> m (Maybe Node)
+namedItem self name
+  = liftDOM
+      (((toHTMLCollection self) ^. jsf "namedItem" [toJSVal name]) >>=
+         fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCollection.length Mozilla HTMLCollection.length documentation> 
+getLength :: (MonadDOM m, IsHTMLCollection self) => self -> m Word
+getLength self
+  = liftDOM
+      (round <$>
+         (((toHTMLCollection self) ^. js "length") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HTMLDListElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLDListElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLDListElement.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HTMLDListElement
+       (setCompact, getCompact, HTMLDListElement, castToHTMLDListElement,
+        gTypeHTMLDListElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDListElement.compact Mozilla HTMLDListElement.compact documentation> 
+setCompact :: (MonadDOM m) => HTMLDListElement -> Bool -> m ()
+setCompact self val = liftDOM (self ^. jss "compact" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDListElement.compact Mozilla HTMLDListElement.compact documentation> 
+getCompact :: (MonadDOM m) => HTMLDListElement -> m Bool
+getCompact self = liftDOM ((self ^. js "compact") >>= valToBool)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HTMLDataListElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLDataListElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLDataListElement.hs
@@ -0,0 +1,21 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HTMLDataListElement
+       (getOptions, HTMLDataListElement, castToHTMLDataListElement,
+        gTypeHTMLDataListElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDataListElement.options Mozilla HTMLDataListElement.options documentation> 
+getOptions ::
+           (MonadDOM m) => HTMLDataListElement -> m (Maybe HTMLCollection)
+getOptions self = liftDOM ((self ^. js "options") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HTMLDetailsElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLDetailsElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLDetailsElement.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HTMLDetailsElement
+       (setOpen, getOpen, HTMLDetailsElement, castToHTMLDetailsElement,
+        gTypeHTMLDetailsElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDetailsElement.open Mozilla HTMLDetailsElement.open documentation> 
+setOpen :: (MonadDOM m) => HTMLDetailsElement -> Bool -> m ()
+setOpen self val = liftDOM (self ^. jss "open" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDetailsElement.open Mozilla HTMLDetailsElement.open documentation> 
+getOpen :: (MonadDOM m) => HTMLDetailsElement -> m Bool
+getOpen self = liftDOM ((self ^. js "open") >>= valToBool)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HTMLDirectoryElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLDirectoryElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLDirectoryElement.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HTMLDirectoryElement
+       (setCompact, getCompact, HTMLDirectoryElement,
+        castToHTMLDirectoryElement, gTypeHTMLDirectoryElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDirectoryElement.compact Mozilla HTMLDirectoryElement.compact documentation> 
+setCompact :: (MonadDOM m) => HTMLDirectoryElement -> Bool -> m ()
+setCompact self val = liftDOM (self ^. jss "compact" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDirectoryElement.compact Mozilla HTMLDirectoryElement.compact documentation> 
+getCompact :: (MonadDOM m) => HTMLDirectoryElement -> m Bool
+getCompact self = liftDOM ((self ^. js "compact") >>= valToBool)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HTMLDivElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLDivElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLDivElement.hs
@@ -0,0 +1,27 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HTMLDivElement
+       (setAlign, getAlign, HTMLDivElement, castToHTMLDivElement,
+        gTypeHTMLDivElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDivElement.align Mozilla HTMLDivElement.align documentation> 
+setAlign ::
+         (MonadDOM m, ToJSString val) => HTMLDivElement -> val -> m ()
+setAlign self val = liftDOM (self ^. jss "align" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDivElement.align Mozilla HTMLDivElement.align documentation> 
+getAlign ::
+         (MonadDOM m, FromJSString result) => HTMLDivElement -> m result
+getAlign self
+  = liftDOM ((self ^. js "align") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HTMLDocument.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLDocument.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLDocument.hs
@@ -0,0 +1,175 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HTMLDocument
+       (open, close, write, writeln, clear, captureEvents, releaseEvents,
+        getEmbeds, getPlugins, getScripts, getAll, getWidth, getHeight,
+        setDir, getDir, setDesignMode, getDesignMode, getCompatMode,
+        setBgColor, getBgColor, setFgColor, getFgColor, setAlinkColor,
+        getAlinkColor, setLinkColor, getLinkColor, setVlinkColor,
+        getVlinkColor, HTMLDocument, castToHTMLDocument, gTypeHTMLDocument)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.open Mozilla HTMLDocument.open documentation> 
+open :: (MonadDOM m) => HTMLDocument -> m ()
+open self = liftDOM (void (self ^. js "open"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.close Mozilla HTMLDocument.close documentation> 
+close :: (MonadDOM m) => HTMLDocument -> m ()
+close self = liftDOM (void (self ^. js "close"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.write Mozilla HTMLDocument.write documentation> 
+write ::
+      (MonadDOM m, ToJSString text) => HTMLDocument -> text -> m ()
+write self text
+  = liftDOM (void (self ^. jsf "write" [toJSVal text]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.writeln Mozilla HTMLDocument.writeln documentation> 
+writeln ::
+        (MonadDOM m, ToJSString text) => HTMLDocument -> text -> m ()
+writeln self text
+  = liftDOM (void (self ^. jsf "writeln" [toJSVal text]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.clear Mozilla HTMLDocument.clear documentation> 
+clear :: (MonadDOM m) => HTMLDocument -> m ()
+clear self = liftDOM (void (self ^. js "clear"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.captureEvents Mozilla HTMLDocument.captureEvents documentation> 
+captureEvents :: (MonadDOM m) => HTMLDocument -> m ()
+captureEvents self = liftDOM (void (self ^. js "captureEvents"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.releaseEvents Mozilla HTMLDocument.releaseEvents documentation> 
+releaseEvents :: (MonadDOM m) => HTMLDocument -> m ()
+releaseEvents self = liftDOM (void (self ^. js "releaseEvents"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.embeds Mozilla HTMLDocument.embeds documentation> 
+getEmbeds ::
+          (MonadDOM m) => HTMLDocument -> m (Maybe HTMLCollection)
+getEmbeds self = liftDOM ((self ^. js "embeds") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.plugins Mozilla HTMLDocument.plugins documentation> 
+getPlugins ::
+           (MonadDOM m) => HTMLDocument -> m (Maybe HTMLCollection)
+getPlugins self = liftDOM ((self ^. js "plugins") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.scripts Mozilla HTMLDocument.scripts documentation> 
+getScripts ::
+           (MonadDOM m) => HTMLDocument -> m (Maybe HTMLCollection)
+getScripts self = liftDOM ((self ^. js "scripts") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.all Mozilla HTMLDocument.all documentation> 
+getAll ::
+       (MonadDOM m) => HTMLDocument -> m (Maybe HTMLAllCollection)
+getAll self = liftDOM ((self ^. js "all") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.width Mozilla HTMLDocument.width documentation> 
+getWidth :: (MonadDOM m) => HTMLDocument -> m Int
+getWidth self
+  = liftDOM (round <$> ((self ^. js "width") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.height Mozilla HTMLDocument.height documentation> 
+getHeight :: (MonadDOM m) => HTMLDocument -> m Int
+getHeight self
+  = liftDOM (round <$> ((self ^. js "height") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.dir Mozilla HTMLDocument.dir documentation> 
+setDir ::
+       (MonadDOM m, ToJSString val) => HTMLDocument -> Maybe val -> m ()
+setDir self val = liftDOM (self ^. jss "dir" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.dir Mozilla HTMLDocument.dir documentation> 
+getDir ::
+       (MonadDOM m, FromJSString result) =>
+         HTMLDocument -> m (Maybe result)
+getDir self = liftDOM ((self ^. js "dir") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.designMode Mozilla HTMLDocument.designMode documentation> 
+setDesignMode ::
+              (MonadDOM m, ToJSString val) => HTMLDocument -> Maybe val -> m ()
+setDesignMode self val
+  = liftDOM (self ^. jss "designMode" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.designMode Mozilla HTMLDocument.designMode documentation> 
+getDesignMode ::
+              (MonadDOM m, FromJSString result) =>
+                HTMLDocument -> m (Maybe result)
+getDesignMode self
+  = liftDOM ((self ^. js "designMode") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.compatMode Mozilla HTMLDocument.compatMode documentation> 
+getCompatMode ::
+              (MonadDOM m, FromJSString result) => HTMLDocument -> m result
+getCompatMode self
+  = liftDOM ((self ^. js "compatMode") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.bgColor Mozilla HTMLDocument.bgColor documentation> 
+setBgColor ::
+           (MonadDOM m, ToJSString val) => HTMLDocument -> Maybe val -> m ()
+setBgColor self val = liftDOM (self ^. jss "bgColor" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.bgColor Mozilla HTMLDocument.bgColor documentation> 
+getBgColor ::
+           (MonadDOM m, FromJSString result) =>
+             HTMLDocument -> m (Maybe result)
+getBgColor self
+  = liftDOM ((self ^. js "bgColor") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.fgColor Mozilla HTMLDocument.fgColor documentation> 
+setFgColor ::
+           (MonadDOM m, ToJSString val) => HTMLDocument -> Maybe val -> m ()
+setFgColor self val = liftDOM (self ^. jss "fgColor" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.fgColor Mozilla HTMLDocument.fgColor documentation> 
+getFgColor ::
+           (MonadDOM m, FromJSString result) =>
+             HTMLDocument -> m (Maybe result)
+getFgColor self
+  = liftDOM ((self ^. js "fgColor") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.alinkColor Mozilla HTMLDocument.alinkColor documentation> 
+setAlinkColor ::
+              (MonadDOM m, ToJSString val) => HTMLDocument -> Maybe val -> m ()
+setAlinkColor self val
+  = liftDOM (self ^. jss "alinkColor" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.alinkColor Mozilla HTMLDocument.alinkColor documentation> 
+getAlinkColor ::
+              (MonadDOM m, FromJSString result) =>
+                HTMLDocument -> m (Maybe result)
+getAlinkColor self
+  = liftDOM ((self ^. js "alinkColor") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.linkColor Mozilla HTMLDocument.linkColor documentation> 
+setLinkColor ::
+             (MonadDOM m, ToJSString val) => HTMLDocument -> Maybe val -> m ()
+setLinkColor self val
+  = liftDOM (self ^. jss "linkColor" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.linkColor Mozilla HTMLDocument.linkColor documentation> 
+getLinkColor ::
+             (MonadDOM m, FromJSString result) =>
+               HTMLDocument -> m (Maybe result)
+getLinkColor self
+  = liftDOM ((self ^. js "linkColor") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.vlinkColor Mozilla HTMLDocument.vlinkColor documentation> 
+setVlinkColor ::
+              (MonadDOM m, ToJSString val) => HTMLDocument -> Maybe val -> m ()
+setVlinkColor self val
+  = liftDOM (self ^. jss "vlinkColor" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.vlinkColor Mozilla HTMLDocument.vlinkColor documentation> 
+getVlinkColor ::
+              (MonadDOM m, FromJSString result) =>
+                HTMLDocument -> m (Maybe result)
+getVlinkColor self
+  = liftDOM ((self ^. js "vlinkColor") >>= fromMaybeJSString)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HTMLElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLElement.hs
@@ -0,0 +1,255 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HTMLElement
+       (insertAdjacentElement, insertAdjacentHTML, insertAdjacentText,
+        click, setTitle, getTitle, setLang, getLang, setTranslate,
+        getTranslate, setDir, getDir, setTabIndex, getTabIndex,
+        setDraggable, getDraggable, setWebkitdropzone, getWebkitdropzone,
+        setHidden, getHidden, setAccessKey, getAccessKey, setInnerText,
+        getInnerText, setOuterText, getOuterText, getChildren,
+        setContentEditable, getContentEditable, getIsContentEditable,
+        setSpellcheck, getSpellcheck, HTMLElement, castToHTMLElement,
+        gTypeHTMLElement, IsHTMLElement, toHTMLElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.insertAdjacentElement Mozilla HTMLElement.insertAdjacentElement documentation> 
+insertAdjacentElement ::
+                      (MonadDOM m, IsHTMLElement self, ToJSString where',
+                       IsElement element) =>
+                        self -> where' -> Maybe element -> m (Maybe Element)
+insertAdjacentElement self where' element
+  = liftDOM
+      (((toHTMLElement self) ^. jsf "insertAdjacentElement"
+          [toJSVal where', toJSVal element])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.insertAdjacentHTML Mozilla HTMLElement.insertAdjacentHTML documentation> 
+insertAdjacentHTML ::
+                   (MonadDOM m, IsHTMLElement self, ToJSString where',
+                    ToJSString html) =>
+                     self -> where' -> html -> m ()
+insertAdjacentHTML self where' html
+  = liftDOM
+      (void
+         ((toHTMLElement self) ^. jsf "insertAdjacentHTML"
+            [toJSVal where', toJSVal html]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.insertAdjacentText Mozilla HTMLElement.insertAdjacentText documentation> 
+insertAdjacentText ::
+                   (MonadDOM m, IsHTMLElement self, ToJSString where',
+                    ToJSString text) =>
+                     self -> where' -> text -> m ()
+insertAdjacentText self where' text
+  = liftDOM
+      (void
+         ((toHTMLElement self) ^. jsf "insertAdjacentText"
+            [toJSVal where', toJSVal text]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.click Mozilla HTMLElement.click documentation> 
+click :: (MonadDOM m, IsHTMLElement self) => self -> m ()
+click self = liftDOM (void ((toHTMLElement self) ^. js "click"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.title Mozilla HTMLElement.title documentation> 
+setTitle ::
+         (MonadDOM m, IsHTMLElement self, ToJSString val) =>
+           self -> val -> m ()
+setTitle self val
+  = liftDOM ((toHTMLElement self) ^. jss "title" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.title Mozilla HTMLElement.title documentation> 
+getTitle ::
+         (MonadDOM m, IsHTMLElement self, FromJSString result) =>
+           self -> m result
+getTitle self
+  = liftDOM
+      (((toHTMLElement self) ^. js "title") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.lang Mozilla HTMLElement.lang documentation> 
+setLang ::
+        (MonadDOM m, IsHTMLElement self, ToJSString val) =>
+          self -> val -> m ()
+setLang self val
+  = liftDOM ((toHTMLElement self) ^. jss "lang" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.lang Mozilla HTMLElement.lang documentation> 
+getLang ::
+        (MonadDOM m, IsHTMLElement self, FromJSString result) =>
+          self -> m result
+getLang self
+  = liftDOM
+      (((toHTMLElement self) ^. js "lang") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.translate Mozilla HTMLElement.translate documentation> 
+setTranslate ::
+             (MonadDOM m, IsHTMLElement self) => self -> Bool -> m ()
+setTranslate self val
+  = liftDOM ((toHTMLElement self) ^. jss "translate" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.translate Mozilla HTMLElement.translate documentation> 
+getTranslate :: (MonadDOM m, IsHTMLElement self) => self -> m Bool
+getTranslate self
+  = liftDOM (((toHTMLElement self) ^. js "translate") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.dir Mozilla HTMLElement.dir documentation> 
+setDir ::
+       (MonadDOM m, IsHTMLElement self, ToJSString val) =>
+         self -> val -> m ()
+setDir self val
+  = liftDOM ((toHTMLElement self) ^. jss "dir" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.dir Mozilla HTMLElement.dir documentation> 
+getDir ::
+       (MonadDOM m, IsHTMLElement self, FromJSString result) =>
+         self -> m result
+getDir self
+  = liftDOM
+      (((toHTMLElement self) ^. js "dir") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.tabIndex Mozilla HTMLElement.tabIndex documentation> 
+setTabIndex ::
+            (MonadDOM m, IsHTMLElement self) => self -> Int -> m ()
+setTabIndex self val
+  = liftDOM ((toHTMLElement self) ^. jss "tabIndex" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.tabIndex Mozilla HTMLElement.tabIndex documentation> 
+getTabIndex :: (MonadDOM m, IsHTMLElement self) => self -> m Int
+getTabIndex self
+  = liftDOM
+      (round <$>
+         (((toHTMLElement self) ^. js "tabIndex") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.draggable Mozilla HTMLElement.draggable documentation> 
+setDraggable ::
+             (MonadDOM m, IsHTMLElement self) => self -> Bool -> m ()
+setDraggable self val
+  = liftDOM ((toHTMLElement self) ^. jss "draggable" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.draggable Mozilla HTMLElement.draggable documentation> 
+getDraggable :: (MonadDOM m, IsHTMLElement self) => self -> m Bool
+getDraggable self
+  = liftDOM (((toHTMLElement self) ^. js "draggable") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.webkitdropzone Mozilla HTMLElement.webkitdropzone documentation> 
+setWebkitdropzone ::
+                  (MonadDOM m, IsHTMLElement self, ToJSString val) =>
+                    self -> val -> m ()
+setWebkitdropzone self val
+  = liftDOM
+      ((toHTMLElement self) ^. jss "webkitdropzone" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.webkitdropzone Mozilla HTMLElement.webkitdropzone documentation> 
+getWebkitdropzone ::
+                  (MonadDOM m, IsHTMLElement self, FromJSString result) =>
+                    self -> m result
+getWebkitdropzone self
+  = liftDOM
+      (((toHTMLElement self) ^. js "webkitdropzone") >>=
+         fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.hidden Mozilla HTMLElement.hidden documentation> 
+setHidden ::
+          (MonadDOM m, IsHTMLElement self) => self -> Bool -> m ()
+setHidden self val
+  = liftDOM ((toHTMLElement self) ^. jss "hidden" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.hidden Mozilla HTMLElement.hidden documentation> 
+getHidden :: (MonadDOM m, IsHTMLElement self) => self -> m Bool
+getHidden self
+  = liftDOM (((toHTMLElement self) ^. js "hidden") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.accessKey Mozilla HTMLElement.accessKey documentation> 
+setAccessKey ::
+             (MonadDOM m, IsHTMLElement self, ToJSString val) =>
+               self -> val -> m ()
+setAccessKey self val
+  = liftDOM ((toHTMLElement self) ^. jss "accessKey" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.accessKey Mozilla HTMLElement.accessKey documentation> 
+getAccessKey ::
+             (MonadDOM m, IsHTMLElement self, FromJSString result) =>
+               self -> m result
+getAccessKey self
+  = liftDOM
+      (((toHTMLElement self) ^. js "accessKey") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.innerText Mozilla HTMLElement.innerText documentation> 
+setInnerText ::
+             (MonadDOM m, IsHTMLElement self, ToJSString val) =>
+               self -> Maybe val -> m ()
+setInnerText self val
+  = liftDOM ((toHTMLElement self) ^. jss "innerText" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.innerText Mozilla HTMLElement.innerText documentation> 
+getInnerText ::
+             (MonadDOM m, IsHTMLElement self, FromJSString result) =>
+               self -> m (Maybe result)
+getInnerText self
+  = liftDOM
+      (((toHTMLElement self) ^. js "innerText") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.outerText Mozilla HTMLElement.outerText documentation> 
+setOuterText ::
+             (MonadDOM m, IsHTMLElement self, ToJSString val) =>
+               self -> Maybe val -> m ()
+setOuterText self val
+  = liftDOM ((toHTMLElement self) ^. jss "outerText" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.outerText Mozilla HTMLElement.outerText documentation> 
+getOuterText ::
+             (MonadDOM m, IsHTMLElement self, FromJSString result) =>
+               self -> m (Maybe result)
+getOuterText self
+  = liftDOM
+      (((toHTMLElement self) ^. js "outerText") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.children Mozilla HTMLElement.children documentation> 
+getChildren ::
+            (MonadDOM m, IsHTMLElement self) =>
+              self -> m (Maybe HTMLCollection)
+getChildren self
+  = liftDOM (((toHTMLElement self) ^. js "children") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.contentEditable Mozilla HTMLElement.contentEditable documentation> 
+setContentEditable ::
+                   (MonadDOM m, IsHTMLElement self, ToJSString val) =>
+                     self -> Maybe val -> m ()
+setContentEditable self val
+  = liftDOM
+      ((toHTMLElement self) ^. jss "contentEditable" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.contentEditable Mozilla HTMLElement.contentEditable documentation> 
+getContentEditable ::
+                   (MonadDOM m, IsHTMLElement self, FromJSString result) =>
+                     self -> m (Maybe result)
+getContentEditable self
+  = liftDOM
+      (((toHTMLElement self) ^. js "contentEditable") >>=
+         fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.isContentEditable Mozilla HTMLElement.isContentEditable documentation> 
+getIsContentEditable ::
+                     (MonadDOM m, IsHTMLElement self) => self -> m Bool
+getIsContentEditable self
+  = liftDOM
+      (((toHTMLElement self) ^. js "isContentEditable") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.spellcheck Mozilla HTMLElement.spellcheck documentation> 
+setSpellcheck ::
+              (MonadDOM m, IsHTMLElement self) => self -> Bool -> m ()
+setSpellcheck self val
+  = liftDOM ((toHTMLElement self) ^. jss "spellcheck" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.spellcheck Mozilla HTMLElement.spellcheck documentation> 
+getSpellcheck :: (MonadDOM m, IsHTMLElement self) => self -> m Bool
+getSpellcheck self
+  = liftDOM (((toHTMLElement self) ^. js "spellcheck") >>= valToBool)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HTMLEmbedElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLEmbedElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLEmbedElement.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HTMLEmbedElement
+       (getSVGDocument, setAlign, getAlign, setHeight, getHeight, setName,
+        getName, setSrc, getSrc, setType, getType, setWidth, getWidth,
+        HTMLEmbedElement, castToHTMLEmbedElement, gTypeHTMLEmbedElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLEmbedElement.getSVGDocument Mozilla HTMLEmbedElement.getSVGDocument documentation> 
+getSVGDocument ::
+               (MonadDOM m) => HTMLEmbedElement -> m (Maybe SVGDocument)
+getSVGDocument self
+  = liftDOM ((self ^. js "getSVGDocument") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLEmbedElement.align Mozilla HTMLEmbedElement.align documentation> 
+setAlign ::
+         (MonadDOM m, ToJSString val) => HTMLEmbedElement -> val -> m ()
+setAlign self val = liftDOM (self ^. jss "align" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLEmbedElement.align Mozilla HTMLEmbedElement.align documentation> 
+getAlign ::
+         (MonadDOM m, FromJSString result) => HTMLEmbedElement -> m result
+getAlign self
+  = liftDOM ((self ^. js "align") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLEmbedElement.height Mozilla HTMLEmbedElement.height documentation> 
+setHeight ::
+          (MonadDOM m, ToJSString val) => HTMLEmbedElement -> val -> m ()
+setHeight self val = liftDOM (self ^. jss "height" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLEmbedElement.height Mozilla HTMLEmbedElement.height documentation> 
+getHeight ::
+          (MonadDOM m, FromJSString result) => HTMLEmbedElement -> m result
+getHeight self
+  = liftDOM ((self ^. js "height") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLEmbedElement.name Mozilla HTMLEmbedElement.name documentation> 
+setName ::
+        (MonadDOM m, ToJSString val) => HTMLEmbedElement -> val -> m ()
+setName self val = liftDOM (self ^. jss "name" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLEmbedElement.name Mozilla HTMLEmbedElement.name documentation> 
+getName ::
+        (MonadDOM m, FromJSString result) => HTMLEmbedElement -> m result
+getName self = liftDOM ((self ^. js "name") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLEmbedElement.src Mozilla HTMLEmbedElement.src documentation> 
+setSrc ::
+       (MonadDOM m, ToJSString val) => HTMLEmbedElement -> val -> m ()
+setSrc self val = liftDOM (self ^. jss "src" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLEmbedElement.src Mozilla HTMLEmbedElement.src documentation> 
+getSrc ::
+       (MonadDOM m, FromJSString result) => HTMLEmbedElement -> m result
+getSrc self = liftDOM ((self ^. js "src") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLEmbedElement.type Mozilla HTMLEmbedElement.type documentation> 
+setType ::
+        (MonadDOM m, ToJSString val) => HTMLEmbedElement -> val -> m ()
+setType self val = liftDOM (self ^. jss "type" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLEmbedElement.type Mozilla HTMLEmbedElement.type documentation> 
+getType ::
+        (MonadDOM m, FromJSString result) => HTMLEmbedElement -> m result
+getType self = liftDOM ((self ^. js "type") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLEmbedElement.width Mozilla HTMLEmbedElement.width documentation> 
+setWidth ::
+         (MonadDOM m, ToJSString val) => HTMLEmbedElement -> val -> m ()
+setWidth self val = liftDOM (self ^. jss "width" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLEmbedElement.width Mozilla HTMLEmbedElement.width documentation> 
+getWidth ::
+         (MonadDOM m, FromJSString result) => HTMLEmbedElement -> m result
+getWidth self
+  = liftDOM ((self ^. js "width") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HTMLFieldSetElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLFieldSetElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLFieldSetElement.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HTMLFieldSetElement
+       (checkValidity, setCustomValidity, setDisabled, getDisabled,
+        getForm, setName, getName, getType, getElements, getWillValidate,
+        getValidity, getValidationMessage, HTMLFieldSetElement,
+        castToHTMLFieldSetElement, gTypeHTMLFieldSetElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement.checkValidity Mozilla HTMLFieldSetElement.checkValidity documentation> 
+checkValidity :: (MonadDOM m) => HTMLFieldSetElement -> m Bool
+checkValidity self
+  = liftDOM ((self ^. js "checkValidity") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement.setCustomValidity Mozilla HTMLFieldSetElement.setCustomValidity documentation> 
+setCustomValidity ::
+                  (MonadDOM m, ToJSString error) =>
+                    HTMLFieldSetElement -> Maybe error -> m ()
+setCustomValidity self error
+  = liftDOM (void (self ^. jsf "setCustomValidity" [toJSVal error]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement.disabled Mozilla HTMLFieldSetElement.disabled documentation> 
+setDisabled :: (MonadDOM m) => HTMLFieldSetElement -> Bool -> m ()
+setDisabled self val
+  = liftDOM (self ^. jss "disabled" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement.disabled Mozilla HTMLFieldSetElement.disabled documentation> 
+getDisabled :: (MonadDOM m) => HTMLFieldSetElement -> m Bool
+getDisabled self = liftDOM ((self ^. js "disabled") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement.form Mozilla HTMLFieldSetElement.form documentation> 
+getForm ::
+        (MonadDOM m) => HTMLFieldSetElement -> m (Maybe HTMLFormElement)
+getForm self = liftDOM ((self ^. js "form") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement.name Mozilla HTMLFieldSetElement.name documentation> 
+setName ::
+        (MonadDOM m, ToJSString val) => HTMLFieldSetElement -> val -> m ()
+setName self val = liftDOM (self ^. jss "name" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement.name Mozilla HTMLFieldSetElement.name documentation> 
+getName ::
+        (MonadDOM m, FromJSString result) =>
+          HTMLFieldSetElement -> m result
+getName self = liftDOM ((self ^. js "name") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement.type Mozilla HTMLFieldSetElement.type documentation> 
+getType ::
+        (MonadDOM m, FromJSString result) =>
+          HTMLFieldSetElement -> m result
+getType self = liftDOM ((self ^. js "type") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement.elements Mozilla HTMLFieldSetElement.elements documentation> 
+getElements ::
+            (MonadDOM m) => HTMLFieldSetElement -> m (Maybe HTMLCollection)
+getElements self = liftDOM ((self ^. js "elements") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement.willValidate Mozilla HTMLFieldSetElement.willValidate documentation> 
+getWillValidate :: (MonadDOM m) => HTMLFieldSetElement -> m Bool
+getWillValidate self
+  = liftDOM ((self ^. js "willValidate") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement.validity Mozilla HTMLFieldSetElement.validity documentation> 
+getValidity ::
+            (MonadDOM m) => HTMLFieldSetElement -> m (Maybe ValidityState)
+getValidity self = liftDOM ((self ^. js "validity") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement.validationMessage Mozilla HTMLFieldSetElement.validationMessage documentation> 
+getValidationMessage ::
+                     (MonadDOM m, FromJSString result) =>
+                       HTMLFieldSetElement -> m result
+getValidationMessage self
+  = liftDOM ((self ^. js "validationMessage") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HTMLFontElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLFontElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLFontElement.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HTMLFontElement
+       (setColor, getColor, setFace, getFace, setSize, getSize,
+        HTMLFontElement, castToHTMLFontElement, gTypeHTMLFontElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFontElement.color Mozilla HTMLFontElement.color documentation> 
+setColor ::
+         (MonadDOM m, ToJSString val) => HTMLFontElement -> val -> m ()
+setColor self val = liftDOM (self ^. jss "color" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFontElement.color Mozilla HTMLFontElement.color documentation> 
+getColor ::
+         (MonadDOM m, FromJSString result) => HTMLFontElement -> m result
+getColor self
+  = liftDOM ((self ^. js "color") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFontElement.face Mozilla HTMLFontElement.face documentation> 
+setFace ::
+        (MonadDOM m, ToJSString val) => HTMLFontElement -> val -> m ()
+setFace self val = liftDOM (self ^. jss "face" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFontElement.face Mozilla HTMLFontElement.face documentation> 
+getFace ::
+        (MonadDOM m, FromJSString result) => HTMLFontElement -> m result
+getFace self = liftDOM ((self ^. js "face") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFontElement.size Mozilla HTMLFontElement.size documentation> 
+setSize ::
+        (MonadDOM m, ToJSString val) => HTMLFontElement -> val -> m ()
+setSize self val = liftDOM (self ^. jss "size" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFontElement.size Mozilla HTMLFontElement.size documentation> 
+getSize ::
+        (MonadDOM m, FromJSString result) => HTMLFontElement -> m result
+getSize self = liftDOM ((self ^. js "size") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HTMLFormControlsCollection.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLFormControlsCollection.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLFormControlsCollection.hs
@@ -0,0 +1,30 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HTMLFormControlsCollection
+       (_get, namedItem, HTMLFormControlsCollection,
+        castToHTMLFormControlsCollection, gTypeHTMLFormControlsCollection)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormControlsCollection._get Mozilla HTMLFormControlsCollection._get documentation> 
+_get ::
+     (MonadDOM m) =>
+       HTMLFormControlsCollection -> Word -> m (Maybe Node)
+_get self index
+  = liftDOM ((self ^. jsf "_get" [toJSVal index]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormControlsCollection.namedItem Mozilla HTMLFormControlsCollection.namedItem documentation> 
+namedItem ::
+          (MonadDOM m, ToJSString name) =>
+            HTMLFormControlsCollection -> name -> m (Maybe Node)
+namedItem self name
+  = liftDOM ((self ^. jsf "namedItem" [toJSVal name]) >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HTMLFormElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLFormElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLFormElement.hs
@@ -0,0 +1,195 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HTMLFormElement
+       (_get, submit, reset, checkValidity, requestAutocomplete,
+        setAcceptCharset, getAcceptCharset, setAction, getAction,
+        setAutocomplete, getAutocomplete, setEnctype, getEnctype,
+        setEncoding, getEncoding, setMethod, getMethod, setName, getName,
+        setNoValidate, getNoValidate, setTarget, getTarget, getElements,
+        getLength, setAutocorrect, getAutocorrect, setAutocapitalize,
+        getAutocapitalize, autocomplete, autocompleteerror,
+        HTMLFormElement, castToHTMLFormElement, gTypeHTMLFormElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement._get Mozilla HTMLFormElement._get documentation> 
+_get ::
+     (MonadDOM m) => HTMLFormElement -> Word -> m (Maybe Element)
+_get self index
+  = liftDOM ((self ^. jsf "_get" [toJSVal index]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.submit Mozilla HTMLFormElement.submit documentation> 
+submit :: (MonadDOM m) => HTMLFormElement -> m ()
+submit self = liftDOM (void (self ^. js "submit"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.reset Mozilla HTMLFormElement.reset documentation> 
+reset :: (MonadDOM m) => HTMLFormElement -> m ()
+reset self = liftDOM (void (self ^. js "reset"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.checkValidity Mozilla HTMLFormElement.checkValidity documentation> 
+checkValidity :: (MonadDOM m) => HTMLFormElement -> m Bool
+checkValidity self
+  = liftDOM ((self ^. js "checkValidity") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.requestAutocomplete Mozilla HTMLFormElement.requestAutocomplete documentation> 
+requestAutocomplete :: (MonadDOM m) => HTMLFormElement -> m ()
+requestAutocomplete self
+  = liftDOM (void (self ^. js "requestAutocomplete"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.acceptCharset Mozilla HTMLFormElement.acceptCharset documentation> 
+setAcceptCharset ::
+                 (MonadDOM m, ToJSString val) => HTMLFormElement -> val -> m ()
+setAcceptCharset self val
+  = liftDOM (self ^. jss "acceptCharset" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.acceptCharset Mozilla HTMLFormElement.acceptCharset documentation> 
+getAcceptCharset ::
+                 (MonadDOM m, FromJSString result) => HTMLFormElement -> m result
+getAcceptCharset self
+  = liftDOM ((self ^. js "acceptCharset") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.action Mozilla HTMLFormElement.action documentation> 
+setAction ::
+          (MonadDOM m, ToJSString val) => HTMLFormElement -> val -> m ()
+setAction self val = liftDOM (self ^. jss "action" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.action Mozilla HTMLFormElement.action documentation> 
+getAction ::
+          (MonadDOM m, FromJSString result) => HTMLFormElement -> m result
+getAction self
+  = liftDOM ((self ^. js "action") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.autocomplete Mozilla HTMLFormElement.autocomplete documentation> 
+setAutocomplete ::
+                (MonadDOM m, ToJSString val) => HTMLFormElement -> val -> m ()
+setAutocomplete self val
+  = liftDOM (self ^. jss "autocomplete" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.autocomplete Mozilla HTMLFormElement.autocomplete documentation> 
+getAutocomplete ::
+                (MonadDOM m, FromJSString result) => HTMLFormElement -> m result
+getAutocomplete self
+  = liftDOM ((self ^. js "autocomplete") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.enctype Mozilla HTMLFormElement.enctype documentation> 
+setEnctype ::
+           (MonadDOM m, ToJSString val) =>
+             HTMLFormElement -> Maybe val -> m ()
+setEnctype self val = liftDOM (self ^. jss "enctype" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.enctype Mozilla HTMLFormElement.enctype documentation> 
+getEnctype ::
+           (MonadDOM m, FromJSString result) =>
+             HTMLFormElement -> m (Maybe result)
+getEnctype self
+  = liftDOM ((self ^. js "enctype") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.encoding Mozilla HTMLFormElement.encoding documentation> 
+setEncoding ::
+            (MonadDOM m, ToJSString val) =>
+              HTMLFormElement -> Maybe val -> m ()
+setEncoding self val
+  = liftDOM (self ^. jss "encoding" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.encoding Mozilla HTMLFormElement.encoding documentation> 
+getEncoding ::
+            (MonadDOM m, FromJSString result) =>
+              HTMLFormElement -> m (Maybe result)
+getEncoding self
+  = liftDOM ((self ^. js "encoding") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.method Mozilla HTMLFormElement.method documentation> 
+setMethod ::
+          (MonadDOM m, ToJSString val) =>
+            HTMLFormElement -> Maybe val -> m ()
+setMethod self val = liftDOM (self ^. jss "method" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.method Mozilla HTMLFormElement.method documentation> 
+getMethod ::
+          (MonadDOM m, FromJSString result) =>
+            HTMLFormElement -> m (Maybe result)
+getMethod self
+  = liftDOM ((self ^. js "method") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.name Mozilla HTMLFormElement.name documentation> 
+setName ::
+        (MonadDOM m, ToJSString val) => HTMLFormElement -> val -> m ()
+setName self val = liftDOM (self ^. jss "name" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.name Mozilla HTMLFormElement.name documentation> 
+getName ::
+        (MonadDOM m, FromJSString result) => HTMLFormElement -> m result
+getName self = liftDOM ((self ^. js "name") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.noValidate Mozilla HTMLFormElement.noValidate documentation> 
+setNoValidate :: (MonadDOM m) => HTMLFormElement -> Bool -> m ()
+setNoValidate self val
+  = liftDOM (self ^. jss "noValidate" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.noValidate Mozilla HTMLFormElement.noValidate documentation> 
+getNoValidate :: (MonadDOM m) => HTMLFormElement -> m Bool
+getNoValidate self
+  = liftDOM ((self ^. js "noValidate") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.target Mozilla HTMLFormElement.target documentation> 
+setTarget ::
+          (MonadDOM m, ToJSString val) => HTMLFormElement -> val -> m ()
+setTarget self val = liftDOM (self ^. jss "target" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.target Mozilla HTMLFormElement.target documentation> 
+getTarget ::
+          (MonadDOM m, FromJSString result) => HTMLFormElement -> m result
+getTarget self
+  = liftDOM ((self ^. js "target") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.elements Mozilla HTMLFormElement.elements documentation> 
+getElements ::
+            (MonadDOM m) => HTMLFormElement -> m (Maybe HTMLCollection)
+getElements self = liftDOM ((self ^. js "elements") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.length Mozilla HTMLFormElement.length documentation> 
+getLength :: (MonadDOM m) => HTMLFormElement -> m Int
+getLength self
+  = liftDOM (round <$> ((self ^. js "length") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.autocorrect Mozilla HTMLFormElement.autocorrect documentation> 
+setAutocorrect :: (MonadDOM m) => HTMLFormElement -> Bool -> m ()
+setAutocorrect self val
+  = liftDOM (self ^. jss "autocorrect" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.autocorrect Mozilla HTMLFormElement.autocorrect documentation> 
+getAutocorrect :: (MonadDOM m) => HTMLFormElement -> m Bool
+getAutocorrect self
+  = liftDOM ((self ^. js "autocorrect") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.autocapitalize Mozilla HTMLFormElement.autocapitalize documentation> 
+setAutocapitalize ::
+                  (MonadDOM m, ToJSString val) =>
+                    HTMLFormElement -> Maybe val -> m ()
+setAutocapitalize self val
+  = liftDOM (self ^. jss "autocapitalize" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.autocapitalize Mozilla HTMLFormElement.autocapitalize documentation> 
+getAutocapitalize ::
+                  (MonadDOM m, FromJSString result) =>
+                    HTMLFormElement -> m (Maybe result)
+getAutocapitalize self
+  = liftDOM ((self ^. js "autocapitalize") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.onautocomplete Mozilla HTMLFormElement.onautocomplete documentation> 
+autocomplete :: EventName HTMLFormElement onautocomplete
+autocomplete = unsafeEventName (toJSString "autocomplete")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.onautocompleteerror Mozilla HTMLFormElement.onautocompleteerror documentation> 
+autocompleteerror :: EventName HTMLFormElement onautocompleteerror
+autocompleteerror
+  = unsafeEventName (toJSString "autocompleteerror")
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HTMLFrameElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLFrameElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLFrameElement.hs
@@ -0,0 +1,151 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HTMLFrameElement
+       (getSVGDocument, setFrameBorder, getFrameBorder, setLongDesc,
+        getLongDesc, setMarginHeight, getMarginHeight, setMarginWidth,
+        getMarginWidth, setName, getName, setNoResize, getNoResize,
+        setScrolling, getScrolling, setSrc, getSrc, getContentDocument,
+        getContentWindow, setLocation, getLocation, getWidth, getHeight,
+        HTMLFrameElement, castToHTMLFrameElement, gTypeHTMLFrameElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.getSVGDocument Mozilla HTMLFrameElement.getSVGDocument documentation> 
+getSVGDocument ::
+               (MonadDOM m) => HTMLFrameElement -> m (Maybe SVGDocument)
+getSVGDocument self
+  = liftDOM ((self ^. js "getSVGDocument") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.frameBorder Mozilla HTMLFrameElement.frameBorder documentation> 
+setFrameBorder ::
+               (MonadDOM m, ToJSString val) => HTMLFrameElement -> val -> m ()
+setFrameBorder self val
+  = liftDOM (self ^. jss "frameBorder" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.frameBorder Mozilla HTMLFrameElement.frameBorder documentation> 
+getFrameBorder ::
+               (MonadDOM m, FromJSString result) => HTMLFrameElement -> m result
+getFrameBorder self
+  = liftDOM ((self ^. js "frameBorder") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.longDesc Mozilla HTMLFrameElement.longDesc documentation> 
+setLongDesc ::
+            (MonadDOM m, ToJSString val) => HTMLFrameElement -> val -> m ()
+setLongDesc self val
+  = liftDOM (self ^. jss "longDesc" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.longDesc Mozilla HTMLFrameElement.longDesc documentation> 
+getLongDesc ::
+            (MonadDOM m, FromJSString result) => HTMLFrameElement -> m result
+getLongDesc self
+  = liftDOM ((self ^. js "longDesc") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.marginHeight Mozilla HTMLFrameElement.marginHeight documentation> 
+setMarginHeight ::
+                (MonadDOM m, ToJSString val) => HTMLFrameElement -> val -> m ()
+setMarginHeight self val
+  = liftDOM (self ^. jss "marginHeight" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.marginHeight Mozilla HTMLFrameElement.marginHeight documentation> 
+getMarginHeight ::
+                (MonadDOM m, FromJSString result) => HTMLFrameElement -> m result
+getMarginHeight self
+  = liftDOM ((self ^. js "marginHeight") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.marginWidth Mozilla HTMLFrameElement.marginWidth documentation> 
+setMarginWidth ::
+               (MonadDOM m, ToJSString val) => HTMLFrameElement -> val -> m ()
+setMarginWidth self val
+  = liftDOM (self ^. jss "marginWidth" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.marginWidth Mozilla HTMLFrameElement.marginWidth documentation> 
+getMarginWidth ::
+               (MonadDOM m, FromJSString result) => HTMLFrameElement -> m result
+getMarginWidth self
+  = liftDOM ((self ^. js "marginWidth") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.name Mozilla HTMLFrameElement.name documentation> 
+setName ::
+        (MonadDOM m, ToJSString val) => HTMLFrameElement -> val -> m ()
+setName self val = liftDOM (self ^. jss "name" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.name Mozilla HTMLFrameElement.name documentation> 
+getName ::
+        (MonadDOM m, FromJSString result) => HTMLFrameElement -> m result
+getName self = liftDOM ((self ^. js "name") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.noResize Mozilla HTMLFrameElement.noResize documentation> 
+setNoResize :: (MonadDOM m) => HTMLFrameElement -> Bool -> m ()
+setNoResize self val
+  = liftDOM (self ^. jss "noResize" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.noResize Mozilla HTMLFrameElement.noResize documentation> 
+getNoResize :: (MonadDOM m) => HTMLFrameElement -> m Bool
+getNoResize self = liftDOM ((self ^. js "noResize") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.scrolling Mozilla HTMLFrameElement.scrolling documentation> 
+setScrolling ::
+             (MonadDOM m, ToJSString val) => HTMLFrameElement -> val -> m ()
+setScrolling self val
+  = liftDOM (self ^. jss "scrolling" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.scrolling Mozilla HTMLFrameElement.scrolling documentation> 
+getScrolling ::
+             (MonadDOM m, FromJSString result) => HTMLFrameElement -> m result
+getScrolling self
+  = liftDOM ((self ^. js "scrolling") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.src Mozilla HTMLFrameElement.src documentation> 
+setSrc ::
+       (MonadDOM m, ToJSString val) => HTMLFrameElement -> val -> m ()
+setSrc self val = liftDOM (self ^. jss "src" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.src Mozilla HTMLFrameElement.src documentation> 
+getSrc ::
+       (MonadDOM m, FromJSString result) => HTMLFrameElement -> m result
+getSrc self = liftDOM ((self ^. js "src") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.contentDocument Mozilla HTMLFrameElement.contentDocument documentation> 
+getContentDocument ::
+                   (MonadDOM m) => HTMLFrameElement -> m (Maybe Document)
+getContentDocument self
+  = liftDOM ((self ^. js "contentDocument") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.contentWindow Mozilla HTMLFrameElement.contentWindow documentation> 
+getContentWindow ::
+                 (MonadDOM m) => HTMLFrameElement -> m (Maybe Window)
+getContentWindow self
+  = liftDOM ((self ^. js "contentWindow") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.location Mozilla HTMLFrameElement.location documentation> 
+setLocation ::
+            (MonadDOM m, ToJSString val) =>
+              HTMLFrameElement -> Maybe val -> m ()
+setLocation self val
+  = liftDOM (self ^. jss "location" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.location Mozilla HTMLFrameElement.location documentation> 
+getLocation ::
+            (MonadDOM m, FromJSString result) =>
+              HTMLFrameElement -> m (Maybe result)
+getLocation self
+  = liftDOM ((self ^. js "location") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.width Mozilla HTMLFrameElement.width documentation> 
+getWidth :: (MonadDOM m) => HTMLFrameElement -> m Int
+getWidth self
+  = liftDOM (round <$> ((self ^. js "width") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.height Mozilla HTMLFrameElement.height documentation> 
+getHeight :: (MonadDOM m) => HTMLFrameElement -> m Int
+getHeight self
+  = liftDOM (round <$> ((self ^. js "height") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HTMLFrameSetElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLFrameSetElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLFrameSetElement.hs
@@ -0,0 +1,97 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HTMLFrameSetElement
+       (setCols, getCols, setRows, getRows, beforeUnload, hashChange,
+        message, offline, online, popState, resize, storage, unload,
+        orientationChange, blur, error, focus, load, HTMLFrameSetElement,
+        castToHTMLFrameSetElement, gTypeHTMLFrameSetElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.cols Mozilla HTMLFrameSetElement.cols documentation> 
+setCols ::
+        (MonadDOM m, ToJSString val) => HTMLFrameSetElement -> val -> m ()
+setCols self val = liftDOM (self ^. jss "cols" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.cols Mozilla HTMLFrameSetElement.cols documentation> 
+getCols ::
+        (MonadDOM m, FromJSString result) =>
+          HTMLFrameSetElement -> m result
+getCols self = liftDOM ((self ^. js "cols") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.rows Mozilla HTMLFrameSetElement.rows documentation> 
+setRows ::
+        (MonadDOM m, ToJSString val) => HTMLFrameSetElement -> val -> m ()
+setRows self val = liftDOM (self ^. jss "rows" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.rows Mozilla HTMLFrameSetElement.rows documentation> 
+getRows ::
+        (MonadDOM m, FromJSString result) =>
+          HTMLFrameSetElement -> m result
+getRows self = liftDOM ((self ^. js "rows") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.onbeforeunload Mozilla HTMLFrameSetElement.onbeforeunload documentation> 
+beforeUnload :: EventName HTMLFrameSetElement BeforeUnloadEvent
+beforeUnload = unsafeEventName (toJSString "beforeunload")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.onhashchange Mozilla HTMLFrameSetElement.onhashchange documentation> 
+hashChange :: EventName HTMLFrameSetElement HashChangeEvent
+hashChange = unsafeEventName (toJSString "hashchange")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.onmessage Mozilla HTMLFrameSetElement.onmessage documentation> 
+message :: EventName HTMLFrameSetElement MessageEvent
+message = unsafeEventName (toJSString "message")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.onoffline Mozilla HTMLFrameSetElement.onoffline documentation> 
+offline :: EventName HTMLFrameSetElement Event
+offline = unsafeEventName (toJSString "offline")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.ononline Mozilla HTMLFrameSetElement.ononline documentation> 
+online :: EventName HTMLFrameSetElement Event
+online = unsafeEventName (toJSString "online")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.onpopstate Mozilla HTMLFrameSetElement.onpopstate documentation> 
+popState :: EventName HTMLFrameSetElement PopStateEvent
+popState = unsafeEventName (toJSString "popstate")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.onresize Mozilla HTMLFrameSetElement.onresize documentation> 
+resize :: EventName HTMLFrameSetElement UIEvent
+resize = unsafeEventName (toJSString "resize")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.onstorage Mozilla HTMLFrameSetElement.onstorage documentation> 
+storage :: EventName HTMLFrameSetElement StorageEvent
+storage = unsafeEventName (toJSString "storage")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.onunload Mozilla HTMLFrameSetElement.onunload documentation> 
+unload :: EventName HTMLFrameSetElement UIEvent
+unload = unsafeEventName (toJSString "unload")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.onorientationchange Mozilla HTMLFrameSetElement.onorientationchange documentation> 
+orientationChange :: EventName HTMLFrameSetElement Event
+orientationChange
+  = unsafeEventName (toJSString "orientationchange")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.onblur Mozilla HTMLFrameSetElement.onblur documentation> 
+blur :: EventName HTMLFrameSetElement FocusEvent
+blur = unsafeEventName (toJSString "blur")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.onerror Mozilla HTMLFrameSetElement.onerror documentation> 
+error :: EventName HTMLFrameSetElement UIEvent
+error = unsafeEventName (toJSString "error")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.onfocus Mozilla HTMLFrameSetElement.onfocus documentation> 
+focus :: EventName HTMLFrameSetElement FocusEvent
+focus = unsafeEventName (toJSString "focus")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.onload Mozilla HTMLFrameSetElement.onload documentation> 
+load :: EventName HTMLFrameSetElement UIEvent
+load = unsafeEventName (toJSString "load")
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HTMLHRElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLHRElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLHRElement.hs
@@ -0,0 +1,57 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HTMLHRElement
+       (setAlign, getAlign, setNoShade, getNoShade, setSize, getSize,
+        setWidth, getWidth, HTMLHRElement, castToHTMLHRElement,
+        gTypeHTMLHRElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHRElement.align Mozilla HTMLHRElement.align documentation> 
+setAlign ::
+         (MonadDOM m, ToJSString val) => HTMLHRElement -> val -> m ()
+setAlign self val = liftDOM (self ^. jss "align" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHRElement.align Mozilla HTMLHRElement.align documentation> 
+getAlign ::
+         (MonadDOM m, FromJSString result) => HTMLHRElement -> m result
+getAlign self
+  = liftDOM ((self ^. js "align") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHRElement.noShade Mozilla HTMLHRElement.noShade documentation> 
+setNoShade :: (MonadDOM m) => HTMLHRElement -> Bool -> m ()
+setNoShade self val = liftDOM (self ^. jss "noShade" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHRElement.noShade Mozilla HTMLHRElement.noShade documentation> 
+getNoShade :: (MonadDOM m) => HTMLHRElement -> m Bool
+getNoShade self = liftDOM ((self ^. js "noShade") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHRElement.size Mozilla HTMLHRElement.size documentation> 
+setSize ::
+        (MonadDOM m, ToJSString val) => HTMLHRElement -> val -> m ()
+setSize self val = liftDOM (self ^. jss "size" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHRElement.size Mozilla HTMLHRElement.size documentation> 
+getSize ::
+        (MonadDOM m, FromJSString result) => HTMLHRElement -> m result
+getSize self = liftDOM ((self ^. js "size") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHRElement.width Mozilla HTMLHRElement.width documentation> 
+setWidth ::
+         (MonadDOM m, ToJSString val) => HTMLHRElement -> val -> m ()
+setWidth self val = liftDOM (self ^. jss "width" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHRElement.width Mozilla HTMLHRElement.width documentation> 
+getWidth ::
+         (MonadDOM m, FromJSString result) => HTMLHRElement -> m result
+getWidth self
+  = liftDOM ((self ^. js "width") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HTMLHeadElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLHeadElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLHeadElement.hs
@@ -0,0 +1,27 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HTMLHeadElement
+       (setProfile, getProfile, HTMLHeadElement, castToHTMLHeadElement,
+        gTypeHTMLHeadElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHeadElement.profile Mozilla HTMLHeadElement.profile documentation> 
+setProfile ::
+           (MonadDOM m, ToJSString val) => HTMLHeadElement -> val -> m ()
+setProfile self val = liftDOM (self ^. jss "profile" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHeadElement.profile Mozilla HTMLHeadElement.profile documentation> 
+getProfile ::
+           (MonadDOM m, FromJSString result) => HTMLHeadElement -> m result
+getProfile self
+  = liftDOM ((self ^. js "profile") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HTMLHeadingElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLHeadingElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLHeadingElement.hs
@@ -0,0 +1,27 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HTMLHeadingElement
+       (setAlign, getAlign, HTMLHeadingElement, castToHTMLHeadingElement,
+        gTypeHTMLHeadingElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHeadingElement.align Mozilla HTMLHeadingElement.align documentation> 
+setAlign ::
+         (MonadDOM m, ToJSString val) => HTMLHeadingElement -> val -> m ()
+setAlign self val = liftDOM (self ^. jss "align" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHeadingElement.align Mozilla HTMLHeadingElement.align documentation> 
+getAlign ::
+         (MonadDOM m, FromJSString result) => HTMLHeadingElement -> m result
+getAlign self
+  = liftDOM ((self ^. js "align") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HTMLHtmlElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLHtmlElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLHtmlElement.hs
@@ -0,0 +1,39 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HTMLHtmlElement
+       (setVersion, getVersion, setManifest, getManifest, HTMLHtmlElement,
+        castToHTMLHtmlElement, gTypeHTMLHtmlElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHtmlElement.version Mozilla HTMLHtmlElement.version documentation> 
+setVersion ::
+           (MonadDOM m, ToJSString val) => HTMLHtmlElement -> val -> m ()
+setVersion self val = liftDOM (self ^. jss "version" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHtmlElement.version Mozilla HTMLHtmlElement.version documentation> 
+getVersion ::
+           (MonadDOM m, FromJSString result) => HTMLHtmlElement -> m result
+getVersion self
+  = liftDOM ((self ^. js "version") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHtmlElement.manifest Mozilla HTMLHtmlElement.manifest documentation> 
+setManifest ::
+            (MonadDOM m, ToJSString val) => HTMLHtmlElement -> val -> m ()
+setManifest self val
+  = liftDOM (self ^. jss "manifest" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHtmlElement.manifest Mozilla HTMLHtmlElement.manifest documentation> 
+getManifest ::
+            (MonadDOM m, FromJSString result) => HTMLHtmlElement -> m result
+getManifest self
+  = liftDOM ((self ^. js "manifest") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HTMLIFrameElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLIFrameElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLIFrameElement.hs
@@ -0,0 +1,174 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HTMLIFrameElement
+       (getSVGDocument, setAlign, getAlign, setFrameBorder,
+        getFrameBorder, setHeight, getHeight, setLongDesc, getLongDesc,
+        setMarginHeight, getMarginHeight, setMarginWidth, getMarginWidth,
+        setName, getName, setSandbox, getSandbox, setScrolling,
+        getScrolling, setSrc, getSrc, setSrcdoc, getSrcdoc, setWidth,
+        getWidth, getContentDocument, getContentWindow, HTMLIFrameElement,
+        castToHTMLIFrameElement, gTypeHTMLIFrameElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.getSVGDocument Mozilla HTMLIFrameElement.getSVGDocument documentation> 
+getSVGDocument ::
+               (MonadDOM m) => HTMLIFrameElement -> m (Maybe SVGDocument)
+getSVGDocument self
+  = liftDOM ((self ^. js "getSVGDocument") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.align Mozilla HTMLIFrameElement.align documentation> 
+setAlign ::
+         (MonadDOM m, ToJSString val) => HTMLIFrameElement -> val -> m ()
+setAlign self val = liftDOM (self ^. jss "align" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.align Mozilla HTMLIFrameElement.align documentation> 
+getAlign ::
+         (MonadDOM m, FromJSString result) => HTMLIFrameElement -> m result
+getAlign self
+  = liftDOM ((self ^. js "align") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.frameBorder Mozilla HTMLIFrameElement.frameBorder documentation> 
+setFrameBorder ::
+               (MonadDOM m, ToJSString val) => HTMLIFrameElement -> val -> m ()
+setFrameBorder self val
+  = liftDOM (self ^. jss "frameBorder" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.frameBorder Mozilla HTMLIFrameElement.frameBorder documentation> 
+getFrameBorder ::
+               (MonadDOM m, FromJSString result) => HTMLIFrameElement -> m result
+getFrameBorder self
+  = liftDOM ((self ^. js "frameBorder") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.height Mozilla HTMLIFrameElement.height documentation> 
+setHeight ::
+          (MonadDOM m, ToJSString val) => HTMLIFrameElement -> val -> m ()
+setHeight self val = liftDOM (self ^. jss "height" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.height Mozilla HTMLIFrameElement.height documentation> 
+getHeight ::
+          (MonadDOM m, FromJSString result) => HTMLIFrameElement -> m result
+getHeight self
+  = liftDOM ((self ^. js "height") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.longDesc Mozilla HTMLIFrameElement.longDesc documentation> 
+setLongDesc ::
+            (MonadDOM m, ToJSString val) => HTMLIFrameElement -> val -> m ()
+setLongDesc self val
+  = liftDOM (self ^. jss "longDesc" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.longDesc Mozilla HTMLIFrameElement.longDesc documentation> 
+getLongDesc ::
+            (MonadDOM m, FromJSString result) => HTMLIFrameElement -> m result
+getLongDesc self
+  = liftDOM ((self ^. js "longDesc") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.marginHeight Mozilla HTMLIFrameElement.marginHeight documentation> 
+setMarginHeight ::
+                (MonadDOM m, ToJSString val) => HTMLIFrameElement -> val -> m ()
+setMarginHeight self val
+  = liftDOM (self ^. jss "marginHeight" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.marginHeight Mozilla HTMLIFrameElement.marginHeight documentation> 
+getMarginHeight ::
+                (MonadDOM m, FromJSString result) => HTMLIFrameElement -> m result
+getMarginHeight self
+  = liftDOM ((self ^. js "marginHeight") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.marginWidth Mozilla HTMLIFrameElement.marginWidth documentation> 
+setMarginWidth ::
+               (MonadDOM m, ToJSString val) => HTMLIFrameElement -> val -> m ()
+setMarginWidth self val
+  = liftDOM (self ^. jss "marginWidth" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.marginWidth Mozilla HTMLIFrameElement.marginWidth documentation> 
+getMarginWidth ::
+               (MonadDOM m, FromJSString result) => HTMLIFrameElement -> m result
+getMarginWidth self
+  = liftDOM ((self ^. js "marginWidth") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.name Mozilla HTMLIFrameElement.name documentation> 
+setName ::
+        (MonadDOM m, ToJSString val) => HTMLIFrameElement -> val -> m ()
+setName self val = liftDOM (self ^. jss "name" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.name Mozilla HTMLIFrameElement.name documentation> 
+getName ::
+        (MonadDOM m, FromJSString result) => HTMLIFrameElement -> m result
+getName self = liftDOM ((self ^. js "name") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.sandbox Mozilla HTMLIFrameElement.sandbox documentation> 
+setSandbox ::
+           (MonadDOM m, ToJSString val) => HTMLIFrameElement -> val -> m ()
+setSandbox self val = liftDOM (self ^. jss "sandbox" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.sandbox Mozilla HTMLIFrameElement.sandbox documentation> 
+getSandbox ::
+           (MonadDOM m, FromJSString result) => HTMLIFrameElement -> m result
+getSandbox self
+  = liftDOM ((self ^. js "sandbox") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.scrolling Mozilla HTMLIFrameElement.scrolling documentation> 
+setScrolling ::
+             (MonadDOM m, ToJSString val) => HTMLIFrameElement -> val -> m ()
+setScrolling self val
+  = liftDOM (self ^. jss "scrolling" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.scrolling Mozilla HTMLIFrameElement.scrolling documentation> 
+getScrolling ::
+             (MonadDOM m, FromJSString result) => HTMLIFrameElement -> m result
+getScrolling self
+  = liftDOM ((self ^. js "scrolling") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.src Mozilla HTMLIFrameElement.src documentation> 
+setSrc ::
+       (MonadDOM m, ToJSString val) => HTMLIFrameElement -> val -> m ()
+setSrc self val = liftDOM (self ^. jss "src" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.src Mozilla HTMLIFrameElement.src documentation> 
+getSrc ::
+       (MonadDOM m, FromJSString result) => HTMLIFrameElement -> m result
+getSrc self = liftDOM ((self ^. js "src") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.srcdoc Mozilla HTMLIFrameElement.srcdoc documentation> 
+setSrcdoc ::
+          (MonadDOM m, ToJSString val) => HTMLIFrameElement -> val -> m ()
+setSrcdoc self val = liftDOM (self ^. jss "srcdoc" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.srcdoc Mozilla HTMLIFrameElement.srcdoc documentation> 
+getSrcdoc ::
+          (MonadDOM m, FromJSString result) => HTMLIFrameElement -> m result
+getSrcdoc self
+  = liftDOM ((self ^. js "srcdoc") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.width Mozilla HTMLIFrameElement.width documentation> 
+setWidth ::
+         (MonadDOM m, ToJSString val) => HTMLIFrameElement -> val -> m ()
+setWidth self val = liftDOM (self ^. jss "width" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.width Mozilla HTMLIFrameElement.width documentation> 
+getWidth ::
+         (MonadDOM m, FromJSString result) => HTMLIFrameElement -> m result
+getWidth self
+  = liftDOM ((self ^. js "width") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.contentDocument Mozilla HTMLIFrameElement.contentDocument documentation> 
+getContentDocument ::
+                   (MonadDOM m) => HTMLIFrameElement -> m (Maybe Document)
+getContentDocument self
+  = liftDOM ((self ^. js "contentDocument") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.contentWindow Mozilla HTMLIFrameElement.contentWindow documentation> 
+getContentWindow ::
+                 (MonadDOM m) => HTMLIFrameElement -> m (Maybe Window)
+getContentWindow self
+  = liftDOM ((self ^. js "contentWindow") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HTMLImageElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLImageElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLImageElement.hs
@@ -0,0 +1,215 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HTMLImageElement
+       (setName, getName, setAlign, getAlign, setAlt, getAlt, setBorder,
+        getBorder, setCrossOrigin, getCrossOrigin, setHeight, getHeight,
+        setHspace, getHspace, setIsMap, getIsMap, setLongDesc, getLongDesc,
+        setSrc, getSrc, setSrcset, getSrcset, setSizes, getSizes,
+        getCurrentSrc, setUseMap, getUseMap, setVspace, getVspace,
+        setWidth, getWidth, getComplete, setLowsrc, getLowsrc,
+        getNaturalHeight, getNaturalWidth, getX, getY, HTMLImageElement,
+        castToHTMLImageElement, gTypeHTMLImageElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.name Mozilla HTMLImageElement.name documentation> 
+setName ::
+        (MonadDOM m, ToJSString val) => HTMLImageElement -> val -> m ()
+setName self val = liftDOM (self ^. jss "name" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.name Mozilla HTMLImageElement.name documentation> 
+getName ::
+        (MonadDOM m, FromJSString result) => HTMLImageElement -> m result
+getName self = liftDOM ((self ^. js "name") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.align Mozilla HTMLImageElement.align documentation> 
+setAlign ::
+         (MonadDOM m, ToJSString val) => HTMLImageElement -> val -> m ()
+setAlign self val = liftDOM (self ^. jss "align" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.align Mozilla HTMLImageElement.align documentation> 
+getAlign ::
+         (MonadDOM m, FromJSString result) => HTMLImageElement -> m result
+getAlign self
+  = liftDOM ((self ^. js "align") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.alt Mozilla HTMLImageElement.alt documentation> 
+setAlt ::
+       (MonadDOM m, ToJSString val) => HTMLImageElement -> val -> m ()
+setAlt self val = liftDOM (self ^. jss "alt" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.alt Mozilla HTMLImageElement.alt documentation> 
+getAlt ::
+       (MonadDOM m, FromJSString result) => HTMLImageElement -> m result
+getAlt self = liftDOM ((self ^. js "alt") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.border Mozilla HTMLImageElement.border documentation> 
+setBorder ::
+          (MonadDOM m, ToJSString val) => HTMLImageElement -> val -> m ()
+setBorder self val = liftDOM (self ^. jss "border" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.border Mozilla HTMLImageElement.border documentation> 
+getBorder ::
+          (MonadDOM m, FromJSString result) => HTMLImageElement -> m result
+getBorder self
+  = liftDOM ((self ^. js "border") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.crossOrigin Mozilla HTMLImageElement.crossOrigin documentation> 
+setCrossOrigin ::
+               (MonadDOM m, ToJSString val) => HTMLImageElement -> val -> m ()
+setCrossOrigin self val
+  = liftDOM (self ^. jss "crossOrigin" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.crossOrigin Mozilla HTMLImageElement.crossOrigin documentation> 
+getCrossOrigin ::
+               (MonadDOM m, FromJSString result) => HTMLImageElement -> m result
+getCrossOrigin self
+  = liftDOM ((self ^. js "crossOrigin") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.height Mozilla HTMLImageElement.height documentation> 
+setHeight :: (MonadDOM m) => HTMLImageElement -> Int -> m ()
+setHeight self val = liftDOM (self ^. jss "height" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.height Mozilla HTMLImageElement.height documentation> 
+getHeight :: (MonadDOM m) => HTMLImageElement -> m Int
+getHeight self
+  = liftDOM (round <$> ((self ^. js "height") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.hspace Mozilla HTMLImageElement.hspace documentation> 
+setHspace :: (MonadDOM m) => HTMLImageElement -> Int -> m ()
+setHspace self val = liftDOM (self ^. jss "hspace" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.hspace Mozilla HTMLImageElement.hspace documentation> 
+getHspace :: (MonadDOM m) => HTMLImageElement -> m Int
+getHspace self
+  = liftDOM (round <$> ((self ^. js "hspace") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.isMap Mozilla HTMLImageElement.isMap documentation> 
+setIsMap :: (MonadDOM m) => HTMLImageElement -> Bool -> m ()
+setIsMap self val = liftDOM (self ^. jss "isMap" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.isMap Mozilla HTMLImageElement.isMap documentation> 
+getIsMap :: (MonadDOM m) => HTMLImageElement -> m Bool
+getIsMap self = liftDOM ((self ^. js "isMap") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.longDesc Mozilla HTMLImageElement.longDesc documentation> 
+setLongDesc ::
+            (MonadDOM m, ToJSString val) => HTMLImageElement -> val -> m ()
+setLongDesc self val
+  = liftDOM (self ^. jss "longDesc" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.longDesc Mozilla HTMLImageElement.longDesc documentation> 
+getLongDesc ::
+            (MonadDOM m, FromJSString result) => HTMLImageElement -> m result
+getLongDesc self
+  = liftDOM ((self ^. js "longDesc") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.src Mozilla HTMLImageElement.src documentation> 
+setSrc ::
+       (MonadDOM m, ToJSString val) => HTMLImageElement -> val -> m ()
+setSrc self val = liftDOM (self ^. jss "src" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.src Mozilla HTMLImageElement.src documentation> 
+getSrc ::
+       (MonadDOM m, FromJSString result) => HTMLImageElement -> m result
+getSrc self = liftDOM ((self ^. js "src") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.srcset Mozilla HTMLImageElement.srcset documentation> 
+setSrcset ::
+          (MonadDOM m, ToJSString val) => HTMLImageElement -> val -> m ()
+setSrcset self val = liftDOM (self ^. jss "srcset" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.srcset Mozilla HTMLImageElement.srcset documentation> 
+getSrcset ::
+          (MonadDOM m, FromJSString result) => HTMLImageElement -> m result
+getSrcset self
+  = liftDOM ((self ^. js "srcset") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.sizes Mozilla HTMLImageElement.sizes documentation> 
+setSizes ::
+         (MonadDOM m, ToJSString val) => HTMLImageElement -> val -> m ()
+setSizes self val = liftDOM (self ^. jss "sizes" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.sizes Mozilla HTMLImageElement.sizes documentation> 
+getSizes ::
+         (MonadDOM m, FromJSString result) => HTMLImageElement -> m result
+getSizes self
+  = liftDOM ((self ^. js "sizes") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.currentSrc Mozilla HTMLImageElement.currentSrc documentation> 
+getCurrentSrc ::
+              (MonadDOM m, FromJSString result) => HTMLImageElement -> m result
+getCurrentSrc self
+  = liftDOM ((self ^. js "currentSrc") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.useMap Mozilla HTMLImageElement.useMap documentation> 
+setUseMap ::
+          (MonadDOM m, ToJSString val) => HTMLImageElement -> val -> m ()
+setUseMap self val = liftDOM (self ^. jss "useMap" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.useMap Mozilla HTMLImageElement.useMap documentation> 
+getUseMap ::
+          (MonadDOM m, FromJSString result) => HTMLImageElement -> m result
+getUseMap self
+  = liftDOM ((self ^. js "useMap") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.vspace Mozilla HTMLImageElement.vspace documentation> 
+setVspace :: (MonadDOM m) => HTMLImageElement -> Int -> m ()
+setVspace self val = liftDOM (self ^. jss "vspace" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.vspace Mozilla HTMLImageElement.vspace documentation> 
+getVspace :: (MonadDOM m) => HTMLImageElement -> m Int
+getVspace self
+  = liftDOM (round <$> ((self ^. js "vspace") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.width Mozilla HTMLImageElement.width documentation> 
+setWidth :: (MonadDOM m) => HTMLImageElement -> Int -> m ()
+setWidth self val = liftDOM (self ^. jss "width" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.width Mozilla HTMLImageElement.width documentation> 
+getWidth :: (MonadDOM m) => HTMLImageElement -> m Int
+getWidth self
+  = liftDOM (round <$> ((self ^. js "width") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.complete Mozilla HTMLImageElement.complete documentation> 
+getComplete :: (MonadDOM m) => HTMLImageElement -> m Bool
+getComplete self = liftDOM ((self ^. js "complete") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.lowsrc Mozilla HTMLImageElement.lowsrc documentation> 
+setLowsrc ::
+          (MonadDOM m, ToJSString val) => HTMLImageElement -> val -> m ()
+setLowsrc self val = liftDOM (self ^. jss "lowsrc" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.lowsrc Mozilla HTMLImageElement.lowsrc documentation> 
+getLowsrc ::
+          (MonadDOM m, FromJSString result) => HTMLImageElement -> m result
+getLowsrc self
+  = liftDOM ((self ^. js "lowsrc") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.naturalHeight Mozilla HTMLImageElement.naturalHeight documentation> 
+getNaturalHeight :: (MonadDOM m) => HTMLImageElement -> m Int
+getNaturalHeight self
+  = liftDOM
+      (round <$> ((self ^. js "naturalHeight") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.naturalWidth Mozilla HTMLImageElement.naturalWidth documentation> 
+getNaturalWidth :: (MonadDOM m) => HTMLImageElement -> m Int
+getNaturalWidth self
+  = liftDOM (round <$> ((self ^. js "naturalWidth") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.x Mozilla HTMLImageElement.x documentation> 
+getX :: (MonadDOM m) => HTMLImageElement -> m Int
+getX self = liftDOM (round <$> ((self ^. js "x") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.y Mozilla HTMLImageElement.y documentation> 
+getY :: (MonadDOM m) => HTMLImageElement -> m Int
+getY self = liftDOM (round <$> ((self ^. js "y") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HTMLInputElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLInputElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLInputElement.hs
@@ -0,0 +1,583 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HTMLInputElement
+       (stepUp, stepDown, checkValidity, setCustomValidity, select,
+        setRangeText, setRangeText4, setSelectionRange, setAccept,
+        getAccept, setAlt, getAlt, setAutocomplete, getAutocomplete,
+        setAutofocus, getAutofocus, setDefaultChecked, getDefaultChecked,
+        setChecked, getChecked, setDirName, getDirName, setDisabled,
+        getDisabled, getForm, setFiles, getFiles, setFormAction,
+        getFormAction, setFormEnctype, getFormEnctype, setFormMethod,
+        getFormMethod, setFormNoValidate, getFormNoValidate, setFormTarget,
+        getFormTarget, setHeight, getHeight, setIndeterminate,
+        getIndeterminate, getList, setMax, getMax, setMaxLength,
+        getMaxLength, setMin, getMin, setMultiple, getMultiple, setName,
+        getName, setPattern, getPattern, setPlaceholder, getPlaceholder,
+        setReadOnly, getReadOnly, setRequired, getRequired, setSize,
+        getSize, setSrc, getSrc, setStep, getStep, setType, getType,
+        setDefaultValue, getDefaultValue, setValue, getValue,
+        setValueAsDate, getValueAsDate, setValueAsNumber, getValueAsNumber,
+        setWidth, getWidth, getWillValidate, getValidity,
+        getValidationMessage, getLabels, setSelectionStart,
+        getSelectionStart, setSelectionEnd, getSelectionEnd,
+        setSelectionDirection, getSelectionDirection, setAlign, getAlign,
+        setUseMap, getUseMap, setIncremental, getIncremental,
+        setAutocorrect, getAutocorrect, setAutocapitalize,
+        getAutocapitalize, setCapture, getCapture, HTMLInputElement,
+        castToHTMLInputElement, gTypeHTMLInputElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.stepUp Mozilla HTMLInputElement.stepUp documentation> 
+stepUp :: (MonadDOM m) => HTMLInputElement -> Int -> m ()
+stepUp self n = liftDOM (void (self ^. jsf "stepUp" [toJSVal n]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.stepDown Mozilla HTMLInputElement.stepDown documentation> 
+stepDown :: (MonadDOM m) => HTMLInputElement -> Int -> m ()
+stepDown self n
+  = liftDOM (void (self ^. jsf "stepDown" [toJSVal n]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.checkValidity Mozilla HTMLInputElement.checkValidity documentation> 
+checkValidity :: (MonadDOM m) => HTMLInputElement -> m Bool
+checkValidity self
+  = liftDOM ((self ^. js "checkValidity") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.setCustomValidity Mozilla HTMLInputElement.setCustomValidity documentation> 
+setCustomValidity ::
+                  (MonadDOM m, ToJSString error) =>
+                    HTMLInputElement -> Maybe error -> m ()
+setCustomValidity self error
+  = liftDOM (void (self ^. jsf "setCustomValidity" [toJSVal error]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.select Mozilla HTMLInputElement.select documentation> 
+select :: (MonadDOM m) => HTMLInputElement -> m ()
+select self = liftDOM (void (self ^. js "select"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.setRangeText Mozilla HTMLInputElement.setRangeText documentation> 
+setRangeText ::
+             (MonadDOM m, ToJSString replacement) =>
+               HTMLInputElement -> replacement -> m ()
+setRangeText self replacement
+  = liftDOM (void (self ^. jsf "setRangeText" [toJSVal replacement]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.setRangeText Mozilla HTMLInputElement.setRangeText documentation> 
+setRangeText4 ::
+              (MonadDOM m, ToJSString replacement, ToJSString selectionMode) =>
+                HTMLInputElement ->
+                  replacement -> Word -> Word -> selectionMode -> m ()
+setRangeText4 self replacement start end selectionMode
+  = liftDOM
+      (void
+         (self ^. jsf "setRangeText"
+            [toJSVal replacement, toJSVal start, toJSVal end,
+             toJSVal selectionMode]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.setSelectionRange Mozilla HTMLInputElement.setSelectionRange documentation> 
+setSelectionRange ::
+                  (MonadDOM m, ToJSString direction) =>
+                    HTMLInputElement -> Int -> Int -> direction -> m ()
+setSelectionRange self start end direction
+  = liftDOM
+      (void
+         (self ^. jsf "setSelectionRange"
+            [toJSVal start, toJSVal end, toJSVal direction]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.accept Mozilla HTMLInputElement.accept documentation> 
+setAccept ::
+          (MonadDOM m, ToJSString val) => HTMLInputElement -> val -> m ()
+setAccept self val = liftDOM (self ^. jss "accept" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.accept Mozilla HTMLInputElement.accept documentation> 
+getAccept ::
+          (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
+getAccept self
+  = liftDOM ((self ^. js "accept") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.alt Mozilla HTMLInputElement.alt documentation> 
+setAlt ::
+       (MonadDOM m, ToJSString val) => HTMLInputElement -> val -> m ()
+setAlt self val = liftDOM (self ^. jss "alt" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.alt Mozilla HTMLInputElement.alt documentation> 
+getAlt ::
+       (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
+getAlt self = liftDOM ((self ^. js "alt") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.autocomplete Mozilla HTMLInputElement.autocomplete documentation> 
+setAutocomplete ::
+                (MonadDOM m, ToJSString val) => HTMLInputElement -> val -> m ()
+setAutocomplete self val
+  = liftDOM (self ^. jss "autocomplete" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.autocomplete Mozilla HTMLInputElement.autocomplete documentation> 
+getAutocomplete ::
+                (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
+getAutocomplete self
+  = liftDOM ((self ^. js "autocomplete") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.autofocus Mozilla HTMLInputElement.autofocus documentation> 
+setAutofocus :: (MonadDOM m) => HTMLInputElement -> Bool -> m ()
+setAutofocus self val
+  = liftDOM (self ^. jss "autofocus" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.autofocus Mozilla HTMLInputElement.autofocus documentation> 
+getAutofocus :: (MonadDOM m) => HTMLInputElement -> m Bool
+getAutofocus self
+  = liftDOM ((self ^. js "autofocus") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.defaultChecked Mozilla HTMLInputElement.defaultChecked documentation> 
+setDefaultChecked ::
+                  (MonadDOM m) => HTMLInputElement -> Bool -> m ()
+setDefaultChecked self val
+  = liftDOM (self ^. jss "defaultChecked" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.defaultChecked Mozilla HTMLInputElement.defaultChecked documentation> 
+getDefaultChecked :: (MonadDOM m) => HTMLInputElement -> m Bool
+getDefaultChecked self
+  = liftDOM ((self ^. js "defaultChecked") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.checked Mozilla HTMLInputElement.checked documentation> 
+setChecked :: (MonadDOM m) => HTMLInputElement -> Bool -> m ()
+setChecked self val = liftDOM (self ^. jss "checked" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.checked Mozilla HTMLInputElement.checked documentation> 
+getChecked :: (MonadDOM m) => HTMLInputElement -> m Bool
+getChecked self = liftDOM ((self ^. js "checked") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.dirName Mozilla HTMLInputElement.dirName documentation> 
+setDirName ::
+           (MonadDOM m, ToJSString val) => HTMLInputElement -> val -> m ()
+setDirName self val = liftDOM (self ^. jss "dirName" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.dirName Mozilla HTMLInputElement.dirName documentation> 
+getDirName ::
+           (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
+getDirName self
+  = liftDOM ((self ^. js "dirName") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.disabled Mozilla HTMLInputElement.disabled documentation> 
+setDisabled :: (MonadDOM m) => HTMLInputElement -> Bool -> m ()
+setDisabled self val
+  = liftDOM (self ^. jss "disabled" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.disabled Mozilla HTMLInputElement.disabled documentation> 
+getDisabled :: (MonadDOM m) => HTMLInputElement -> m Bool
+getDisabled self = liftDOM ((self ^. js "disabled") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.form Mozilla HTMLInputElement.form documentation> 
+getForm ::
+        (MonadDOM m) => HTMLInputElement -> m (Maybe HTMLFormElement)
+getForm self = liftDOM ((self ^. js "form") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.files Mozilla HTMLInputElement.files documentation> 
+setFiles ::
+         (MonadDOM m) => HTMLInputElement -> Maybe FileList -> m ()
+setFiles self val = liftDOM (self ^. jss "files" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.files Mozilla HTMLInputElement.files documentation> 
+getFiles :: (MonadDOM m) => HTMLInputElement -> m (Maybe FileList)
+getFiles self = liftDOM ((self ^. js "files") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.formAction Mozilla HTMLInputElement.formAction documentation> 
+setFormAction ::
+              (MonadDOM m, ToJSString val) => HTMLInputElement -> val -> m ()
+setFormAction self val
+  = liftDOM (self ^. jss "formAction" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.formAction Mozilla HTMLInputElement.formAction documentation> 
+getFormAction ::
+              (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
+getFormAction self
+  = liftDOM ((self ^. js "formAction") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.formEnctype Mozilla HTMLInputElement.formEnctype documentation> 
+setFormEnctype ::
+               (MonadDOM m, ToJSString val) =>
+                 HTMLInputElement -> Maybe val -> m ()
+setFormEnctype self val
+  = liftDOM (self ^. jss "formEnctype" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.formEnctype Mozilla HTMLInputElement.formEnctype documentation> 
+getFormEnctype ::
+               (MonadDOM m, FromJSString result) =>
+                 HTMLInputElement -> m (Maybe result)
+getFormEnctype self
+  = liftDOM ((self ^. js "formEnctype") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.formMethod Mozilla HTMLInputElement.formMethod documentation> 
+setFormMethod ::
+              (MonadDOM m, ToJSString val) =>
+                HTMLInputElement -> Maybe val -> m ()
+setFormMethod self val
+  = liftDOM (self ^. jss "formMethod" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.formMethod Mozilla HTMLInputElement.formMethod documentation> 
+getFormMethod ::
+              (MonadDOM m, FromJSString result) =>
+                HTMLInputElement -> m (Maybe result)
+getFormMethod self
+  = liftDOM ((self ^. js "formMethod") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.formNoValidate Mozilla HTMLInputElement.formNoValidate documentation> 
+setFormNoValidate ::
+                  (MonadDOM m) => HTMLInputElement -> Bool -> m ()
+setFormNoValidate self val
+  = liftDOM (self ^. jss "formNoValidate" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.formNoValidate Mozilla HTMLInputElement.formNoValidate documentation> 
+getFormNoValidate :: (MonadDOM m) => HTMLInputElement -> m Bool
+getFormNoValidate self
+  = liftDOM ((self ^. js "formNoValidate") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.formTarget Mozilla HTMLInputElement.formTarget documentation> 
+setFormTarget ::
+              (MonadDOM m, ToJSString val) => HTMLInputElement -> val -> m ()
+setFormTarget self val
+  = liftDOM (self ^. jss "formTarget" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.formTarget Mozilla HTMLInputElement.formTarget documentation> 
+getFormTarget ::
+              (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
+getFormTarget self
+  = liftDOM ((self ^. js "formTarget") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.height Mozilla HTMLInputElement.height documentation> 
+setHeight :: (MonadDOM m) => HTMLInputElement -> Word -> m ()
+setHeight self val = liftDOM (self ^. jss "height" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.height Mozilla HTMLInputElement.height documentation> 
+getHeight :: (MonadDOM m) => HTMLInputElement -> m Word
+getHeight self
+  = liftDOM (round <$> ((self ^. js "height") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.indeterminate Mozilla HTMLInputElement.indeterminate documentation> 
+setIndeterminate ::
+                 (MonadDOM m) => HTMLInputElement -> Bool -> m ()
+setIndeterminate self val
+  = liftDOM (self ^. jss "indeterminate" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.indeterminate Mozilla HTMLInputElement.indeterminate documentation> 
+getIndeterminate :: (MonadDOM m) => HTMLInputElement -> m Bool
+getIndeterminate self
+  = liftDOM ((self ^. js "indeterminate") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.list Mozilla HTMLInputElement.list documentation> 
+getList ::
+        (MonadDOM m) => HTMLInputElement -> m (Maybe HTMLElement)
+getList self = liftDOM ((self ^. js "list") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.max Mozilla HTMLInputElement.max documentation> 
+setMax ::
+       (MonadDOM m, ToJSString val) => HTMLInputElement -> val -> m ()
+setMax self val = liftDOM (self ^. jss "max" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.max Mozilla HTMLInputElement.max documentation> 
+getMax ::
+       (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
+getMax self = liftDOM ((self ^. js "max") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.maxLength Mozilla HTMLInputElement.maxLength documentation> 
+setMaxLength :: (MonadDOM m) => HTMLInputElement -> Int -> m ()
+setMaxLength self val
+  = liftDOM (self ^. jss "maxLength" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.maxLength Mozilla HTMLInputElement.maxLength documentation> 
+getMaxLength :: (MonadDOM m) => HTMLInputElement -> m Int
+getMaxLength self
+  = liftDOM (round <$> ((self ^. js "maxLength") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.min Mozilla HTMLInputElement.min documentation> 
+setMin ::
+       (MonadDOM m, ToJSString val) => HTMLInputElement -> val -> m ()
+setMin self val = liftDOM (self ^. jss "min" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.min Mozilla HTMLInputElement.min documentation> 
+getMin ::
+       (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
+getMin self = liftDOM ((self ^. js "min") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.multiple Mozilla HTMLInputElement.multiple documentation> 
+setMultiple :: (MonadDOM m) => HTMLInputElement -> Bool -> m ()
+setMultiple self val
+  = liftDOM (self ^. jss "multiple" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.multiple Mozilla HTMLInputElement.multiple documentation> 
+getMultiple :: (MonadDOM m) => HTMLInputElement -> m Bool
+getMultiple self = liftDOM ((self ^. js "multiple") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.name Mozilla HTMLInputElement.name documentation> 
+setName ::
+        (MonadDOM m, ToJSString val) => HTMLInputElement -> val -> m ()
+setName self val = liftDOM (self ^. jss "name" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.name Mozilla HTMLInputElement.name documentation> 
+getName ::
+        (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
+getName self = liftDOM ((self ^. js "name") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.pattern Mozilla HTMLInputElement.pattern documentation> 
+setPattern ::
+           (MonadDOM m, ToJSString val) => HTMLInputElement -> val -> m ()
+setPattern self val = liftDOM (self ^. jss "pattern" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.pattern Mozilla HTMLInputElement.pattern documentation> 
+getPattern ::
+           (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
+getPattern self
+  = liftDOM ((self ^. js "pattern") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.placeholder Mozilla HTMLInputElement.placeholder documentation> 
+setPlaceholder ::
+               (MonadDOM m, ToJSString val) => HTMLInputElement -> val -> m ()
+setPlaceholder self val
+  = liftDOM (self ^. jss "placeholder" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.placeholder Mozilla HTMLInputElement.placeholder documentation> 
+getPlaceholder ::
+               (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
+getPlaceholder self
+  = liftDOM ((self ^. js "placeholder") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.readOnly Mozilla HTMLInputElement.readOnly documentation> 
+setReadOnly :: (MonadDOM m) => HTMLInputElement -> Bool -> m ()
+setReadOnly self val
+  = liftDOM (self ^. jss "readOnly" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.readOnly Mozilla HTMLInputElement.readOnly documentation> 
+getReadOnly :: (MonadDOM m) => HTMLInputElement -> m Bool
+getReadOnly self = liftDOM ((self ^. js "readOnly") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.required Mozilla HTMLInputElement.required documentation> 
+setRequired :: (MonadDOM m) => HTMLInputElement -> Bool -> m ()
+setRequired self val
+  = liftDOM (self ^. jss "required" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.required Mozilla HTMLInputElement.required documentation> 
+getRequired :: (MonadDOM m) => HTMLInputElement -> m Bool
+getRequired self = liftDOM ((self ^. js "required") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.size Mozilla HTMLInputElement.size documentation> 
+setSize :: (MonadDOM m) => HTMLInputElement -> Word -> m ()
+setSize self val = liftDOM (self ^. jss "size" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.size Mozilla HTMLInputElement.size documentation> 
+getSize :: (MonadDOM m) => HTMLInputElement -> m Word
+getSize self
+  = liftDOM (round <$> ((self ^. js "size") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.src Mozilla HTMLInputElement.src documentation> 
+setSrc ::
+       (MonadDOM m, ToJSString val) => HTMLInputElement -> val -> m ()
+setSrc self val = liftDOM (self ^. jss "src" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.src Mozilla HTMLInputElement.src documentation> 
+getSrc ::
+       (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
+getSrc self = liftDOM ((self ^. js "src") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.step Mozilla HTMLInputElement.step documentation> 
+setStep ::
+        (MonadDOM m, ToJSString val) => HTMLInputElement -> val -> m ()
+setStep self val = liftDOM (self ^. jss "step" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.step Mozilla HTMLInputElement.step documentation> 
+getStep ::
+        (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
+getStep self = liftDOM ((self ^. js "step") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.type Mozilla HTMLInputElement.type documentation> 
+setType ::
+        (MonadDOM m, ToJSString val) => HTMLInputElement -> val -> m ()
+setType self val = liftDOM (self ^. jss "type" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.type Mozilla HTMLInputElement.type documentation> 
+getType ::
+        (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
+getType self = liftDOM ((self ^. js "type") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.defaultValue Mozilla HTMLInputElement.defaultValue documentation> 
+setDefaultValue ::
+                (MonadDOM m, ToJSString val) =>
+                  HTMLInputElement -> Maybe val -> m ()
+setDefaultValue self val
+  = liftDOM (self ^. jss "defaultValue" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.defaultValue Mozilla HTMLInputElement.defaultValue documentation> 
+getDefaultValue ::
+                (MonadDOM m, FromJSString result) =>
+                  HTMLInputElement -> m (Maybe result)
+getDefaultValue self
+  = liftDOM ((self ^. js "defaultValue") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.value Mozilla HTMLInputElement.value documentation> 
+setValue ::
+         (MonadDOM m, ToJSString val) =>
+           HTMLInputElement -> Maybe val -> m ()
+setValue self val = liftDOM (self ^. jss "value" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.value Mozilla HTMLInputElement.value documentation> 
+getValue ::
+         (MonadDOM m, FromJSString result) =>
+           HTMLInputElement -> m (Maybe result)
+getValue self
+  = liftDOM ((self ^. js "value") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.valueAsDate Mozilla HTMLInputElement.valueAsDate documentation> 
+setValueAsDate ::
+               (MonadDOM m, IsDate val) => HTMLInputElement -> Maybe val -> m ()
+setValueAsDate self val
+  = liftDOM (self ^. jss "valueAsDate" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.valueAsDate Mozilla HTMLInputElement.valueAsDate documentation> 
+getValueAsDate ::
+               (MonadDOM m) => HTMLInputElement -> m (Maybe Date)
+getValueAsDate self
+  = liftDOM ((self ^. js "valueAsDate") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.valueAsNumber Mozilla HTMLInputElement.valueAsNumber documentation> 
+setValueAsNumber ::
+                 (MonadDOM m) => HTMLInputElement -> Double -> m ()
+setValueAsNumber self val
+  = liftDOM (self ^. jss "valueAsNumber" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.valueAsNumber Mozilla HTMLInputElement.valueAsNumber documentation> 
+getValueAsNumber :: (MonadDOM m) => HTMLInputElement -> m Double
+getValueAsNumber self
+  = liftDOM ((self ^. js "valueAsNumber") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.width Mozilla HTMLInputElement.width documentation> 
+setWidth :: (MonadDOM m) => HTMLInputElement -> Word -> m ()
+setWidth self val = liftDOM (self ^. jss "width" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.width Mozilla HTMLInputElement.width documentation> 
+getWidth :: (MonadDOM m) => HTMLInputElement -> m Word
+getWidth self
+  = liftDOM (round <$> ((self ^. js "width") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.willValidate Mozilla HTMLInputElement.willValidate documentation> 
+getWillValidate :: (MonadDOM m) => HTMLInputElement -> m Bool
+getWillValidate self
+  = liftDOM ((self ^. js "willValidate") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.validity Mozilla HTMLInputElement.validity documentation> 
+getValidity ::
+            (MonadDOM m) => HTMLInputElement -> m (Maybe ValidityState)
+getValidity self = liftDOM ((self ^. js "validity") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.validationMessage Mozilla HTMLInputElement.validationMessage documentation> 
+getValidationMessage ::
+                     (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
+getValidationMessage self
+  = liftDOM ((self ^. js "validationMessage") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.labels Mozilla HTMLInputElement.labels documentation> 
+getLabels :: (MonadDOM m) => HTMLInputElement -> m (Maybe NodeList)
+getLabels self = liftDOM ((self ^. js "labels") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.selectionStart Mozilla HTMLInputElement.selectionStart documentation> 
+setSelectionStart ::
+                  (MonadDOM m) => HTMLInputElement -> Int -> m ()
+setSelectionStart self val
+  = liftDOM (self ^. jss "selectionStart" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.selectionStart Mozilla HTMLInputElement.selectionStart documentation> 
+getSelectionStart :: (MonadDOM m) => HTMLInputElement -> m Int
+getSelectionStart self
+  = liftDOM
+      (round <$> ((self ^. js "selectionStart") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.selectionEnd Mozilla HTMLInputElement.selectionEnd documentation> 
+setSelectionEnd :: (MonadDOM m) => HTMLInputElement -> Int -> m ()
+setSelectionEnd self val
+  = liftDOM (self ^. jss "selectionEnd" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.selectionEnd Mozilla HTMLInputElement.selectionEnd documentation> 
+getSelectionEnd :: (MonadDOM m) => HTMLInputElement -> m Int
+getSelectionEnd self
+  = liftDOM (round <$> ((self ^. js "selectionEnd") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.selectionDirection Mozilla HTMLInputElement.selectionDirection documentation> 
+setSelectionDirection ::
+                      (MonadDOM m, ToJSString val) => HTMLInputElement -> val -> m ()
+setSelectionDirection self val
+  = liftDOM (self ^. jss "selectionDirection" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.selectionDirection Mozilla HTMLInputElement.selectionDirection documentation> 
+getSelectionDirection ::
+                      (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
+getSelectionDirection self
+  = liftDOM
+      ((self ^. js "selectionDirection") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.align Mozilla HTMLInputElement.align documentation> 
+setAlign ::
+         (MonadDOM m, ToJSString val) => HTMLInputElement -> val -> m ()
+setAlign self val = liftDOM (self ^. jss "align" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.align Mozilla HTMLInputElement.align documentation> 
+getAlign ::
+         (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
+getAlign self
+  = liftDOM ((self ^. js "align") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.useMap Mozilla HTMLInputElement.useMap documentation> 
+setUseMap ::
+          (MonadDOM m, ToJSString val) => HTMLInputElement -> val -> m ()
+setUseMap self val = liftDOM (self ^. jss "useMap" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.useMap Mozilla HTMLInputElement.useMap documentation> 
+getUseMap ::
+          (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
+getUseMap self
+  = liftDOM ((self ^. js "useMap") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.incremental Mozilla HTMLInputElement.incremental documentation> 
+setIncremental :: (MonadDOM m) => HTMLInputElement -> Bool -> m ()
+setIncremental self val
+  = liftDOM (self ^. jss "incremental" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.incremental Mozilla HTMLInputElement.incremental documentation> 
+getIncremental :: (MonadDOM m) => HTMLInputElement -> m Bool
+getIncremental self
+  = liftDOM ((self ^. js "incremental") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.autocorrect Mozilla HTMLInputElement.autocorrect documentation> 
+setAutocorrect :: (MonadDOM m) => HTMLInputElement -> Bool -> m ()
+setAutocorrect self val
+  = liftDOM (self ^. jss "autocorrect" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.autocorrect Mozilla HTMLInputElement.autocorrect documentation> 
+getAutocorrect :: (MonadDOM m) => HTMLInputElement -> m Bool
+getAutocorrect self
+  = liftDOM ((self ^. js "autocorrect") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.autocapitalize Mozilla HTMLInputElement.autocapitalize documentation> 
+setAutocapitalize ::
+                  (MonadDOM m, ToJSString val) =>
+                    HTMLInputElement -> Maybe val -> m ()
+setAutocapitalize self val
+  = liftDOM (self ^. jss "autocapitalize" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.autocapitalize Mozilla HTMLInputElement.autocapitalize documentation> 
+getAutocapitalize ::
+                  (MonadDOM m, FromJSString result) =>
+                    HTMLInputElement -> m (Maybe result)
+getAutocapitalize self
+  = liftDOM ((self ^. js "autocapitalize") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.capture Mozilla HTMLInputElement.capture documentation> 
+setCapture :: (MonadDOM m) => HTMLInputElement -> Bool -> m ()
+setCapture self val = liftDOM (self ^. jss "capture" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.capture Mozilla HTMLInputElement.capture documentation> 
+getCapture :: (MonadDOM m) => HTMLInputElement -> m Bool
+getCapture self = liftDOM ((self ^. js "capture") >>= valToBool)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HTMLKeygenElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLKeygenElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLKeygenElement.hs
@@ -0,0 +1,114 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HTMLKeygenElement
+       (checkValidity, setCustomValidity, setAutofocus, getAutofocus,
+        setChallenge, getChallenge, setDisabled, getDisabled, getForm,
+        setKeytype, getKeytype, setName, getName, getType, getWillValidate,
+        getValidity, getValidationMessage, getLabels, HTMLKeygenElement,
+        castToHTMLKeygenElement, gTypeHTMLKeygenElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.checkValidity Mozilla HTMLKeygenElement.checkValidity documentation> 
+checkValidity :: (MonadDOM m) => HTMLKeygenElement -> m Bool
+checkValidity self
+  = liftDOM ((self ^. js "checkValidity") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.setCustomValidity Mozilla HTMLKeygenElement.setCustomValidity documentation> 
+setCustomValidity ::
+                  (MonadDOM m, ToJSString error) =>
+                    HTMLKeygenElement -> Maybe error -> m ()
+setCustomValidity self error
+  = liftDOM (void (self ^. jsf "setCustomValidity" [toJSVal error]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.autofocus Mozilla HTMLKeygenElement.autofocus documentation> 
+setAutofocus :: (MonadDOM m) => HTMLKeygenElement -> Bool -> m ()
+setAutofocus self val
+  = liftDOM (self ^. jss "autofocus" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.autofocus Mozilla HTMLKeygenElement.autofocus documentation> 
+getAutofocus :: (MonadDOM m) => HTMLKeygenElement -> m Bool
+getAutofocus self
+  = liftDOM ((self ^. js "autofocus") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.challenge Mozilla HTMLKeygenElement.challenge documentation> 
+setChallenge ::
+             (MonadDOM m, ToJSString val) => HTMLKeygenElement -> val -> m ()
+setChallenge self val
+  = liftDOM (self ^. jss "challenge" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.challenge Mozilla HTMLKeygenElement.challenge documentation> 
+getChallenge ::
+             (MonadDOM m, FromJSString result) => HTMLKeygenElement -> m result
+getChallenge self
+  = liftDOM ((self ^. js "challenge") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.disabled Mozilla HTMLKeygenElement.disabled documentation> 
+setDisabled :: (MonadDOM m) => HTMLKeygenElement -> Bool -> m ()
+setDisabled self val
+  = liftDOM (self ^. jss "disabled" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.disabled Mozilla HTMLKeygenElement.disabled documentation> 
+getDisabled :: (MonadDOM m) => HTMLKeygenElement -> m Bool
+getDisabled self = liftDOM ((self ^. js "disabled") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.form Mozilla HTMLKeygenElement.form documentation> 
+getForm ::
+        (MonadDOM m) => HTMLKeygenElement -> m (Maybe HTMLFormElement)
+getForm self = liftDOM ((self ^. js "form") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.keytype Mozilla HTMLKeygenElement.keytype documentation> 
+setKeytype ::
+           (MonadDOM m, ToJSString val) => HTMLKeygenElement -> val -> m ()
+setKeytype self val = liftDOM (self ^. jss "keytype" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.keytype Mozilla HTMLKeygenElement.keytype documentation> 
+getKeytype ::
+           (MonadDOM m, FromJSString result) => HTMLKeygenElement -> m result
+getKeytype self
+  = liftDOM ((self ^. js "keytype") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.name Mozilla HTMLKeygenElement.name documentation> 
+setName ::
+        (MonadDOM m, ToJSString val) => HTMLKeygenElement -> val -> m ()
+setName self val = liftDOM (self ^. jss "name" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.name Mozilla HTMLKeygenElement.name documentation> 
+getName ::
+        (MonadDOM m, FromJSString result) => HTMLKeygenElement -> m result
+getName self = liftDOM ((self ^. js "name") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.type Mozilla HTMLKeygenElement.type documentation> 
+getType ::
+        (MonadDOM m, FromJSString result) => HTMLKeygenElement -> m result
+getType self = liftDOM ((self ^. js "type") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.willValidate Mozilla HTMLKeygenElement.willValidate documentation> 
+getWillValidate :: (MonadDOM m) => HTMLKeygenElement -> m Bool
+getWillValidate self
+  = liftDOM ((self ^. js "willValidate") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.validity Mozilla HTMLKeygenElement.validity documentation> 
+getValidity ::
+            (MonadDOM m) => HTMLKeygenElement -> m (Maybe ValidityState)
+getValidity self = liftDOM ((self ^. js "validity") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.validationMessage Mozilla HTMLKeygenElement.validationMessage documentation> 
+getValidationMessage ::
+                     (MonadDOM m, FromJSString result) => HTMLKeygenElement -> m result
+getValidationMessage self
+  = liftDOM ((self ^. js "validationMessage") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.labels Mozilla HTMLKeygenElement.labels documentation> 
+getLabels ::
+          (MonadDOM m) => HTMLKeygenElement -> m (Maybe NodeList)
+getLabels self = liftDOM ((self ^. js "labels") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HTMLLIElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLLIElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLLIElement.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HTMLLIElement
+       (setType, getType, setValue, getValue, HTMLLIElement,
+        castToHTMLLIElement, gTypeHTMLLIElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLIElement.type Mozilla HTMLLIElement.type documentation> 
+setType ::
+        (MonadDOM m, ToJSString val) => HTMLLIElement -> val -> m ()
+setType self val = liftDOM (self ^. jss "type" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLIElement.type Mozilla HTMLLIElement.type documentation> 
+getType ::
+        (MonadDOM m, FromJSString result) => HTMLLIElement -> m result
+getType self = liftDOM ((self ^. js "type") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLIElement.value Mozilla HTMLLIElement.value documentation> 
+setValue :: (MonadDOM m) => HTMLLIElement -> Int -> m ()
+setValue self val = liftDOM (self ^. jss "value" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLIElement.value Mozilla HTMLLIElement.value documentation> 
+getValue :: (MonadDOM m) => HTMLLIElement -> m Int
+getValue self
+  = liftDOM (round <$> ((self ^. js "value") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HTMLLabelElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLLabelElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLLabelElement.hs
@@ -0,0 +1,37 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HTMLLabelElement
+       (getForm, setHtmlFor, getHtmlFor, getControl, HTMLLabelElement,
+        castToHTMLLabelElement, gTypeHTMLLabelElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement.form Mozilla HTMLLabelElement.form documentation> 
+getForm ::
+        (MonadDOM m) => HTMLLabelElement -> m (Maybe HTMLFormElement)
+getForm self = liftDOM ((self ^. js "form") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement.htmlFor Mozilla HTMLLabelElement.htmlFor documentation> 
+setHtmlFor ::
+           (MonadDOM m, ToJSString val) => HTMLLabelElement -> val -> m ()
+setHtmlFor self val = liftDOM (self ^. jss "htmlFor" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement.htmlFor Mozilla HTMLLabelElement.htmlFor documentation> 
+getHtmlFor ::
+           (MonadDOM m, FromJSString result) => HTMLLabelElement -> m result
+getHtmlFor self
+  = liftDOM ((self ^. js "htmlFor") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement.control Mozilla HTMLLabelElement.control documentation> 
+getControl ::
+           (MonadDOM m) => HTMLLabelElement -> m (Maybe HTMLElement)
+getControl self = liftDOM ((self ^. js "control") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HTMLLegendElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLLegendElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLLegendElement.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HTMLLegendElement
+       (getForm, setAlign, getAlign, HTMLLegendElement,
+        castToHTMLLegendElement, gTypeHTMLLegendElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLegendElement.form Mozilla HTMLLegendElement.form documentation> 
+getForm ::
+        (MonadDOM m) => HTMLLegendElement -> m (Maybe HTMLFormElement)
+getForm self = liftDOM ((self ^. js "form") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLegendElement.align Mozilla HTMLLegendElement.align documentation> 
+setAlign ::
+         (MonadDOM m, ToJSString val) => HTMLLegendElement -> val -> m ()
+setAlign self val = liftDOM (self ^. jss "align" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLegendElement.align Mozilla HTMLLegendElement.align documentation> 
+getAlign ::
+         (MonadDOM m, FromJSString result) => HTMLLegendElement -> m result
+getAlign self
+  = liftDOM ((self ^. js "align") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HTMLLinkElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLLinkElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLLinkElement.hs
@@ -0,0 +1,133 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HTMLLinkElement
+       (setDisabled, getDisabled, setCharset, getCharset, setHref,
+        getHref, setHreflang, getHreflang, setMedia, getMedia, setRel,
+        getRel, setRev, getRev, setSizes, getSizes, setTarget, getTarget,
+        setType, getType, getSheet, getRelList, HTMLLinkElement,
+        castToHTMLLinkElement, gTypeHTMLLinkElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.disabled Mozilla HTMLLinkElement.disabled documentation> 
+setDisabled :: (MonadDOM m) => HTMLLinkElement -> Bool -> m ()
+setDisabled self val
+  = liftDOM (self ^. jss "disabled" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.disabled Mozilla HTMLLinkElement.disabled documentation> 
+getDisabled :: (MonadDOM m) => HTMLLinkElement -> m Bool
+getDisabled self = liftDOM ((self ^. js "disabled") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.charset Mozilla HTMLLinkElement.charset documentation> 
+setCharset ::
+           (MonadDOM m, ToJSString val) => HTMLLinkElement -> val -> m ()
+setCharset self val = liftDOM (self ^. jss "charset" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.charset Mozilla HTMLLinkElement.charset documentation> 
+getCharset ::
+           (MonadDOM m, FromJSString result) => HTMLLinkElement -> m result
+getCharset self
+  = liftDOM ((self ^. js "charset") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.href Mozilla HTMLLinkElement.href documentation> 
+setHref ::
+        (MonadDOM m, ToJSString val) => HTMLLinkElement -> val -> m ()
+setHref self val = liftDOM (self ^. jss "href" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.href Mozilla HTMLLinkElement.href documentation> 
+getHref ::
+        (MonadDOM m, FromJSString result) => HTMLLinkElement -> m result
+getHref self = liftDOM ((self ^. js "href") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.hreflang Mozilla HTMLLinkElement.hreflang documentation> 
+setHreflang ::
+            (MonadDOM m, ToJSString val) => HTMLLinkElement -> val -> m ()
+setHreflang self val
+  = liftDOM (self ^. jss "hreflang" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.hreflang Mozilla HTMLLinkElement.hreflang documentation> 
+getHreflang ::
+            (MonadDOM m, FromJSString result) => HTMLLinkElement -> m result
+getHreflang self
+  = liftDOM ((self ^. js "hreflang") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.media Mozilla HTMLLinkElement.media documentation> 
+setMedia ::
+         (MonadDOM m, ToJSString val) => HTMLLinkElement -> val -> m ()
+setMedia self val = liftDOM (self ^. jss "media" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.media Mozilla HTMLLinkElement.media documentation> 
+getMedia ::
+         (MonadDOM m, FromJSString result) => HTMLLinkElement -> m result
+getMedia self
+  = liftDOM ((self ^. js "media") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.rel Mozilla HTMLLinkElement.rel documentation> 
+setRel ::
+       (MonadDOM m, ToJSString val) => HTMLLinkElement -> val -> m ()
+setRel self val = liftDOM (self ^. jss "rel" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.rel Mozilla HTMLLinkElement.rel documentation> 
+getRel ::
+       (MonadDOM m, FromJSString result) => HTMLLinkElement -> m result
+getRel self = liftDOM ((self ^. js "rel") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.rev Mozilla HTMLLinkElement.rev documentation> 
+setRev ::
+       (MonadDOM m, ToJSString val) => HTMLLinkElement -> val -> m ()
+setRev self val = liftDOM (self ^. jss "rev" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.rev Mozilla HTMLLinkElement.rev documentation> 
+getRev ::
+       (MonadDOM m, FromJSString result) => HTMLLinkElement -> m result
+getRev self = liftDOM ((self ^. js "rev") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.sizes Mozilla HTMLLinkElement.sizes documentation> 
+setSizes ::
+         (MonadDOM m) =>
+           HTMLLinkElement -> Maybe DOMSettableTokenList -> m ()
+setSizes self val = liftDOM (self ^. jss "sizes" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.sizes Mozilla HTMLLinkElement.sizes documentation> 
+getSizes ::
+         (MonadDOM m) => HTMLLinkElement -> m (Maybe DOMSettableTokenList)
+getSizes self = liftDOM ((self ^. js "sizes") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.target Mozilla HTMLLinkElement.target documentation> 
+setTarget ::
+          (MonadDOM m, ToJSString val) => HTMLLinkElement -> val -> m ()
+setTarget self val = liftDOM (self ^. jss "target" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.target Mozilla HTMLLinkElement.target documentation> 
+getTarget ::
+          (MonadDOM m, FromJSString result) => HTMLLinkElement -> m result
+getTarget self
+  = liftDOM ((self ^. js "target") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.type Mozilla HTMLLinkElement.type documentation> 
+setType ::
+        (MonadDOM m, ToJSString val) => HTMLLinkElement -> val -> m ()
+setType self val = liftDOM (self ^. jss "type" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.type Mozilla HTMLLinkElement.type documentation> 
+getType ::
+        (MonadDOM m, FromJSString result) => HTMLLinkElement -> m result
+getType self = liftDOM ((self ^. js "type") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.sheet Mozilla HTMLLinkElement.sheet documentation> 
+getSheet :: (MonadDOM m) => HTMLLinkElement -> m (Maybe StyleSheet)
+getSheet self = liftDOM ((self ^. js "sheet") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.relList Mozilla HTMLLinkElement.relList documentation> 
+getRelList ::
+           (MonadDOM m) => HTMLLinkElement -> m (Maybe DOMTokenList)
+getRelList self = liftDOM ((self ^. js "relList") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HTMLMapElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLMapElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLMapElement.hs
@@ -0,0 +1,31 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HTMLMapElement
+       (getAreas, setName, getName, HTMLMapElement, castToHTMLMapElement,
+        gTypeHTMLMapElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMapElement.areas Mozilla HTMLMapElement.areas documentation> 
+getAreas ::
+         (MonadDOM m) => HTMLMapElement -> m (Maybe HTMLCollection)
+getAreas self = liftDOM ((self ^. js "areas") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMapElement.name Mozilla HTMLMapElement.name documentation> 
+setName ::
+        (MonadDOM m, ToJSString val) => HTMLMapElement -> val -> m ()
+setName self val = liftDOM (self ^. jss "name" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMapElement.name Mozilla HTMLMapElement.name documentation> 
+getName ::
+        (MonadDOM m, FromJSString result) => HTMLMapElement -> m result
+getName self = liftDOM ((self ^. js "name") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HTMLMarqueeElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLMarqueeElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLMarqueeElement.hs
@@ -0,0 +1,143 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HTMLMarqueeElement
+       (start, stop, setBehavior, getBehavior, setBgColor, getBgColor,
+        setDirection, getDirection, setHeight, getHeight, setHspace,
+        getHspace, setLoop, getLoop, setScrollAmount, getScrollAmount,
+        setScrollDelay, getScrollDelay, setTrueSpeed, getTrueSpeed,
+        setVspace, getVspace, setWidth, getWidth, HTMLMarqueeElement,
+        castToHTMLMarqueeElement, gTypeHTMLMarqueeElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.start Mozilla HTMLMarqueeElement.start documentation> 
+start :: (MonadDOM m) => HTMLMarqueeElement -> m ()
+start self = liftDOM (void (self ^. js "start"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.stop Mozilla HTMLMarqueeElement.stop documentation> 
+stop :: (MonadDOM m) => HTMLMarqueeElement -> m ()
+stop self = liftDOM (void (self ^. js "stop"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.behavior Mozilla HTMLMarqueeElement.behavior documentation> 
+setBehavior ::
+            (MonadDOM m, ToJSString val) => HTMLMarqueeElement -> val -> m ()
+setBehavior self val
+  = liftDOM (self ^. jss "behavior" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.behavior Mozilla HTMLMarqueeElement.behavior documentation> 
+getBehavior ::
+            (MonadDOM m, FromJSString result) => HTMLMarqueeElement -> m result
+getBehavior self
+  = liftDOM ((self ^. js "behavior") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.bgColor Mozilla HTMLMarqueeElement.bgColor documentation> 
+setBgColor ::
+           (MonadDOM m, ToJSString val) => HTMLMarqueeElement -> val -> m ()
+setBgColor self val = liftDOM (self ^. jss "bgColor" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.bgColor Mozilla HTMLMarqueeElement.bgColor documentation> 
+getBgColor ::
+           (MonadDOM m, FromJSString result) => HTMLMarqueeElement -> m result
+getBgColor self
+  = liftDOM ((self ^. js "bgColor") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.direction Mozilla HTMLMarqueeElement.direction documentation> 
+setDirection ::
+             (MonadDOM m, ToJSString val) => HTMLMarqueeElement -> val -> m ()
+setDirection self val
+  = liftDOM (self ^. jss "direction" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.direction Mozilla HTMLMarqueeElement.direction documentation> 
+getDirection ::
+             (MonadDOM m, FromJSString result) => HTMLMarqueeElement -> m result
+getDirection self
+  = liftDOM ((self ^. js "direction") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.height Mozilla HTMLMarqueeElement.height documentation> 
+setHeight ::
+          (MonadDOM m, ToJSString val) => HTMLMarqueeElement -> val -> m ()
+setHeight self val = liftDOM (self ^. jss "height" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.height Mozilla HTMLMarqueeElement.height documentation> 
+getHeight ::
+          (MonadDOM m, FromJSString result) => HTMLMarqueeElement -> m result
+getHeight self
+  = liftDOM ((self ^. js "height") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.hspace Mozilla HTMLMarqueeElement.hspace documentation> 
+setHspace :: (MonadDOM m) => HTMLMarqueeElement -> Word -> m ()
+setHspace self val = liftDOM (self ^. jss "hspace" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.hspace Mozilla HTMLMarqueeElement.hspace documentation> 
+getHspace :: (MonadDOM m) => HTMLMarqueeElement -> m Word
+getHspace self
+  = liftDOM (round <$> ((self ^. js "hspace") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.loop Mozilla HTMLMarqueeElement.loop documentation> 
+setLoop :: (MonadDOM m) => HTMLMarqueeElement -> Int -> m ()
+setLoop self val = liftDOM (self ^. jss "loop" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.loop Mozilla HTMLMarqueeElement.loop documentation> 
+getLoop :: (MonadDOM m) => HTMLMarqueeElement -> m Int
+getLoop self
+  = liftDOM (round <$> ((self ^. js "loop") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.scrollAmount Mozilla HTMLMarqueeElement.scrollAmount documentation> 
+setScrollAmount ::
+                (MonadDOM m) => HTMLMarqueeElement -> Int -> m ()
+setScrollAmount self val
+  = liftDOM (self ^. jss "scrollAmount" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.scrollAmount Mozilla HTMLMarqueeElement.scrollAmount documentation> 
+getScrollAmount :: (MonadDOM m) => HTMLMarqueeElement -> m Int
+getScrollAmount self
+  = liftDOM (round <$> ((self ^. js "scrollAmount") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.scrollDelay Mozilla HTMLMarqueeElement.scrollDelay documentation> 
+setScrollDelay :: (MonadDOM m) => HTMLMarqueeElement -> Int -> m ()
+setScrollDelay self val
+  = liftDOM (self ^. jss "scrollDelay" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.scrollDelay Mozilla HTMLMarqueeElement.scrollDelay documentation> 
+getScrollDelay :: (MonadDOM m) => HTMLMarqueeElement -> m Int
+getScrollDelay self
+  = liftDOM (round <$> ((self ^. js "scrollDelay") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.trueSpeed Mozilla HTMLMarqueeElement.trueSpeed documentation> 
+setTrueSpeed :: (MonadDOM m) => HTMLMarqueeElement -> Bool -> m ()
+setTrueSpeed self val
+  = liftDOM (self ^. jss "trueSpeed" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.trueSpeed Mozilla HTMLMarqueeElement.trueSpeed documentation> 
+getTrueSpeed :: (MonadDOM m) => HTMLMarqueeElement -> m Bool
+getTrueSpeed self
+  = liftDOM ((self ^. js "trueSpeed") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.vspace Mozilla HTMLMarqueeElement.vspace documentation> 
+setVspace :: (MonadDOM m) => HTMLMarqueeElement -> Word -> m ()
+setVspace self val = liftDOM (self ^. jss "vspace" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.vspace Mozilla HTMLMarqueeElement.vspace documentation> 
+getVspace :: (MonadDOM m) => HTMLMarqueeElement -> m Word
+getVspace self
+  = liftDOM (round <$> ((self ^. js "vspace") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.width Mozilla HTMLMarqueeElement.width documentation> 
+setWidth ::
+         (MonadDOM m, ToJSString val) => HTMLMarqueeElement -> val -> m ()
+setWidth self val = liftDOM (self ^. jss "width" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.width Mozilla HTMLMarqueeElement.width documentation> 
+getWidth ::
+         (MonadDOM m, FromJSString result) => HTMLMarqueeElement -> m result
+getWidth self
+  = liftDOM ((self ^. js "width") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HTMLMediaElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLMediaElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLMediaElement.hs
@@ -0,0 +1,663 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HTMLMediaElement
+       (load, canPlayType, play, pause, fastSeek,
+        webkitGenerateKeyRequest, webkitAddKey, webkitCancelKeyRequest,
+        webkitSetMediaKeys, addTextTrack, getVideoPlaybackQuality,
+        webkitShowPlaybackTargetPicker, pattern NETWORK_EMPTY,
+        pattern NETWORK_IDLE, pattern NETWORK_LOADING,
+        pattern NETWORK_NO_SOURCE, pattern HAVE_NOTHING,
+        pattern HAVE_METADATA, pattern HAVE_CURRENT_DATA,
+        pattern HAVE_FUTURE_DATA, pattern HAVE_ENOUGH_DATA, getError,
+        setSrc, getSrc, getCurrentSrc, getNetworkState, setPreload,
+        getPreload, getBuffered, getReadyState, getSeeking, setCurrentTime,
+        getCurrentTime, getDuration, getPaused, setDefaultPlaybackRate,
+        getDefaultPlaybackRate, setPlaybackRate, getPlaybackRate,
+        getPlayed, getSeekable, getEnded, setAutoplay, getAutoplay,
+        setLoop, getLoop, setControls, getControls, setVolume, getVolume,
+        setMuted, getMuted, setDefaultMuted, getDefaultMuted, emptied,
+        loadedMetadata, loadedData, canPlay, canPlayThrough, playing,
+        ended, waiting, durationChange, timeUpdate, playEvent, pauseEvent,
+        rateChange, volumeChange, setWebkitPreservesPitch,
+        getWebkitPreservesPitch, getWebkitHasClosedCaptions,
+        setWebkitClosedCaptionsVisible, getWebkitClosedCaptionsVisible,
+        getWebkitAudioDecodedByteCount, getWebkitVideoDecodedByteCount,
+        webKitKeyAdded, webKitKeyError, webKitKeyMessage, webKitNeedKey,
+        getWebkitKeys, getAudioTracks, getTextTracks, getVideoTracks,
+        setMediaGroup, getMediaGroup, setController, getController,
+        getWebkitCurrentPlaybackTargetIsWireless,
+        webKitCurrentPlaybackTargetIsWirelessChanged,
+        webKitPlaybackTargetAvailabilityChanged, setSrcObject,
+        getSrcObject, HTMLMediaElement, castToHTMLMediaElement,
+        gTypeHTMLMediaElement, IsHTMLMediaElement, toHTMLMediaElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.load Mozilla HTMLMediaElement.load documentation> 
+load :: (MonadDOM m, IsHTMLMediaElement self) => self -> m ()
+load self = liftDOM (void ((toHTMLMediaElement self) ^. js "load"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.canPlayType Mozilla HTMLMediaElement.canPlayType documentation> 
+canPlayType ::
+            (MonadDOM m, IsHTMLMediaElement self, ToJSString type',
+             ToJSString keySystem, FromJSString result) =>
+              self -> type' -> Maybe keySystem -> m result
+canPlayType self type' keySystem
+  = liftDOM
+      (((toHTMLMediaElement self) ^. jsf "canPlayType"
+          [toJSVal type', toJSVal keySystem])
+         >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.play Mozilla HTMLMediaElement.play documentation> 
+play :: (MonadDOM m, IsHTMLMediaElement self) => self -> m ()
+play self = liftDOM (void ((toHTMLMediaElement self) ^. js "play"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.pause Mozilla HTMLMediaElement.pause documentation> 
+pause :: (MonadDOM m, IsHTMLMediaElement self) => self -> m ()
+pause self
+  = liftDOM (void ((toHTMLMediaElement self) ^. js "pause"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.fastSeek Mozilla HTMLMediaElement.fastSeek documentation> 
+fastSeek ::
+         (MonadDOM m, IsHTMLMediaElement self) => self -> Double -> m ()
+fastSeek self time
+  = liftDOM
+      (void ((toHTMLMediaElement self) ^. jsf "fastSeek" [toJSVal time]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.webkitGenerateKeyRequest Mozilla HTMLMediaElement.webkitGenerateKeyRequest documentation> 
+webkitGenerateKeyRequest ::
+                         (MonadDOM m, IsHTMLMediaElement self, ToJSString keySystem,
+                          IsUint8Array initData) =>
+                           self -> Maybe keySystem -> Maybe initData -> m ()
+webkitGenerateKeyRequest self keySystem initData
+  = liftDOM
+      (void
+         ((toHTMLMediaElement self) ^. jsf "webkitGenerateKeyRequest"
+            [toJSVal keySystem, toJSVal initData]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.webkitAddKey Mozilla HTMLMediaElement.webkitAddKey documentation> 
+webkitAddKey ::
+             (MonadDOM m, IsHTMLMediaElement self, ToJSString keySystem,
+              IsUint8Array key, IsUint8Array initData, ToJSString sessionId) =>
+               self ->
+                 Maybe keySystem -> Maybe key -> Maybe initData -> sessionId -> m ()
+webkitAddKey self keySystem key initData sessionId
+  = liftDOM
+      (void
+         ((toHTMLMediaElement self) ^. jsf "webkitAddKey"
+            [toJSVal keySystem, toJSVal key, toJSVal initData,
+             toJSVal sessionId]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.webkitCancelKeyRequest Mozilla HTMLMediaElement.webkitCancelKeyRequest documentation> 
+webkitCancelKeyRequest ::
+                       (MonadDOM m, IsHTMLMediaElement self, ToJSString keySystem,
+                        ToJSString sessionId) =>
+                         self -> Maybe keySystem -> sessionId -> m ()
+webkitCancelKeyRequest self keySystem sessionId
+  = liftDOM
+      (void
+         ((toHTMLMediaElement self) ^. jsf "webkitCancelKeyRequest"
+            [toJSVal keySystem, toJSVal sessionId]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.webkitSetMediaKeys Mozilla HTMLMediaElement.webkitSetMediaKeys documentation> 
+webkitSetMediaKeys ::
+                   (MonadDOM m, IsHTMLMediaElement self) =>
+                     self -> Maybe MediaKeys -> m ()
+webkitSetMediaKeys self mediaKeys
+  = liftDOM
+      (void
+         ((toHTMLMediaElement self) ^. jsf "webkitSetMediaKeys"
+            [toJSVal mediaKeys]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.addTextTrack Mozilla HTMLMediaElement.addTextTrack documentation> 
+addTextTrack ::
+             (MonadDOM m, IsHTMLMediaElement self, ToJSString kind,
+              ToJSString label, ToJSString language) =>
+               self -> kind -> label -> language -> m (Maybe TextTrack)
+addTextTrack self kind label language
+  = liftDOM
+      (((toHTMLMediaElement self) ^. jsf "addTextTrack"
+          [toJSVal kind, toJSVal label, toJSVal language])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.getVideoPlaybackQuality Mozilla HTMLMediaElement.getVideoPlaybackQuality documentation> 
+getVideoPlaybackQuality ::
+                        (MonadDOM m, IsHTMLMediaElement self) =>
+                          self -> m (Maybe VideoPlaybackQuality)
+getVideoPlaybackQuality self
+  = liftDOM
+      (((toHTMLMediaElement self) ^. js "getVideoPlaybackQuality") >>=
+         fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.webkitShowPlaybackTargetPicker Mozilla HTMLMediaElement.webkitShowPlaybackTargetPicker documentation> 
+webkitShowPlaybackTargetPicker ::
+                               (MonadDOM m, IsHTMLMediaElement self) => self -> m ()
+webkitShowPlaybackTargetPicker self
+  = liftDOM
+      (void
+         ((toHTMLMediaElement self) ^. js "webkitShowPlaybackTargetPicker"))
+pattern NETWORK_EMPTY = 0
+pattern NETWORK_IDLE = 1
+pattern NETWORK_LOADING = 2
+pattern NETWORK_NO_SOURCE = 3
+pattern HAVE_NOTHING = 0
+pattern HAVE_METADATA = 1
+pattern HAVE_CURRENT_DATA = 2
+pattern HAVE_FUTURE_DATA = 3
+pattern HAVE_ENOUGH_DATA = 4
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.error Mozilla HTMLMediaElement.error documentation> 
+getError ::
+         (MonadDOM m, IsHTMLMediaElement self) =>
+           self -> m (Maybe MediaError)
+getError self
+  = liftDOM (((toHTMLMediaElement self) ^. js "error") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.src Mozilla HTMLMediaElement.src documentation> 
+setSrc ::
+       (MonadDOM m, IsHTMLMediaElement self, ToJSString val) =>
+         self -> val -> m ()
+setSrc self val
+  = liftDOM ((toHTMLMediaElement self) ^. jss "src" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.src Mozilla HTMLMediaElement.src documentation> 
+getSrc ::
+       (MonadDOM m, IsHTMLMediaElement self, FromJSString result) =>
+         self -> m result
+getSrc self
+  = liftDOM
+      (((toHTMLMediaElement self) ^. js "src") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.currentSrc Mozilla HTMLMediaElement.currentSrc documentation> 
+getCurrentSrc ::
+              (MonadDOM m, IsHTMLMediaElement self, FromJSString result) =>
+                self -> m result
+getCurrentSrc self
+  = liftDOM
+      (((toHTMLMediaElement self) ^. js "currentSrc") >>=
+         fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.networkState Mozilla HTMLMediaElement.networkState documentation> 
+getNetworkState ::
+                (MonadDOM m, IsHTMLMediaElement self) => self -> m Word
+getNetworkState self
+  = liftDOM
+      (round <$>
+         (((toHTMLMediaElement self) ^. js "networkState") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.preload Mozilla HTMLMediaElement.preload documentation> 
+setPreload ::
+           (MonadDOM m, IsHTMLMediaElement self, ToJSString val) =>
+             self -> val -> m ()
+setPreload self val
+  = liftDOM
+      ((toHTMLMediaElement self) ^. jss "preload" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.preload Mozilla HTMLMediaElement.preload documentation> 
+getPreload ::
+           (MonadDOM m, IsHTMLMediaElement self, FromJSString result) =>
+             self -> m result
+getPreload self
+  = liftDOM
+      (((toHTMLMediaElement self) ^. js "preload") >>=
+         fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.buffered Mozilla HTMLMediaElement.buffered documentation> 
+getBuffered ::
+            (MonadDOM m, IsHTMLMediaElement self) =>
+              self -> m (Maybe TimeRanges)
+getBuffered self
+  = liftDOM
+      (((toHTMLMediaElement self) ^. js "buffered") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.readyState Mozilla HTMLMediaElement.readyState documentation> 
+getReadyState ::
+              (MonadDOM m, IsHTMLMediaElement self) => self -> m Word
+getReadyState self
+  = liftDOM
+      (round <$>
+         (((toHTMLMediaElement self) ^. js "readyState") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.seeking Mozilla HTMLMediaElement.seeking documentation> 
+getSeeking ::
+           (MonadDOM m, IsHTMLMediaElement self) => self -> m Bool
+getSeeking self
+  = liftDOM
+      (((toHTMLMediaElement self) ^. js "seeking") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.currentTime Mozilla HTMLMediaElement.currentTime documentation> 
+setCurrentTime ::
+               (MonadDOM m, IsHTMLMediaElement self) => self -> Double -> m ()
+setCurrentTime self val
+  = liftDOM
+      ((toHTMLMediaElement self) ^. jss "currentTime" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.currentTime Mozilla HTMLMediaElement.currentTime documentation> 
+getCurrentTime ::
+               (MonadDOM m, IsHTMLMediaElement self) => self -> m Double
+getCurrentTime self
+  = liftDOM
+      (((toHTMLMediaElement self) ^. js "currentTime") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.duration Mozilla HTMLMediaElement.duration documentation> 
+getDuration ::
+            (MonadDOM m, IsHTMLMediaElement self) => self -> m Double
+getDuration self
+  = liftDOM
+      (((toHTMLMediaElement self) ^. js "duration") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.paused Mozilla HTMLMediaElement.paused documentation> 
+getPaused ::
+          (MonadDOM m, IsHTMLMediaElement self) => self -> m Bool
+getPaused self
+  = liftDOM
+      (((toHTMLMediaElement self) ^. js "paused") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.defaultPlaybackRate Mozilla HTMLMediaElement.defaultPlaybackRate documentation> 
+setDefaultPlaybackRate ::
+                       (MonadDOM m, IsHTMLMediaElement self) => self -> Double -> m ()
+setDefaultPlaybackRate self val
+  = liftDOM
+      ((toHTMLMediaElement self) ^. jss "defaultPlaybackRate"
+         (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.defaultPlaybackRate Mozilla HTMLMediaElement.defaultPlaybackRate documentation> 
+getDefaultPlaybackRate ::
+                       (MonadDOM m, IsHTMLMediaElement self) => self -> m Double
+getDefaultPlaybackRate self
+  = liftDOM
+      (((toHTMLMediaElement self) ^. js "defaultPlaybackRate") >>=
+         valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.playbackRate Mozilla HTMLMediaElement.playbackRate documentation> 
+setPlaybackRate ::
+                (MonadDOM m, IsHTMLMediaElement self) => self -> Double -> m ()
+setPlaybackRate self val
+  = liftDOM
+      ((toHTMLMediaElement self) ^. jss "playbackRate" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.playbackRate Mozilla HTMLMediaElement.playbackRate documentation> 
+getPlaybackRate ::
+                (MonadDOM m, IsHTMLMediaElement self) => self -> m Double
+getPlaybackRate self
+  = liftDOM
+      (((toHTMLMediaElement self) ^. js "playbackRate") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.played Mozilla HTMLMediaElement.played documentation> 
+getPlayed ::
+          (MonadDOM m, IsHTMLMediaElement self) =>
+            self -> m (Maybe TimeRanges)
+getPlayed self
+  = liftDOM
+      (((toHTMLMediaElement self) ^. js "played") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.seekable Mozilla HTMLMediaElement.seekable documentation> 
+getSeekable ::
+            (MonadDOM m, IsHTMLMediaElement self) =>
+              self -> m (Maybe TimeRanges)
+getSeekable self
+  = liftDOM
+      (((toHTMLMediaElement self) ^. js "seekable") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.ended Mozilla HTMLMediaElement.ended documentation> 
+getEnded :: (MonadDOM m, IsHTMLMediaElement self) => self -> m Bool
+getEnded self
+  = liftDOM (((toHTMLMediaElement self) ^. js "ended") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.autoplay Mozilla HTMLMediaElement.autoplay documentation> 
+setAutoplay ::
+            (MonadDOM m, IsHTMLMediaElement self) => self -> Bool -> m ()
+setAutoplay self val
+  = liftDOM
+      ((toHTMLMediaElement self) ^. jss "autoplay" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.autoplay Mozilla HTMLMediaElement.autoplay documentation> 
+getAutoplay ::
+            (MonadDOM m, IsHTMLMediaElement self) => self -> m Bool
+getAutoplay self
+  = liftDOM
+      (((toHTMLMediaElement self) ^. js "autoplay") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.loop Mozilla HTMLMediaElement.loop documentation> 
+setLoop ::
+        (MonadDOM m, IsHTMLMediaElement self) => self -> Bool -> m ()
+setLoop self val
+  = liftDOM ((toHTMLMediaElement self) ^. jss "loop" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.loop Mozilla HTMLMediaElement.loop documentation> 
+getLoop :: (MonadDOM m, IsHTMLMediaElement self) => self -> m Bool
+getLoop self
+  = liftDOM (((toHTMLMediaElement self) ^. js "loop") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.controls Mozilla HTMLMediaElement.controls documentation> 
+setControls ::
+            (MonadDOM m, IsHTMLMediaElement self) => self -> Bool -> m ()
+setControls self val
+  = liftDOM
+      ((toHTMLMediaElement self) ^. jss "controls" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.controls Mozilla HTMLMediaElement.controls documentation> 
+getControls ::
+            (MonadDOM m, IsHTMLMediaElement self) => self -> m Bool
+getControls self
+  = liftDOM
+      (((toHTMLMediaElement self) ^. js "controls") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.volume Mozilla HTMLMediaElement.volume documentation> 
+setVolume ::
+          (MonadDOM m, IsHTMLMediaElement self) => self -> Double -> m ()
+setVolume self val
+  = liftDOM ((toHTMLMediaElement self) ^. jss "volume" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.volume Mozilla HTMLMediaElement.volume documentation> 
+getVolume ::
+          (MonadDOM m, IsHTMLMediaElement self) => self -> m Double
+getVolume self
+  = liftDOM
+      (((toHTMLMediaElement self) ^. js "volume") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.muted Mozilla HTMLMediaElement.muted documentation> 
+setMuted ::
+         (MonadDOM m, IsHTMLMediaElement self) => self -> Bool -> m ()
+setMuted self val
+  = liftDOM ((toHTMLMediaElement self) ^. jss "muted" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.muted Mozilla HTMLMediaElement.muted documentation> 
+getMuted :: (MonadDOM m, IsHTMLMediaElement self) => self -> m Bool
+getMuted self
+  = liftDOM (((toHTMLMediaElement self) ^. js "muted") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.defaultMuted Mozilla HTMLMediaElement.defaultMuted documentation> 
+setDefaultMuted ::
+                (MonadDOM m, IsHTMLMediaElement self) => self -> Bool -> m ()
+setDefaultMuted self val
+  = liftDOM
+      ((toHTMLMediaElement self) ^. jss "defaultMuted" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.defaultMuted Mozilla HTMLMediaElement.defaultMuted documentation> 
+getDefaultMuted ::
+                (MonadDOM m, IsHTMLMediaElement self) => self -> m Bool
+getDefaultMuted self
+  = liftDOM
+      (((toHTMLMediaElement self) ^. js "defaultMuted") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.onemptied Mozilla HTMLMediaElement.onemptied documentation> 
+emptied ::
+        (IsHTMLMediaElement self, IsEventTarget self) =>
+          EventName self Event
+emptied = unsafeEventName (toJSString "emptied")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.onloadedmetadata Mozilla HTMLMediaElement.onloadedmetadata documentation> 
+loadedMetadata ::
+               (IsHTMLMediaElement self, IsEventTarget self) =>
+                 EventName self Event
+loadedMetadata = unsafeEventName (toJSString "loadedmetadata")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.onloadeddata Mozilla HTMLMediaElement.onloadeddata documentation> 
+loadedData ::
+           (IsHTMLMediaElement self, IsEventTarget self) =>
+             EventName self Event
+loadedData = unsafeEventName (toJSString "loadeddata")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.oncanplay Mozilla HTMLMediaElement.oncanplay documentation> 
+canPlay ::
+        (IsHTMLMediaElement self, IsEventTarget self) =>
+          EventName self Event
+canPlay = unsafeEventName (toJSString "canplay")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.oncanplaythrough Mozilla HTMLMediaElement.oncanplaythrough documentation> 
+canPlayThrough ::
+               (IsHTMLMediaElement self, IsEventTarget self) =>
+                 EventName self Event
+canPlayThrough = unsafeEventName (toJSString "canplaythrough")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.onplaying Mozilla HTMLMediaElement.onplaying documentation> 
+playing ::
+        (IsHTMLMediaElement self, IsEventTarget self) =>
+          EventName self Event
+playing = unsafeEventName (toJSString "playing")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.onended Mozilla HTMLMediaElement.onended documentation> 
+ended ::
+      (IsHTMLMediaElement self, IsEventTarget self) =>
+        EventName self Event
+ended = unsafeEventName (toJSString "ended")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.onwaiting Mozilla HTMLMediaElement.onwaiting documentation> 
+waiting ::
+        (IsHTMLMediaElement self, IsEventTarget self) =>
+          EventName self Event
+waiting = unsafeEventName (toJSString "waiting")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.ondurationchange Mozilla HTMLMediaElement.ondurationchange documentation> 
+durationChange ::
+               (IsHTMLMediaElement self, IsEventTarget self) =>
+                 EventName self Event
+durationChange = unsafeEventName (toJSString "durationchange")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.ontimeupdate Mozilla HTMLMediaElement.ontimeupdate documentation> 
+timeUpdate ::
+           (IsHTMLMediaElement self, IsEventTarget self) =>
+             EventName self Event
+timeUpdate = unsafeEventName (toJSString "timeupdate")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.onplay Mozilla HTMLMediaElement.onplay documentation> 
+playEvent ::
+          (IsHTMLMediaElement self, IsEventTarget self) =>
+            EventName self Event
+playEvent = unsafeEventName (toJSString "play")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.onpause Mozilla HTMLMediaElement.onpause documentation> 
+pauseEvent ::
+           (IsHTMLMediaElement self, IsEventTarget self) =>
+             EventName self Event
+pauseEvent = unsafeEventName (toJSString "pause")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.onratechange Mozilla HTMLMediaElement.onratechange documentation> 
+rateChange ::
+           (IsHTMLMediaElement self, IsEventTarget self) =>
+             EventName self Event
+rateChange = unsafeEventName (toJSString "ratechange")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.onvolumechange Mozilla HTMLMediaElement.onvolumechange documentation> 
+volumeChange ::
+             (IsHTMLMediaElement self, IsEventTarget self) =>
+               EventName self Event
+volumeChange = unsafeEventName (toJSString "volumechange")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.webkitPreservesPitch Mozilla HTMLMediaElement.webkitPreservesPitch documentation> 
+setWebkitPreservesPitch ::
+                        (MonadDOM m, IsHTMLMediaElement self) => self -> Bool -> m ()
+setWebkitPreservesPitch self val
+  = liftDOM
+      ((toHTMLMediaElement self) ^. jss "webkitPreservesPitch"
+         (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.webkitPreservesPitch Mozilla HTMLMediaElement.webkitPreservesPitch documentation> 
+getWebkitPreservesPitch ::
+                        (MonadDOM m, IsHTMLMediaElement self) => self -> m Bool
+getWebkitPreservesPitch self
+  = liftDOM
+      (((toHTMLMediaElement self) ^. js "webkitPreservesPitch") >>=
+         valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.webkitHasClosedCaptions Mozilla HTMLMediaElement.webkitHasClosedCaptions documentation> 
+getWebkitHasClosedCaptions ::
+                           (MonadDOM m, IsHTMLMediaElement self) => self -> m Bool
+getWebkitHasClosedCaptions self
+  = liftDOM
+      (((toHTMLMediaElement self) ^. js "webkitHasClosedCaptions") >>=
+         valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.webkitClosedCaptionsVisible Mozilla HTMLMediaElement.webkitClosedCaptionsVisible documentation> 
+setWebkitClosedCaptionsVisible ::
+                               (MonadDOM m, IsHTMLMediaElement self) => self -> Bool -> m ()
+setWebkitClosedCaptionsVisible self val
+  = liftDOM
+      ((toHTMLMediaElement self) ^. jss "webkitClosedCaptionsVisible"
+         (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.webkitClosedCaptionsVisible Mozilla HTMLMediaElement.webkitClosedCaptionsVisible documentation> 
+getWebkitClosedCaptionsVisible ::
+                               (MonadDOM m, IsHTMLMediaElement self) => self -> m Bool
+getWebkitClosedCaptionsVisible self
+  = liftDOM
+      (((toHTMLMediaElement self) ^. js "webkitClosedCaptionsVisible")
+         >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.webkitAudioDecodedByteCount Mozilla HTMLMediaElement.webkitAudioDecodedByteCount documentation> 
+getWebkitAudioDecodedByteCount ::
+                               (MonadDOM m, IsHTMLMediaElement self) => self -> m Word
+getWebkitAudioDecodedByteCount self
+  = liftDOM
+      (round <$>
+         (((toHTMLMediaElement self) ^. js "webkitAudioDecodedByteCount")
+            >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.webkitVideoDecodedByteCount Mozilla HTMLMediaElement.webkitVideoDecodedByteCount documentation> 
+getWebkitVideoDecodedByteCount ::
+                               (MonadDOM m, IsHTMLMediaElement self) => self -> m Word
+getWebkitVideoDecodedByteCount self
+  = liftDOM
+      (round <$>
+         (((toHTMLMediaElement self) ^. js "webkitVideoDecodedByteCount")
+            >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.onwebkitkeyadded Mozilla HTMLMediaElement.onwebkitkeyadded documentation> 
+webKitKeyAdded ::
+               (IsHTMLMediaElement self, IsEventTarget self) =>
+                 EventName self Event
+webKitKeyAdded = unsafeEventName (toJSString "webkitkeyadded")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.onwebkitkeyerror Mozilla HTMLMediaElement.onwebkitkeyerror documentation> 
+webKitKeyError ::
+               (IsHTMLMediaElement self, IsEventTarget self) =>
+                 EventName self Event
+webKitKeyError = unsafeEventName (toJSString "webkitkeyerror")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.onwebkitkeymessage Mozilla HTMLMediaElement.onwebkitkeymessage documentation> 
+webKitKeyMessage ::
+                 (IsHTMLMediaElement self, IsEventTarget self) =>
+                   EventName self Event
+webKitKeyMessage = unsafeEventName (toJSString "webkitkeymessage")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.onwebkitneedkey Mozilla HTMLMediaElement.onwebkitneedkey documentation> 
+webKitNeedKey ::
+              (IsHTMLMediaElement self, IsEventTarget self) =>
+                EventName self Event
+webKitNeedKey = unsafeEventName (toJSString "webkitneedkey")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.webkitKeys Mozilla HTMLMediaElement.webkitKeys documentation> 
+getWebkitKeys ::
+              (MonadDOM m, IsHTMLMediaElement self) =>
+                self -> m (Maybe MediaKeys)
+getWebkitKeys self
+  = liftDOM
+      (((toHTMLMediaElement self) ^. js "webkitKeys") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.audioTracks Mozilla HTMLMediaElement.audioTracks documentation> 
+getAudioTracks ::
+               (MonadDOM m, IsHTMLMediaElement self) =>
+                 self -> m (Maybe AudioTrackList)
+getAudioTracks self
+  = liftDOM
+      (((toHTMLMediaElement self) ^. js "audioTracks") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.textTracks Mozilla HTMLMediaElement.textTracks documentation> 
+getTextTracks ::
+              (MonadDOM m, IsHTMLMediaElement self) =>
+                self -> m (Maybe TextTrackList)
+getTextTracks self
+  = liftDOM
+      (((toHTMLMediaElement self) ^. js "textTracks") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.videoTracks Mozilla HTMLMediaElement.videoTracks documentation> 
+getVideoTracks ::
+               (MonadDOM m, IsHTMLMediaElement self) =>
+                 self -> m (Maybe VideoTrackList)
+getVideoTracks self
+  = liftDOM
+      (((toHTMLMediaElement self) ^. js "videoTracks") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.mediaGroup Mozilla HTMLMediaElement.mediaGroup documentation> 
+setMediaGroup ::
+              (MonadDOM m, IsHTMLMediaElement self, ToJSString val) =>
+                self -> Maybe val -> m ()
+setMediaGroup self val
+  = liftDOM
+      ((toHTMLMediaElement self) ^. jss "mediaGroup" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.mediaGroup Mozilla HTMLMediaElement.mediaGroup documentation> 
+getMediaGroup ::
+              (MonadDOM m, IsHTMLMediaElement self, FromJSString result) =>
+                self -> m (Maybe result)
+getMediaGroup self
+  = liftDOM
+      (((toHTMLMediaElement self) ^. js "mediaGroup") >>=
+         fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.controller Mozilla HTMLMediaElement.controller documentation> 
+setController ::
+              (MonadDOM m, IsHTMLMediaElement self) =>
+                self -> Maybe MediaController -> m ()
+setController self val
+  = liftDOM
+      ((toHTMLMediaElement self) ^. jss "controller" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.controller Mozilla HTMLMediaElement.controller documentation> 
+getController ::
+              (MonadDOM m, IsHTMLMediaElement self) =>
+                self -> m (Maybe MediaController)
+getController self
+  = liftDOM
+      (((toHTMLMediaElement self) ^. js "controller") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.webkitCurrentPlaybackTargetIsWireless Mozilla HTMLMediaElement.webkitCurrentPlaybackTargetIsWireless documentation> 
+getWebkitCurrentPlaybackTargetIsWireless ::
+                                         (MonadDOM m, IsHTMLMediaElement self) => self -> m Bool
+getWebkitCurrentPlaybackTargetIsWireless self
+  = liftDOM
+      (((toHTMLMediaElement self) ^.
+          js "webkitCurrentPlaybackTargetIsWireless")
+         >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.onwebkitcurrentplaybacktargetiswirelesschanged Mozilla HTMLMediaElement.onwebkitcurrentplaybacktargetiswirelesschanged documentation> 
+webKitCurrentPlaybackTargetIsWirelessChanged ::
+                                             (IsHTMLMediaElement self, IsEventTarget self) =>
+                                               EventName self Event
+webKitCurrentPlaybackTargetIsWirelessChanged
+  = unsafeEventName
+      (toJSString "webkitcurrentplaybacktargetiswirelesschanged")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.onwebkitplaybacktargetavailabilitychanged Mozilla HTMLMediaElement.onwebkitplaybacktargetavailabilitychanged documentation> 
+webKitPlaybackTargetAvailabilityChanged ::
+                                        (IsHTMLMediaElement self, IsEventTarget self) =>
+                                          EventName self Event
+webKitPlaybackTargetAvailabilityChanged
+  = unsafeEventName
+      (toJSString "webkitplaybacktargetavailabilitychanged")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.srcObject Mozilla HTMLMediaElement.srcObject documentation> 
+setSrcObject ::
+             (MonadDOM m, IsHTMLMediaElement self) =>
+               self -> Maybe MediaStream -> m ()
+setSrcObject self val
+  = liftDOM
+      ((toHTMLMediaElement self) ^. jss "srcObject" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.srcObject Mozilla HTMLMediaElement.srcObject documentation> 
+getSrcObject ::
+             (MonadDOM m, IsHTMLMediaElement self) =>
+               self -> m (Maybe MediaStream)
+getSrcObject self
+  = liftDOM
+      (((toHTMLMediaElement self) ^. js "srcObject") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HTMLMenuElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLMenuElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLMenuElement.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HTMLMenuElement
+       (setCompact, getCompact, HTMLMenuElement, castToHTMLMenuElement,
+        gTypeHTMLMenuElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMenuElement.compact Mozilla HTMLMenuElement.compact documentation> 
+setCompact :: (MonadDOM m) => HTMLMenuElement -> Bool -> m ()
+setCompact self val = liftDOM (self ^. jss "compact" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMenuElement.compact Mozilla HTMLMenuElement.compact documentation> 
+getCompact :: (MonadDOM m) => HTMLMenuElement -> m Bool
+getCompact self = liftDOM ((self ^. js "compact") >>= valToBool)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HTMLMetaElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLMetaElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLMetaElement.hs
@@ -0,0 +1,61 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HTMLMetaElement
+       (setContent, getContent, setHttpEquiv, getHttpEquiv, setName,
+        getName, setScheme, getScheme, HTMLMetaElement,
+        castToHTMLMetaElement, gTypeHTMLMetaElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMetaElement.content Mozilla HTMLMetaElement.content documentation> 
+setContent ::
+           (MonadDOM m, ToJSString val) => HTMLMetaElement -> val -> m ()
+setContent self val = liftDOM (self ^. jss "content" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMetaElement.content Mozilla HTMLMetaElement.content documentation> 
+getContent ::
+           (MonadDOM m, FromJSString result) => HTMLMetaElement -> m result
+getContent self
+  = liftDOM ((self ^. js "content") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMetaElement.httpEquiv Mozilla HTMLMetaElement.httpEquiv documentation> 
+setHttpEquiv ::
+             (MonadDOM m, ToJSString val) => HTMLMetaElement -> val -> m ()
+setHttpEquiv self val
+  = liftDOM (self ^. jss "httpEquiv" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMetaElement.httpEquiv Mozilla HTMLMetaElement.httpEquiv documentation> 
+getHttpEquiv ::
+             (MonadDOM m, FromJSString result) => HTMLMetaElement -> m result
+getHttpEquiv self
+  = liftDOM ((self ^. js "httpEquiv") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMetaElement.name Mozilla HTMLMetaElement.name documentation> 
+setName ::
+        (MonadDOM m, ToJSString val) => HTMLMetaElement -> val -> m ()
+setName self val = liftDOM (self ^. jss "name" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMetaElement.name Mozilla HTMLMetaElement.name documentation> 
+getName ::
+        (MonadDOM m, FromJSString result) => HTMLMetaElement -> m result
+getName self = liftDOM ((self ^. js "name") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMetaElement.scheme Mozilla HTMLMetaElement.scheme documentation> 
+setScheme ::
+          (MonadDOM m, ToJSString val) => HTMLMetaElement -> val -> m ()
+setScheme self val = liftDOM (self ^. jss "scheme" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMetaElement.scheme Mozilla HTMLMetaElement.scheme documentation> 
+getScheme ::
+          (MonadDOM m, FromJSString result) => HTMLMetaElement -> m result
+getScheme self
+  = liftDOM ((self ^. js "scheme") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HTMLMeterElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLMeterElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLMeterElement.hs
@@ -0,0 +1,69 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HTMLMeterElement
+       (setValue, getValue, setMin, getMin, setMax, getMax, setLow,
+        getLow, setHigh, getHigh, setOptimum, getOptimum, getLabels,
+        HTMLMeterElement, castToHTMLMeterElement, gTypeHTMLMeterElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMeterElement.value Mozilla HTMLMeterElement.value documentation> 
+setValue :: (MonadDOM m) => HTMLMeterElement -> Double -> m ()
+setValue self val = liftDOM (self ^. jss "value" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMeterElement.value Mozilla HTMLMeterElement.value documentation> 
+getValue :: (MonadDOM m) => HTMLMeterElement -> m Double
+getValue self = liftDOM ((self ^. js "value") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMeterElement.min Mozilla HTMLMeterElement.min documentation> 
+setMin :: (MonadDOM m) => HTMLMeterElement -> Double -> m ()
+setMin self val = liftDOM (self ^. jss "min" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMeterElement.min Mozilla HTMLMeterElement.min documentation> 
+getMin :: (MonadDOM m) => HTMLMeterElement -> m Double
+getMin self = liftDOM ((self ^. js "min") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMeterElement.max Mozilla HTMLMeterElement.max documentation> 
+setMax :: (MonadDOM m) => HTMLMeterElement -> Double -> m ()
+setMax self val = liftDOM (self ^. jss "max" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMeterElement.max Mozilla HTMLMeterElement.max documentation> 
+getMax :: (MonadDOM m) => HTMLMeterElement -> m Double
+getMax self = liftDOM ((self ^. js "max") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMeterElement.low Mozilla HTMLMeterElement.low documentation> 
+setLow :: (MonadDOM m) => HTMLMeterElement -> Double -> m ()
+setLow self val = liftDOM (self ^. jss "low" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMeterElement.low Mozilla HTMLMeterElement.low documentation> 
+getLow :: (MonadDOM m) => HTMLMeterElement -> m Double
+getLow self = liftDOM ((self ^. js "low") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMeterElement.high Mozilla HTMLMeterElement.high documentation> 
+setHigh :: (MonadDOM m) => HTMLMeterElement -> Double -> m ()
+setHigh self val = liftDOM (self ^. jss "high" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMeterElement.high Mozilla HTMLMeterElement.high documentation> 
+getHigh :: (MonadDOM m) => HTMLMeterElement -> m Double
+getHigh self = liftDOM ((self ^. js "high") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMeterElement.optimum Mozilla HTMLMeterElement.optimum documentation> 
+setOptimum :: (MonadDOM m) => HTMLMeterElement -> Double -> m ()
+setOptimum self val = liftDOM (self ^. jss "optimum" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMeterElement.optimum Mozilla HTMLMeterElement.optimum documentation> 
+getOptimum :: (MonadDOM m) => HTMLMeterElement -> m Double
+getOptimum self = liftDOM ((self ^. js "optimum") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMeterElement.labels Mozilla HTMLMeterElement.labels documentation> 
+getLabels :: (MonadDOM m) => HTMLMeterElement -> m (Maybe NodeList)
+getLabels self = liftDOM ((self ^. js "labels") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HTMLModElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLModElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLModElement.hs
@@ -0,0 +1,38 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HTMLModElement
+       (setCite, getCite, setDateTime, getDateTime, HTMLModElement,
+        castToHTMLModElement, gTypeHTMLModElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLModElement.cite Mozilla HTMLModElement.cite documentation> 
+setCite ::
+        (MonadDOM m, ToJSString val) => HTMLModElement -> val -> m ()
+setCite self val = liftDOM (self ^. jss "cite" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLModElement.cite Mozilla HTMLModElement.cite documentation> 
+getCite ::
+        (MonadDOM m, FromJSString result) => HTMLModElement -> m result
+getCite self = liftDOM ((self ^. js "cite") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLModElement.dateTime Mozilla HTMLModElement.dateTime documentation> 
+setDateTime ::
+            (MonadDOM m, ToJSString val) => HTMLModElement -> val -> m ()
+setDateTime self val
+  = liftDOM (self ^. jss "dateTime" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLModElement.dateTime Mozilla HTMLModElement.dateTime documentation> 
+getDateTime ::
+            (MonadDOM m, FromJSString result) => HTMLModElement -> m result
+getDateTime self
+  = liftDOM ((self ^. js "dateTime") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HTMLOListElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLOListElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLOListElement.hs
@@ -0,0 +1,53 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HTMLOListElement
+       (setCompact, getCompact, setStart, getStart, setReversed,
+        getReversed, setType, getType, HTMLOListElement,
+        castToHTMLOListElement, gTypeHTMLOListElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOListElement.compact Mozilla HTMLOListElement.compact documentation> 
+setCompact :: (MonadDOM m) => HTMLOListElement -> Bool -> m ()
+setCompact self val = liftDOM (self ^. jss "compact" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOListElement.compact Mozilla HTMLOListElement.compact documentation> 
+getCompact :: (MonadDOM m) => HTMLOListElement -> m Bool
+getCompact self = liftDOM ((self ^. js "compact") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOListElement.start Mozilla HTMLOListElement.start documentation> 
+setStart :: (MonadDOM m) => HTMLOListElement -> Int -> m ()
+setStart self val = liftDOM (self ^. jss "start" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOListElement.start Mozilla HTMLOListElement.start documentation> 
+getStart :: (MonadDOM m) => HTMLOListElement -> m Int
+getStart self
+  = liftDOM (round <$> ((self ^. js "start") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOListElement.reversed Mozilla HTMLOListElement.reversed documentation> 
+setReversed :: (MonadDOM m) => HTMLOListElement -> Bool -> m ()
+setReversed self val
+  = liftDOM (self ^. jss "reversed" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOListElement.reversed Mozilla HTMLOListElement.reversed documentation> 
+getReversed :: (MonadDOM m) => HTMLOListElement -> m Bool
+getReversed self = liftDOM ((self ^. js "reversed") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOListElement.type Mozilla HTMLOListElement.type documentation> 
+setType ::
+        (MonadDOM m, ToJSString val) => HTMLOListElement -> val -> m ()
+setType self val = liftDOM (self ^. jss "type" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOListElement.type Mozilla HTMLOListElement.type documentation> 
+getType ::
+        (MonadDOM m, FromJSString result) => HTMLOListElement -> m result
+getType self = liftDOM ((self ^. js "type") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HTMLObjectElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLObjectElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLObjectElement.hs
@@ -0,0 +1,235 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HTMLObjectElement
+       (checkValidity, setCustomValidity, getSVGDocument, getForm,
+        setCode, getCode, setAlign, getAlign, setArchive, getArchive,
+        setBorder, getBorder, setCodeBase, getCodeBase, setCodeType,
+        getCodeType, setData, getData, setDeclare, getDeclare, setHeight,
+        getHeight, setHspace, getHspace, setName, getName, setStandby,
+        getStandby, setType, getType, setUseMap, getUseMap, setVspace,
+        getVspace, setWidth, getWidth, getWillValidate, getValidity,
+        getValidationMessage, getContentDocument, HTMLObjectElement,
+        castToHTMLObjectElement, gTypeHTMLObjectElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.checkValidity Mozilla HTMLObjectElement.checkValidity documentation> 
+checkValidity :: (MonadDOM m) => HTMLObjectElement -> m Bool
+checkValidity self
+  = liftDOM ((self ^. js "checkValidity") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.setCustomValidity Mozilla HTMLObjectElement.setCustomValidity documentation> 
+setCustomValidity ::
+                  (MonadDOM m, ToJSString error) =>
+                    HTMLObjectElement -> Maybe error -> m ()
+setCustomValidity self error
+  = liftDOM (void (self ^. jsf "setCustomValidity" [toJSVal error]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.getSVGDocument Mozilla HTMLObjectElement.getSVGDocument documentation> 
+getSVGDocument ::
+               (MonadDOM m) => HTMLObjectElement -> m (Maybe SVGDocument)
+getSVGDocument self
+  = liftDOM ((self ^. js "getSVGDocument") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.form Mozilla HTMLObjectElement.form documentation> 
+getForm ::
+        (MonadDOM m) => HTMLObjectElement -> m (Maybe HTMLFormElement)
+getForm self = liftDOM ((self ^. js "form") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.code Mozilla HTMLObjectElement.code documentation> 
+setCode ::
+        (MonadDOM m, ToJSString val) => HTMLObjectElement -> val -> m ()
+setCode self val = liftDOM (self ^. jss "code" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.code Mozilla HTMLObjectElement.code documentation> 
+getCode ::
+        (MonadDOM m, FromJSString result) => HTMLObjectElement -> m result
+getCode self = liftDOM ((self ^. js "code") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.align Mozilla HTMLObjectElement.align documentation> 
+setAlign ::
+         (MonadDOM m, ToJSString val) => HTMLObjectElement -> val -> m ()
+setAlign self val = liftDOM (self ^. jss "align" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.align Mozilla HTMLObjectElement.align documentation> 
+getAlign ::
+         (MonadDOM m, FromJSString result) => HTMLObjectElement -> m result
+getAlign self
+  = liftDOM ((self ^. js "align") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.archive Mozilla HTMLObjectElement.archive documentation> 
+setArchive ::
+           (MonadDOM m, ToJSString val) => HTMLObjectElement -> val -> m ()
+setArchive self val = liftDOM (self ^. jss "archive" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.archive Mozilla HTMLObjectElement.archive documentation> 
+getArchive ::
+           (MonadDOM m, FromJSString result) => HTMLObjectElement -> m result
+getArchive self
+  = liftDOM ((self ^. js "archive") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.border Mozilla HTMLObjectElement.border documentation> 
+setBorder ::
+          (MonadDOM m, ToJSString val) => HTMLObjectElement -> val -> m ()
+setBorder self val = liftDOM (self ^. jss "border" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.border Mozilla HTMLObjectElement.border documentation> 
+getBorder ::
+          (MonadDOM m, FromJSString result) => HTMLObjectElement -> m result
+getBorder self
+  = liftDOM ((self ^. js "border") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.codeBase Mozilla HTMLObjectElement.codeBase documentation> 
+setCodeBase ::
+            (MonadDOM m, ToJSString val) => HTMLObjectElement -> val -> m ()
+setCodeBase self val
+  = liftDOM (self ^. jss "codeBase" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.codeBase Mozilla HTMLObjectElement.codeBase documentation> 
+getCodeBase ::
+            (MonadDOM m, FromJSString result) => HTMLObjectElement -> m result
+getCodeBase self
+  = liftDOM ((self ^. js "codeBase") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.codeType Mozilla HTMLObjectElement.codeType documentation> 
+setCodeType ::
+            (MonadDOM m, ToJSString val) => HTMLObjectElement -> val -> m ()
+setCodeType self val
+  = liftDOM (self ^. jss "codeType" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.codeType Mozilla HTMLObjectElement.codeType documentation> 
+getCodeType ::
+            (MonadDOM m, FromJSString result) => HTMLObjectElement -> m result
+getCodeType self
+  = liftDOM ((self ^. js "codeType") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.data Mozilla HTMLObjectElement.data documentation> 
+setData ::
+        (MonadDOM m, ToJSString val) => HTMLObjectElement -> val -> m ()
+setData self val = liftDOM (self ^. jss "data" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.data Mozilla HTMLObjectElement.data documentation> 
+getData ::
+        (MonadDOM m, FromJSString result) => HTMLObjectElement -> m result
+getData self = liftDOM ((self ^. js "data") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.declare Mozilla HTMLObjectElement.declare documentation> 
+setDeclare :: (MonadDOM m) => HTMLObjectElement -> Bool -> m ()
+setDeclare self val = liftDOM (self ^. jss "declare" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.declare Mozilla HTMLObjectElement.declare documentation> 
+getDeclare :: (MonadDOM m) => HTMLObjectElement -> m Bool
+getDeclare self = liftDOM ((self ^. js "declare") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.height Mozilla HTMLObjectElement.height documentation> 
+setHeight ::
+          (MonadDOM m, ToJSString val) => HTMLObjectElement -> val -> m ()
+setHeight self val = liftDOM (self ^. jss "height" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.height Mozilla HTMLObjectElement.height documentation> 
+getHeight ::
+          (MonadDOM m, FromJSString result) => HTMLObjectElement -> m result
+getHeight self
+  = liftDOM ((self ^. js "height") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.hspace Mozilla HTMLObjectElement.hspace documentation> 
+setHspace :: (MonadDOM m) => HTMLObjectElement -> Int -> m ()
+setHspace self val = liftDOM (self ^. jss "hspace" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.hspace Mozilla HTMLObjectElement.hspace documentation> 
+getHspace :: (MonadDOM m) => HTMLObjectElement -> m Int
+getHspace self
+  = liftDOM (round <$> ((self ^. js "hspace") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.name Mozilla HTMLObjectElement.name documentation> 
+setName ::
+        (MonadDOM m, ToJSString val) => HTMLObjectElement -> val -> m ()
+setName self val = liftDOM (self ^. jss "name" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.name Mozilla HTMLObjectElement.name documentation> 
+getName ::
+        (MonadDOM m, FromJSString result) => HTMLObjectElement -> m result
+getName self = liftDOM ((self ^. js "name") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.standby Mozilla HTMLObjectElement.standby documentation> 
+setStandby ::
+           (MonadDOM m, ToJSString val) => HTMLObjectElement -> val -> m ()
+setStandby self val = liftDOM (self ^. jss "standby" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.standby Mozilla HTMLObjectElement.standby documentation> 
+getStandby ::
+           (MonadDOM m, FromJSString result) => HTMLObjectElement -> m result
+getStandby self
+  = liftDOM ((self ^. js "standby") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.type Mozilla HTMLObjectElement.type documentation> 
+setType ::
+        (MonadDOM m, ToJSString val) => HTMLObjectElement -> val -> m ()
+setType self val = liftDOM (self ^. jss "type" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.type Mozilla HTMLObjectElement.type documentation> 
+getType ::
+        (MonadDOM m, FromJSString result) => HTMLObjectElement -> m result
+getType self = liftDOM ((self ^. js "type") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.useMap Mozilla HTMLObjectElement.useMap documentation> 
+setUseMap ::
+          (MonadDOM m, ToJSString val) => HTMLObjectElement -> val -> m ()
+setUseMap self val = liftDOM (self ^. jss "useMap" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.useMap Mozilla HTMLObjectElement.useMap documentation> 
+getUseMap ::
+          (MonadDOM m, FromJSString result) => HTMLObjectElement -> m result
+getUseMap self
+  = liftDOM ((self ^. js "useMap") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.vspace Mozilla HTMLObjectElement.vspace documentation> 
+setVspace :: (MonadDOM m) => HTMLObjectElement -> Int -> m ()
+setVspace self val = liftDOM (self ^. jss "vspace" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.vspace Mozilla HTMLObjectElement.vspace documentation> 
+getVspace :: (MonadDOM m) => HTMLObjectElement -> m Int
+getVspace self
+  = liftDOM (round <$> ((self ^. js "vspace") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.width Mozilla HTMLObjectElement.width documentation> 
+setWidth ::
+         (MonadDOM m, ToJSString val) => HTMLObjectElement -> val -> m ()
+setWidth self val = liftDOM (self ^. jss "width" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.width Mozilla HTMLObjectElement.width documentation> 
+getWidth ::
+         (MonadDOM m, FromJSString result) => HTMLObjectElement -> m result
+getWidth self
+  = liftDOM ((self ^. js "width") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.willValidate Mozilla HTMLObjectElement.willValidate documentation> 
+getWillValidate :: (MonadDOM m) => HTMLObjectElement -> m Bool
+getWillValidate self
+  = liftDOM ((self ^. js "willValidate") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.validity Mozilla HTMLObjectElement.validity documentation> 
+getValidity ::
+            (MonadDOM m) => HTMLObjectElement -> m (Maybe ValidityState)
+getValidity self = liftDOM ((self ^. js "validity") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.validationMessage Mozilla HTMLObjectElement.validationMessage documentation> 
+getValidationMessage ::
+                     (MonadDOM m, FromJSString result) => HTMLObjectElement -> m result
+getValidationMessage self
+  = liftDOM ((self ^. js "validationMessage") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.contentDocument Mozilla HTMLObjectElement.contentDocument documentation> 
+getContentDocument ::
+                   (MonadDOM m) => HTMLObjectElement -> m (Maybe Document)
+getContentDocument self
+  = liftDOM ((self ^. js "contentDocument") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HTMLOptGroupElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLOptGroupElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLOptGroupElement.hs
@@ -0,0 +1,37 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HTMLOptGroupElement
+       (setDisabled, getDisabled, setLabel, getLabel, HTMLOptGroupElement,
+        castToHTMLOptGroupElement, gTypeHTMLOptGroupElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptGroupElement.disabled Mozilla HTMLOptGroupElement.disabled documentation> 
+setDisabled :: (MonadDOM m) => HTMLOptGroupElement -> Bool -> m ()
+setDisabled self val
+  = liftDOM (self ^. jss "disabled" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptGroupElement.disabled Mozilla HTMLOptGroupElement.disabled documentation> 
+getDisabled :: (MonadDOM m) => HTMLOptGroupElement -> m Bool
+getDisabled self = liftDOM ((self ^. js "disabled") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptGroupElement.label Mozilla HTMLOptGroupElement.label documentation> 
+setLabel ::
+         (MonadDOM m, ToJSString val) => HTMLOptGroupElement -> val -> m ()
+setLabel self val = liftDOM (self ^. jss "label" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptGroupElement.label Mozilla HTMLOptGroupElement.label documentation> 
+getLabel ::
+         (MonadDOM m, FromJSString result) =>
+           HTMLOptGroupElement -> m result
+getLabel self
+  = liftDOM ((self ^. js "label") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HTMLOptionElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLOptionElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLOptionElement.hs
@@ -0,0 +1,89 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HTMLOptionElement
+       (setDisabled, getDisabled, getForm, setLabel, getLabel,
+        setDefaultSelected, getDefaultSelected, setSelected, getSelected,
+        setValue, getValue, setText, getText, getIndex, HTMLOptionElement,
+        castToHTMLOptionElement, gTypeHTMLOptionElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionElement.disabled Mozilla HTMLOptionElement.disabled documentation> 
+setDisabled :: (MonadDOM m) => HTMLOptionElement -> Bool -> m ()
+setDisabled self val
+  = liftDOM (self ^. jss "disabled" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionElement.disabled Mozilla HTMLOptionElement.disabled documentation> 
+getDisabled :: (MonadDOM m) => HTMLOptionElement -> m Bool
+getDisabled self = liftDOM ((self ^. js "disabled") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionElement.form Mozilla HTMLOptionElement.form documentation> 
+getForm ::
+        (MonadDOM m) => HTMLOptionElement -> m (Maybe HTMLFormElement)
+getForm self = liftDOM ((self ^. js "form") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionElement.label Mozilla HTMLOptionElement.label documentation> 
+setLabel ::
+         (MonadDOM m, ToJSString val) => HTMLOptionElement -> val -> m ()
+setLabel self val = liftDOM (self ^. jss "label" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionElement.label Mozilla HTMLOptionElement.label documentation> 
+getLabel ::
+         (MonadDOM m, FromJSString result) => HTMLOptionElement -> m result
+getLabel self
+  = liftDOM ((self ^. js "label") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionElement.defaultSelected Mozilla HTMLOptionElement.defaultSelected documentation> 
+setDefaultSelected ::
+                   (MonadDOM m) => HTMLOptionElement -> Bool -> m ()
+setDefaultSelected self val
+  = liftDOM (self ^. jss "defaultSelected" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionElement.defaultSelected Mozilla HTMLOptionElement.defaultSelected documentation> 
+getDefaultSelected :: (MonadDOM m) => HTMLOptionElement -> m Bool
+getDefaultSelected self
+  = liftDOM ((self ^. js "defaultSelected") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionElement.selected Mozilla HTMLOptionElement.selected documentation> 
+setSelected :: (MonadDOM m) => HTMLOptionElement -> Bool -> m ()
+setSelected self val
+  = liftDOM (self ^. jss "selected" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionElement.selected Mozilla HTMLOptionElement.selected documentation> 
+getSelected :: (MonadDOM m) => HTMLOptionElement -> m Bool
+getSelected self = liftDOM ((self ^. js "selected") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionElement.value Mozilla HTMLOptionElement.value documentation> 
+setValue ::
+         (MonadDOM m, ToJSString val) => HTMLOptionElement -> val -> m ()
+setValue self val = liftDOM (self ^. jss "value" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionElement.value Mozilla HTMLOptionElement.value documentation> 
+getValue ::
+         (MonadDOM m, FromJSString result) => HTMLOptionElement -> m result
+getValue self
+  = liftDOM ((self ^. js "value") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionElement.text Mozilla HTMLOptionElement.text documentation> 
+setText ::
+        (MonadDOM m, ToJSString val) => HTMLOptionElement -> val -> m ()
+setText self val = liftDOM (self ^. jss "text" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionElement.text Mozilla HTMLOptionElement.text documentation> 
+getText ::
+        (MonadDOM m, FromJSString result) => HTMLOptionElement -> m result
+getText self = liftDOM ((self ^. js "text") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionElement.index Mozilla HTMLOptionElement.index documentation> 
+getIndex :: (MonadDOM m) => HTMLOptionElement -> m Int
+getIndex self
+  = liftDOM (round <$> ((self ^. js "index") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HTMLOptionsCollection.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLOptionsCollection.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLOptionsCollection.hs
@@ -0,0 +1,66 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HTMLOptionsCollection
+       (namedItem, addBefore, add, remove, setSelectedIndex,
+        getSelectedIndex, setLength, getLength, HTMLOptionsCollection,
+        castToHTMLOptionsCollection, gTypeHTMLOptionsCollection)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionsCollection.namedItem Mozilla HTMLOptionsCollection.namedItem documentation> 
+namedItem ::
+          (MonadDOM m, ToJSString name) =>
+            HTMLOptionsCollection -> name -> m (Maybe Node)
+namedItem self name
+  = liftDOM ((self ^. jsf "namedItem" [toJSVal name]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionsCollection.add Mozilla HTMLOptionsCollection.add documentation> 
+addBefore ::
+          (MonadDOM m, IsHTMLElement element, IsHTMLElement before) =>
+            HTMLOptionsCollection -> Maybe element -> Maybe before -> m ()
+addBefore self element before
+  = liftDOM
+      (void (self ^. jsf "add" [toJSVal element, toJSVal before]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionsCollection.add Mozilla HTMLOptionsCollection.add documentation> 
+add ::
+    (MonadDOM m, IsHTMLElement element) =>
+      HTMLOptionsCollection -> Maybe element -> Int -> m ()
+add self element index
+  = liftDOM
+      (void (self ^. jsf "add" [toJSVal element, toJSVal index]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionsCollection.remove Mozilla HTMLOptionsCollection.remove documentation> 
+remove :: (MonadDOM m) => HTMLOptionsCollection -> Word -> m ()
+remove self index
+  = liftDOM (void (self ^. jsf "remove" [toJSVal index]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionsCollection.selectedIndex Mozilla HTMLOptionsCollection.selectedIndex documentation> 
+setSelectedIndex ::
+                 (MonadDOM m) => HTMLOptionsCollection -> Int -> m ()
+setSelectedIndex self val
+  = liftDOM (self ^. jss "selectedIndex" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionsCollection.selectedIndex Mozilla HTMLOptionsCollection.selectedIndex documentation> 
+getSelectedIndex :: (MonadDOM m) => HTMLOptionsCollection -> m Int
+getSelectedIndex self
+  = liftDOM
+      (round <$> ((self ^. js "selectedIndex") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionsCollection.length Mozilla HTMLOptionsCollection.length documentation> 
+setLength :: (MonadDOM m) => HTMLOptionsCollection -> Word -> m ()
+setLength self val = liftDOM (self ^. jss "length" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionsCollection.length Mozilla HTMLOptionsCollection.length documentation> 
+getLength :: (MonadDOM m) => HTMLOptionsCollection -> m Word
+getLength self
+  = liftDOM (round <$> ((self ^. js "length") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HTMLOutputElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLOutputElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLOutputElement.hs
@@ -0,0 +1,104 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HTMLOutputElement
+       (checkValidity, setCustomValidity, getHtmlFor, getForm, setName,
+        getName, getType, setDefaultValue, getDefaultValue, setValue,
+        getValue, getWillValidate, getValidity, getValidationMessage,
+        getLabels, HTMLOutputElement, castToHTMLOutputElement,
+        gTypeHTMLOutputElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.checkValidity Mozilla HTMLOutputElement.checkValidity documentation> 
+checkValidity :: (MonadDOM m) => HTMLOutputElement -> m Bool
+checkValidity self
+  = liftDOM ((self ^. js "checkValidity") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.setCustomValidity Mozilla HTMLOutputElement.setCustomValidity documentation> 
+setCustomValidity ::
+                  (MonadDOM m, ToJSString error) =>
+                    HTMLOutputElement -> Maybe error -> m ()
+setCustomValidity self error
+  = liftDOM (void (self ^. jsf "setCustomValidity" [toJSVal error]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.htmlFor Mozilla HTMLOutputElement.htmlFor documentation> 
+getHtmlFor ::
+           (MonadDOM m) => HTMLOutputElement -> m (Maybe DOMSettableTokenList)
+getHtmlFor self = liftDOM ((self ^. js "htmlFor") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.form Mozilla HTMLOutputElement.form documentation> 
+getForm ::
+        (MonadDOM m) => HTMLOutputElement -> m (Maybe HTMLFormElement)
+getForm self = liftDOM ((self ^. js "form") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.name Mozilla HTMLOutputElement.name documentation> 
+setName ::
+        (MonadDOM m, ToJSString val) => HTMLOutputElement -> val -> m ()
+setName self val = liftDOM (self ^. jss "name" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.name Mozilla HTMLOutputElement.name documentation> 
+getName ::
+        (MonadDOM m, FromJSString result) => HTMLOutputElement -> m result
+getName self = liftDOM ((self ^. js "name") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.type Mozilla HTMLOutputElement.type documentation> 
+getType ::
+        (MonadDOM m, FromJSString result) => HTMLOutputElement -> m result
+getType self = liftDOM ((self ^. js "type") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.defaultValue Mozilla HTMLOutputElement.defaultValue documentation> 
+setDefaultValue ::
+                (MonadDOM m, ToJSString val) =>
+                  HTMLOutputElement -> Maybe val -> m ()
+setDefaultValue self val
+  = liftDOM (self ^. jss "defaultValue" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.defaultValue Mozilla HTMLOutputElement.defaultValue documentation> 
+getDefaultValue ::
+                (MonadDOM m, FromJSString result) =>
+                  HTMLOutputElement -> m (Maybe result)
+getDefaultValue self
+  = liftDOM ((self ^. js "defaultValue") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.value Mozilla HTMLOutputElement.value documentation> 
+setValue ::
+         (MonadDOM m, ToJSString val) =>
+           HTMLOutputElement -> Maybe val -> m ()
+setValue self val = liftDOM (self ^. jss "value" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.value Mozilla HTMLOutputElement.value documentation> 
+getValue ::
+         (MonadDOM m, FromJSString result) =>
+           HTMLOutputElement -> m (Maybe result)
+getValue self
+  = liftDOM ((self ^. js "value") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.willValidate Mozilla HTMLOutputElement.willValidate documentation> 
+getWillValidate :: (MonadDOM m) => HTMLOutputElement -> m Bool
+getWillValidate self
+  = liftDOM ((self ^. js "willValidate") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.validity Mozilla HTMLOutputElement.validity documentation> 
+getValidity ::
+            (MonadDOM m) => HTMLOutputElement -> m (Maybe ValidityState)
+getValidity self = liftDOM ((self ^. js "validity") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.validationMessage Mozilla HTMLOutputElement.validationMessage documentation> 
+getValidationMessage ::
+                     (MonadDOM m, FromJSString result) => HTMLOutputElement -> m result
+getValidationMessage self
+  = liftDOM ((self ^. js "validationMessage") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.labels Mozilla HTMLOutputElement.labels documentation> 
+getLabels ::
+          (MonadDOM m) => HTMLOutputElement -> m (Maybe NodeList)
+getLabels self = liftDOM ((self ^. js "labels") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HTMLParagraphElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLParagraphElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLParagraphElement.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HTMLParagraphElement
+       (setAlign, getAlign, HTMLParagraphElement,
+        castToHTMLParagraphElement, gTypeHTMLParagraphElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLParagraphElement.align Mozilla HTMLParagraphElement.align documentation> 
+setAlign ::
+         (MonadDOM m, ToJSString val) => HTMLParagraphElement -> val -> m ()
+setAlign self val = liftDOM (self ^. jss "align" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLParagraphElement.align Mozilla HTMLParagraphElement.align documentation> 
+getAlign ::
+         (MonadDOM m, FromJSString result) =>
+           HTMLParagraphElement -> m result
+getAlign self
+  = liftDOM ((self ^. js "align") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HTMLParamElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLParamElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLParamElement.hs
@@ -0,0 +1,60 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HTMLParamElement
+       (setName, getName, setType, getType, setValue, getValue,
+        setValueType, getValueType, HTMLParamElement,
+        castToHTMLParamElement, gTypeHTMLParamElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLParamElement.name Mozilla HTMLParamElement.name documentation> 
+setName ::
+        (MonadDOM m, ToJSString val) => HTMLParamElement -> val -> m ()
+setName self val = liftDOM (self ^. jss "name" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLParamElement.name Mozilla HTMLParamElement.name documentation> 
+getName ::
+        (MonadDOM m, FromJSString result) => HTMLParamElement -> m result
+getName self = liftDOM ((self ^. js "name") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLParamElement.type Mozilla HTMLParamElement.type documentation> 
+setType ::
+        (MonadDOM m, ToJSString val) => HTMLParamElement -> val -> m ()
+setType self val = liftDOM (self ^. jss "type" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLParamElement.type Mozilla HTMLParamElement.type documentation> 
+getType ::
+        (MonadDOM m, FromJSString result) => HTMLParamElement -> m result
+getType self = liftDOM ((self ^. js "type") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLParamElement.value Mozilla HTMLParamElement.value documentation> 
+setValue ::
+         (MonadDOM m, ToJSString val) => HTMLParamElement -> val -> m ()
+setValue self val = liftDOM (self ^. jss "value" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLParamElement.value Mozilla HTMLParamElement.value documentation> 
+getValue ::
+         (MonadDOM m, FromJSString result) => HTMLParamElement -> m result
+getValue self
+  = liftDOM ((self ^. js "value") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLParamElement.valueType Mozilla HTMLParamElement.valueType documentation> 
+setValueType ::
+             (MonadDOM m, ToJSString val) => HTMLParamElement -> val -> m ()
+setValueType self val
+  = liftDOM (self ^. jss "valueType" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLParamElement.valueType Mozilla HTMLParamElement.valueType documentation> 
+getValueType ::
+             (MonadDOM m, FromJSString result) => HTMLParamElement -> m result
+getValueType self
+  = liftDOM ((self ^. js "valueType") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HTMLPreElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLPreElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLPreElement.hs
@@ -0,0 +1,33 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HTMLPreElement
+       (setWidth, getWidth, setWrap, getWrap, HTMLPreElement,
+        castToHTMLPreElement, gTypeHTMLPreElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLPreElement.width Mozilla HTMLPreElement.width documentation> 
+setWidth :: (MonadDOM m) => HTMLPreElement -> Int -> m ()
+setWidth self val = liftDOM (self ^. jss "width" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLPreElement.width Mozilla HTMLPreElement.width documentation> 
+getWidth :: (MonadDOM m) => HTMLPreElement -> m Int
+getWidth self
+  = liftDOM (round <$> ((self ^. js "width") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLPreElement.wrap Mozilla HTMLPreElement.wrap documentation> 
+setWrap :: (MonadDOM m) => HTMLPreElement -> Bool -> m ()
+setWrap self val = liftDOM (self ^. jss "wrap" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLPreElement.wrap Mozilla HTMLPreElement.wrap documentation> 
+getWrap :: (MonadDOM m) => HTMLPreElement -> m Bool
+getWrap self = liftDOM ((self ^. js "wrap") >>= valToBool)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HTMLProgressElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLProgressElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLProgressElement.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HTMLProgressElement
+       (setValue, getValue, setMax, getMax, getPosition, getLabels,
+        HTMLProgressElement, castToHTMLProgressElement,
+        gTypeHTMLProgressElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLProgressElement.value Mozilla HTMLProgressElement.value documentation> 
+setValue :: (MonadDOM m) => HTMLProgressElement -> Double -> m ()
+setValue self val = liftDOM (self ^. jss "value" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLProgressElement.value Mozilla HTMLProgressElement.value documentation> 
+getValue :: (MonadDOM m) => HTMLProgressElement -> m Double
+getValue self = liftDOM ((self ^. js "value") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLProgressElement.max Mozilla HTMLProgressElement.max documentation> 
+setMax :: (MonadDOM m) => HTMLProgressElement -> Double -> m ()
+setMax self val = liftDOM (self ^. jss "max" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLProgressElement.max Mozilla HTMLProgressElement.max documentation> 
+getMax :: (MonadDOM m) => HTMLProgressElement -> m Double
+getMax self = liftDOM ((self ^. js "max") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLProgressElement.position Mozilla HTMLProgressElement.position documentation> 
+getPosition :: (MonadDOM m) => HTMLProgressElement -> m Double
+getPosition self
+  = liftDOM ((self ^. js "position") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLProgressElement.labels Mozilla HTMLProgressElement.labels documentation> 
+getLabels ::
+          (MonadDOM m) => HTMLProgressElement -> m (Maybe NodeList)
+getLabels self = liftDOM ((self ^. js "labels") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HTMLQuoteElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLQuoteElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLQuoteElement.hs
@@ -0,0 +1,26 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HTMLQuoteElement
+       (setCite, getCite, HTMLQuoteElement, castToHTMLQuoteElement,
+        gTypeHTMLQuoteElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLQuoteElement.cite Mozilla HTMLQuoteElement.cite documentation> 
+setCite ::
+        (MonadDOM m, ToJSString val) => HTMLQuoteElement -> val -> m ()
+setCite self val = liftDOM (self ^. jss "cite" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLQuoteElement.cite Mozilla HTMLQuoteElement.cite documentation> 
+getCite ::
+        (MonadDOM m, FromJSString result) => HTMLQuoteElement -> m result
+getCite self = liftDOM ((self ^. js "cite") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HTMLScriptElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLScriptElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLScriptElement.hs
@@ -0,0 +1,123 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HTMLScriptElement
+       (setText, getText, setHtmlFor, getHtmlFor, setEvent, getEvent,
+        setCharset, getCharset, setAsync, getAsync, setDefer, getDefer,
+        setSrc, getSrc, setType, getType, setCrossOrigin, getCrossOrigin,
+        setNonce, getNonce, HTMLScriptElement, castToHTMLScriptElement,
+        gTypeHTMLScriptElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.text Mozilla HTMLScriptElement.text documentation> 
+setText ::
+        (MonadDOM m, ToJSString val) =>
+          HTMLScriptElement -> Maybe val -> m ()
+setText self val = liftDOM (self ^. jss "text" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.text Mozilla HTMLScriptElement.text documentation> 
+getText ::
+        (MonadDOM m, FromJSString result) =>
+          HTMLScriptElement -> m (Maybe result)
+getText self = liftDOM ((self ^. js "text") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.htmlFor Mozilla HTMLScriptElement.htmlFor documentation> 
+setHtmlFor ::
+           (MonadDOM m, ToJSString val) => HTMLScriptElement -> val -> m ()
+setHtmlFor self val = liftDOM (self ^. jss "htmlFor" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.htmlFor Mozilla HTMLScriptElement.htmlFor documentation> 
+getHtmlFor ::
+           (MonadDOM m, FromJSString result) => HTMLScriptElement -> m result
+getHtmlFor self
+  = liftDOM ((self ^. js "htmlFor") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.event Mozilla HTMLScriptElement.event documentation> 
+setEvent ::
+         (MonadDOM m, ToJSString val) => HTMLScriptElement -> val -> m ()
+setEvent self val = liftDOM (self ^. jss "event" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.event Mozilla HTMLScriptElement.event documentation> 
+getEvent ::
+         (MonadDOM m, FromJSString result) => HTMLScriptElement -> m result
+getEvent self
+  = liftDOM ((self ^. js "event") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.charset Mozilla HTMLScriptElement.charset documentation> 
+setCharset ::
+           (MonadDOM m, ToJSString val) => HTMLScriptElement -> val -> m ()
+setCharset self val = liftDOM (self ^. jss "charset" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.charset Mozilla HTMLScriptElement.charset documentation> 
+getCharset ::
+           (MonadDOM m, FromJSString result) => HTMLScriptElement -> m result
+getCharset self
+  = liftDOM ((self ^. js "charset") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.async Mozilla HTMLScriptElement.async documentation> 
+setAsync :: (MonadDOM m) => HTMLScriptElement -> Bool -> m ()
+setAsync self val = liftDOM (self ^. jss "async" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.async Mozilla HTMLScriptElement.async documentation> 
+getAsync :: (MonadDOM m) => HTMLScriptElement -> m Bool
+getAsync self = liftDOM ((self ^. js "async") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.defer Mozilla HTMLScriptElement.defer documentation> 
+setDefer :: (MonadDOM m) => HTMLScriptElement -> Bool -> m ()
+setDefer self val = liftDOM (self ^. jss "defer" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.defer Mozilla HTMLScriptElement.defer documentation> 
+getDefer :: (MonadDOM m) => HTMLScriptElement -> m Bool
+getDefer self = liftDOM ((self ^. js "defer") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.src Mozilla HTMLScriptElement.src documentation> 
+setSrc ::
+       (MonadDOM m, ToJSString val) => HTMLScriptElement -> val -> m ()
+setSrc self val = liftDOM (self ^. jss "src" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.src Mozilla HTMLScriptElement.src documentation> 
+getSrc ::
+       (MonadDOM m, FromJSString result) => HTMLScriptElement -> m result
+getSrc self = liftDOM ((self ^. js "src") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.type Mozilla HTMLScriptElement.type documentation> 
+setType ::
+        (MonadDOM m, ToJSString val) => HTMLScriptElement -> val -> m ()
+setType self val = liftDOM (self ^. jss "type" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.type Mozilla HTMLScriptElement.type documentation> 
+getType ::
+        (MonadDOM m, FromJSString result) => HTMLScriptElement -> m result
+getType self = liftDOM ((self ^. js "type") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.crossOrigin Mozilla HTMLScriptElement.crossOrigin documentation> 
+setCrossOrigin ::
+               (MonadDOM m, ToJSString val) => HTMLScriptElement -> val -> m ()
+setCrossOrigin self val
+  = liftDOM (self ^. jss "crossOrigin" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.crossOrigin Mozilla HTMLScriptElement.crossOrigin documentation> 
+getCrossOrigin ::
+               (MonadDOM m, FromJSString result) => HTMLScriptElement -> m result
+getCrossOrigin self
+  = liftDOM ((self ^. js "crossOrigin") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.nonce Mozilla HTMLScriptElement.nonce documentation> 
+setNonce ::
+         (MonadDOM m, ToJSString val) => HTMLScriptElement -> val -> m ()
+setNonce self val = liftDOM (self ^. jss "nonce" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.nonce Mozilla HTMLScriptElement.nonce documentation> 
+getNonce ::
+         (MonadDOM m, FromJSString result) => HTMLScriptElement -> m result
+getNonce self
+  = liftDOM ((self ^. js "nonce") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HTMLSelectElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLSelectElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLSelectElement.hs
@@ -0,0 +1,199 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HTMLSelectElement
+       (item, namedItem, addBefore, add, remove, checkValidity,
+        setCustomValidity, setAutofocus, getAutofocus, setDisabled,
+        getDisabled, getForm, setMultiple, getMultiple, setName, getName,
+        setRequired, getRequired, setSize, getSize, getType, getOptions,
+        setLength, getLength, getSelectedOptions, setSelectedIndex,
+        getSelectedIndex, setValue, getValue, getWillValidate, getValidity,
+        getValidationMessage, getLabels, HTMLSelectElement,
+        castToHTMLSelectElement, gTypeHTMLSelectElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.item Mozilla HTMLSelectElement.item documentation> 
+item :: (MonadDOM m) => HTMLSelectElement -> Word -> m (Maybe Node)
+item self index
+  = liftDOM ((self ^. jsf "item" [toJSVal index]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.namedItem Mozilla HTMLSelectElement.namedItem documentation> 
+namedItem ::
+          (MonadDOM m, ToJSString name) =>
+            HTMLSelectElement -> name -> m (Maybe Node)
+namedItem self name
+  = liftDOM ((self ^. jsf "namedItem" [toJSVal name]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.add Mozilla HTMLSelectElement.add documentation> 
+addBefore ::
+          (MonadDOM m, IsHTMLElement element, IsHTMLElement before) =>
+            HTMLSelectElement -> Maybe element -> Maybe before -> m ()
+addBefore self element before
+  = liftDOM
+      (void (self ^. jsf "add" [toJSVal element, toJSVal before]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.add Mozilla HTMLSelectElement.add documentation> 
+add ::
+    (MonadDOM m, IsHTMLElement element) =>
+      HTMLSelectElement -> Maybe element -> Int -> m ()
+add self element index
+  = liftDOM
+      (void (self ^. jsf "add" [toJSVal element, toJSVal index]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.remove Mozilla HTMLSelectElement.remove documentation> 
+remove :: (MonadDOM m) => HTMLSelectElement -> m ()
+remove self = liftDOM (void (self ^. js "remove"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.checkValidity Mozilla HTMLSelectElement.checkValidity documentation> 
+checkValidity :: (MonadDOM m) => HTMLSelectElement -> m Bool
+checkValidity self
+  = liftDOM ((self ^. js "checkValidity") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.setCustomValidity Mozilla HTMLSelectElement.setCustomValidity documentation> 
+setCustomValidity ::
+                  (MonadDOM m, ToJSString error) =>
+                    HTMLSelectElement -> Maybe error -> m ()
+setCustomValidity self error
+  = liftDOM (void (self ^. jsf "setCustomValidity" [toJSVal error]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.autofocus Mozilla HTMLSelectElement.autofocus documentation> 
+setAutofocus :: (MonadDOM m) => HTMLSelectElement -> Bool -> m ()
+setAutofocus self val
+  = liftDOM (self ^. jss "autofocus" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.autofocus Mozilla HTMLSelectElement.autofocus documentation> 
+getAutofocus :: (MonadDOM m) => HTMLSelectElement -> m Bool
+getAutofocus self
+  = liftDOM ((self ^. js "autofocus") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.disabled Mozilla HTMLSelectElement.disabled documentation> 
+setDisabled :: (MonadDOM m) => HTMLSelectElement -> Bool -> m ()
+setDisabled self val
+  = liftDOM (self ^. jss "disabled" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.disabled Mozilla HTMLSelectElement.disabled documentation> 
+getDisabled :: (MonadDOM m) => HTMLSelectElement -> m Bool
+getDisabled self = liftDOM ((self ^. js "disabled") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.form Mozilla HTMLSelectElement.form documentation> 
+getForm ::
+        (MonadDOM m) => HTMLSelectElement -> m (Maybe HTMLFormElement)
+getForm self = liftDOM ((self ^. js "form") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.multiple Mozilla HTMLSelectElement.multiple documentation> 
+setMultiple :: (MonadDOM m) => HTMLSelectElement -> Bool -> m ()
+setMultiple self val
+  = liftDOM (self ^. jss "multiple" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.multiple Mozilla HTMLSelectElement.multiple documentation> 
+getMultiple :: (MonadDOM m) => HTMLSelectElement -> m Bool
+getMultiple self = liftDOM ((self ^. js "multiple") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.name Mozilla HTMLSelectElement.name documentation> 
+setName ::
+        (MonadDOM m, ToJSString val) => HTMLSelectElement -> val -> m ()
+setName self val = liftDOM (self ^. jss "name" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.name Mozilla HTMLSelectElement.name documentation> 
+getName ::
+        (MonadDOM m, FromJSString result) => HTMLSelectElement -> m result
+getName self = liftDOM ((self ^. js "name") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.required Mozilla HTMLSelectElement.required documentation> 
+setRequired :: (MonadDOM m) => HTMLSelectElement -> Bool -> m ()
+setRequired self val
+  = liftDOM (self ^. jss "required" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.required Mozilla HTMLSelectElement.required documentation> 
+getRequired :: (MonadDOM m) => HTMLSelectElement -> m Bool
+getRequired self = liftDOM ((self ^. js "required") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.size Mozilla HTMLSelectElement.size documentation> 
+setSize :: (MonadDOM m) => HTMLSelectElement -> Int -> m ()
+setSize self val = liftDOM (self ^. jss "size" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.size Mozilla HTMLSelectElement.size documentation> 
+getSize :: (MonadDOM m) => HTMLSelectElement -> m Int
+getSize self
+  = liftDOM (round <$> ((self ^. js "size") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.type Mozilla HTMLSelectElement.type documentation> 
+getType ::
+        (MonadDOM m, FromJSString result) => HTMLSelectElement -> m result
+getType self = liftDOM ((self ^. js "type") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.options Mozilla HTMLSelectElement.options documentation> 
+getOptions ::
+           (MonadDOM m) =>
+             HTMLSelectElement -> m (Maybe HTMLOptionsCollection)
+getOptions self = liftDOM ((self ^. js "options") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.length Mozilla HTMLSelectElement.length documentation> 
+setLength :: (MonadDOM m) => HTMLSelectElement -> Word -> m ()
+setLength self val = liftDOM (self ^. jss "length" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.length Mozilla HTMLSelectElement.length documentation> 
+getLength :: (MonadDOM m) => HTMLSelectElement -> m Word
+getLength self
+  = liftDOM (round <$> ((self ^. js "length") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.selectedOptions Mozilla HTMLSelectElement.selectedOptions documentation> 
+getSelectedOptions ::
+                   (MonadDOM m) => HTMLSelectElement -> m (Maybe HTMLCollection)
+getSelectedOptions self
+  = liftDOM ((self ^. js "selectedOptions") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.selectedIndex Mozilla HTMLSelectElement.selectedIndex documentation> 
+setSelectedIndex ::
+                 (MonadDOM m) => HTMLSelectElement -> Int -> m ()
+setSelectedIndex self val
+  = liftDOM (self ^. jss "selectedIndex" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.selectedIndex Mozilla HTMLSelectElement.selectedIndex documentation> 
+getSelectedIndex :: (MonadDOM m) => HTMLSelectElement -> m Int
+getSelectedIndex self
+  = liftDOM
+      (round <$> ((self ^. js "selectedIndex") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.value Mozilla HTMLSelectElement.value documentation> 
+setValue ::
+         (MonadDOM m, ToJSString val) =>
+           HTMLSelectElement -> Maybe val -> m ()
+setValue self val = liftDOM (self ^. jss "value" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.value Mozilla HTMLSelectElement.value documentation> 
+getValue ::
+         (MonadDOM m, FromJSString result) =>
+           HTMLSelectElement -> m (Maybe result)
+getValue self
+  = liftDOM ((self ^. js "value") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.willValidate Mozilla HTMLSelectElement.willValidate documentation> 
+getWillValidate :: (MonadDOM m) => HTMLSelectElement -> m Bool
+getWillValidate self
+  = liftDOM ((self ^. js "willValidate") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.validity Mozilla HTMLSelectElement.validity documentation> 
+getValidity ::
+            (MonadDOM m) => HTMLSelectElement -> m (Maybe ValidityState)
+getValidity self = liftDOM ((self ^. js "validity") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.validationMessage Mozilla HTMLSelectElement.validationMessage documentation> 
+getValidationMessage ::
+                     (MonadDOM m, FromJSString result) => HTMLSelectElement -> m result
+getValidationMessage self
+  = liftDOM ((self ^. js "validationMessage") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.labels Mozilla HTMLSelectElement.labels documentation> 
+getLabels ::
+          (MonadDOM m) => HTMLSelectElement -> m (Maybe NodeList)
+getLabels self = liftDOM ((self ^. js "labels") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HTMLSourceElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLSourceElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLSourceElement.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HTMLSourceElement
+       (setSrc, getSrc, setType, getType, setMedia, getMedia,
+        HTMLSourceElement, castToHTMLSourceElement, gTypeHTMLSourceElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSourceElement.src Mozilla HTMLSourceElement.src documentation> 
+setSrc ::
+       (MonadDOM m, ToJSString val) => HTMLSourceElement -> val -> m ()
+setSrc self val = liftDOM (self ^. jss "src" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSourceElement.src Mozilla HTMLSourceElement.src documentation> 
+getSrc ::
+       (MonadDOM m, FromJSString result) => HTMLSourceElement -> m result
+getSrc self = liftDOM ((self ^. js "src") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSourceElement.type Mozilla HTMLSourceElement.type documentation> 
+setType ::
+        (MonadDOM m, ToJSString val) => HTMLSourceElement -> val -> m ()
+setType self val = liftDOM (self ^. jss "type" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSourceElement.type Mozilla HTMLSourceElement.type documentation> 
+getType ::
+        (MonadDOM m, FromJSString result) => HTMLSourceElement -> m result
+getType self = liftDOM ((self ^. js "type") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSourceElement.media Mozilla HTMLSourceElement.media documentation> 
+setMedia ::
+         (MonadDOM m, ToJSString val) => HTMLSourceElement -> val -> m ()
+setMedia self val = liftDOM (self ^. jss "media" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSourceElement.media Mozilla HTMLSourceElement.media documentation> 
+getMedia ::
+         (MonadDOM m, FromJSString result) => HTMLSourceElement -> m result
+getMedia self
+  = liftDOM ((self ^. js "media") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HTMLStyleElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLStyleElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLStyleElement.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HTMLStyleElement
+       (setDisabled, getDisabled, setMedia, getMedia, setType, getType,
+        getSheet, HTMLStyleElement, castToHTMLStyleElement,
+        gTypeHTMLStyleElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLStyleElement.disabled Mozilla HTMLStyleElement.disabled documentation> 
+setDisabled :: (MonadDOM m) => HTMLStyleElement -> Bool -> m ()
+setDisabled self val
+  = liftDOM (self ^. jss "disabled" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLStyleElement.disabled Mozilla HTMLStyleElement.disabled documentation> 
+getDisabled :: (MonadDOM m) => HTMLStyleElement -> m Bool
+getDisabled self = liftDOM ((self ^. js "disabled") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLStyleElement.media Mozilla HTMLStyleElement.media documentation> 
+setMedia ::
+         (MonadDOM m, ToJSString val) => HTMLStyleElement -> val -> m ()
+setMedia self val = liftDOM (self ^. jss "media" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLStyleElement.media Mozilla HTMLStyleElement.media documentation> 
+getMedia ::
+         (MonadDOM m, FromJSString result) => HTMLStyleElement -> m result
+getMedia self
+  = liftDOM ((self ^. js "media") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLStyleElement.type Mozilla HTMLStyleElement.type documentation> 
+setType ::
+        (MonadDOM m, ToJSString val) => HTMLStyleElement -> val -> m ()
+setType self val = liftDOM (self ^. jss "type" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLStyleElement.type Mozilla HTMLStyleElement.type documentation> 
+getType ::
+        (MonadDOM m, FromJSString result) => HTMLStyleElement -> m result
+getType self = liftDOM ((self ^. js "type") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLStyleElement.sheet Mozilla HTMLStyleElement.sheet documentation> 
+getSheet ::
+         (MonadDOM m) => HTMLStyleElement -> m (Maybe StyleSheet)
+getSheet self = liftDOM ((self ^. js "sheet") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HTMLTableCaptionElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLTableCaptionElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLTableCaptionElement.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HTMLTableCaptionElement
+       (setAlign, getAlign, HTMLTableCaptionElement,
+        castToHTMLTableCaptionElement, gTypeHTMLTableCaptionElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCaptionElement.align Mozilla HTMLTableCaptionElement.align documentation> 
+setAlign ::
+         (MonadDOM m, ToJSString val) =>
+           HTMLTableCaptionElement -> val -> m ()
+setAlign self val = liftDOM (self ^. jss "align" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCaptionElement.align Mozilla HTMLTableCaptionElement.align documentation> 
+getAlign ::
+         (MonadDOM m, FromJSString result) =>
+           HTMLTableCaptionElement -> m result
+getAlign self
+  = liftDOM ((self ^. js "align") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HTMLTableCellElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLTableCellElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLTableCellElement.hs
@@ -0,0 +1,181 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HTMLTableCellElement
+       (getCellIndex, setAbbr, getAbbr, setAlign, getAlign, setAxis,
+        getAxis, setBgColor, getBgColor, setCh, getCh, setChOff, getChOff,
+        setColSpan, getColSpan, setHeaders, getHeaders, setHeight,
+        getHeight, setNoWrap, getNoWrap, setRowSpan, getRowSpan, setScope,
+        getScope, setVAlign, getVAlign, setWidth, getWidth,
+        HTMLTableCellElement, castToHTMLTableCellElement,
+        gTypeHTMLTableCellElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.cellIndex Mozilla HTMLTableCellElement.cellIndex documentation> 
+getCellIndex :: (MonadDOM m) => HTMLTableCellElement -> m Int
+getCellIndex self
+  = liftDOM (round <$> ((self ^. js "cellIndex") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.abbr Mozilla HTMLTableCellElement.abbr documentation> 
+setAbbr ::
+        (MonadDOM m, ToJSString val) => HTMLTableCellElement -> val -> m ()
+setAbbr self val = liftDOM (self ^. jss "abbr" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.abbr Mozilla HTMLTableCellElement.abbr documentation> 
+getAbbr ::
+        (MonadDOM m, FromJSString result) =>
+          HTMLTableCellElement -> m result
+getAbbr self = liftDOM ((self ^. js "abbr") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.align Mozilla HTMLTableCellElement.align documentation> 
+setAlign ::
+         (MonadDOM m, ToJSString val) => HTMLTableCellElement -> val -> m ()
+setAlign self val = liftDOM (self ^. jss "align" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.align Mozilla HTMLTableCellElement.align documentation> 
+getAlign ::
+         (MonadDOM m, FromJSString result) =>
+           HTMLTableCellElement -> m result
+getAlign self
+  = liftDOM ((self ^. js "align") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.axis Mozilla HTMLTableCellElement.axis documentation> 
+setAxis ::
+        (MonadDOM m, ToJSString val) => HTMLTableCellElement -> val -> m ()
+setAxis self val = liftDOM (self ^. jss "axis" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.axis Mozilla HTMLTableCellElement.axis documentation> 
+getAxis ::
+        (MonadDOM m, FromJSString result) =>
+          HTMLTableCellElement -> m result
+getAxis self = liftDOM ((self ^. js "axis") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.bgColor Mozilla HTMLTableCellElement.bgColor documentation> 
+setBgColor ::
+           (MonadDOM m, ToJSString val) => HTMLTableCellElement -> val -> m ()
+setBgColor self val = liftDOM (self ^. jss "bgColor" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.bgColor Mozilla HTMLTableCellElement.bgColor documentation> 
+getBgColor ::
+           (MonadDOM m, FromJSString result) =>
+             HTMLTableCellElement -> m result
+getBgColor self
+  = liftDOM ((self ^. js "bgColor") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.ch Mozilla HTMLTableCellElement.ch documentation> 
+setCh ::
+      (MonadDOM m, ToJSString val) => HTMLTableCellElement -> val -> m ()
+setCh self val = liftDOM (self ^. jss "ch" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.ch Mozilla HTMLTableCellElement.ch documentation> 
+getCh ::
+      (MonadDOM m, FromJSString result) =>
+        HTMLTableCellElement -> m result
+getCh self = liftDOM ((self ^. js "ch") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.chOff Mozilla HTMLTableCellElement.chOff documentation> 
+setChOff ::
+         (MonadDOM m, ToJSString val) => HTMLTableCellElement -> val -> m ()
+setChOff self val = liftDOM (self ^. jss "chOff" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.chOff Mozilla HTMLTableCellElement.chOff documentation> 
+getChOff ::
+         (MonadDOM m, FromJSString result) =>
+           HTMLTableCellElement -> m result
+getChOff self
+  = liftDOM ((self ^. js "chOff") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.colSpan Mozilla HTMLTableCellElement.colSpan documentation> 
+setColSpan :: (MonadDOM m) => HTMLTableCellElement -> Int -> m ()
+setColSpan self val = liftDOM (self ^. jss "colSpan" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.colSpan Mozilla HTMLTableCellElement.colSpan documentation> 
+getColSpan :: (MonadDOM m) => HTMLTableCellElement -> m Int
+getColSpan self
+  = liftDOM (round <$> ((self ^. js "colSpan") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.headers Mozilla HTMLTableCellElement.headers documentation> 
+setHeaders ::
+           (MonadDOM m, ToJSString val) => HTMLTableCellElement -> val -> m ()
+setHeaders self val = liftDOM (self ^. jss "headers" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.headers Mozilla HTMLTableCellElement.headers documentation> 
+getHeaders ::
+           (MonadDOM m, FromJSString result) =>
+             HTMLTableCellElement -> m result
+getHeaders self
+  = liftDOM ((self ^. js "headers") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.height Mozilla HTMLTableCellElement.height documentation> 
+setHeight ::
+          (MonadDOM m, ToJSString val) => HTMLTableCellElement -> val -> m ()
+setHeight self val = liftDOM (self ^. jss "height" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.height Mozilla HTMLTableCellElement.height documentation> 
+getHeight ::
+          (MonadDOM m, FromJSString result) =>
+            HTMLTableCellElement -> m result
+getHeight self
+  = liftDOM ((self ^. js "height") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.noWrap Mozilla HTMLTableCellElement.noWrap documentation> 
+setNoWrap :: (MonadDOM m) => HTMLTableCellElement -> Bool -> m ()
+setNoWrap self val = liftDOM (self ^. jss "noWrap" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.noWrap Mozilla HTMLTableCellElement.noWrap documentation> 
+getNoWrap :: (MonadDOM m) => HTMLTableCellElement -> m Bool
+getNoWrap self = liftDOM ((self ^. js "noWrap") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.rowSpan Mozilla HTMLTableCellElement.rowSpan documentation> 
+setRowSpan :: (MonadDOM m) => HTMLTableCellElement -> Int -> m ()
+setRowSpan self val = liftDOM (self ^. jss "rowSpan" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.rowSpan Mozilla HTMLTableCellElement.rowSpan documentation> 
+getRowSpan :: (MonadDOM m) => HTMLTableCellElement -> m Int
+getRowSpan self
+  = liftDOM (round <$> ((self ^. js "rowSpan") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.scope Mozilla HTMLTableCellElement.scope documentation> 
+setScope ::
+         (MonadDOM m, ToJSString val) => HTMLTableCellElement -> val -> m ()
+setScope self val = liftDOM (self ^. jss "scope" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.scope Mozilla HTMLTableCellElement.scope documentation> 
+getScope ::
+         (MonadDOM m, FromJSString result) =>
+           HTMLTableCellElement -> m result
+getScope self
+  = liftDOM ((self ^. js "scope") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.vAlign Mozilla HTMLTableCellElement.vAlign documentation> 
+setVAlign ::
+          (MonadDOM m, ToJSString val) => HTMLTableCellElement -> val -> m ()
+setVAlign self val = liftDOM (self ^. jss "vAlign" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.vAlign Mozilla HTMLTableCellElement.vAlign documentation> 
+getVAlign ::
+          (MonadDOM m, FromJSString result) =>
+            HTMLTableCellElement -> m result
+getVAlign self
+  = liftDOM ((self ^. js "vAlign") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.width Mozilla HTMLTableCellElement.width documentation> 
+setWidth ::
+         (MonadDOM m, ToJSString val) => HTMLTableCellElement -> val -> m ()
+setWidth self val = liftDOM (self ^. jss "width" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.width Mozilla HTMLTableCellElement.width documentation> 
+getWidth ::
+         (MonadDOM m, FromJSString result) =>
+           HTMLTableCellElement -> m result
+getWidth self
+  = liftDOM ((self ^. js "width") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HTMLTableColElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLTableColElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLTableColElement.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HTMLTableColElement
+       (setAlign, getAlign, setCh, getCh, setChOff, getChOff, setSpan,
+        getSpan, setVAlign, getVAlign, setWidth, getWidth,
+        HTMLTableColElement, castToHTMLTableColElement,
+        gTypeHTMLTableColElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableColElement.align Mozilla HTMLTableColElement.align documentation> 
+setAlign ::
+         (MonadDOM m, ToJSString val) => HTMLTableColElement -> val -> m ()
+setAlign self val = liftDOM (self ^. jss "align" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableColElement.align Mozilla HTMLTableColElement.align documentation> 
+getAlign ::
+         (MonadDOM m, FromJSString result) =>
+           HTMLTableColElement -> m result
+getAlign self
+  = liftDOM ((self ^. js "align") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableColElement.ch Mozilla HTMLTableColElement.ch documentation> 
+setCh ::
+      (MonadDOM m, ToJSString val) => HTMLTableColElement -> val -> m ()
+setCh self val = liftDOM (self ^. jss "ch" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableColElement.ch Mozilla HTMLTableColElement.ch documentation> 
+getCh ::
+      (MonadDOM m, FromJSString result) =>
+        HTMLTableColElement -> m result
+getCh self = liftDOM ((self ^. js "ch") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableColElement.chOff Mozilla HTMLTableColElement.chOff documentation> 
+setChOff ::
+         (MonadDOM m, ToJSString val) => HTMLTableColElement -> val -> m ()
+setChOff self val = liftDOM (self ^. jss "chOff" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableColElement.chOff Mozilla HTMLTableColElement.chOff documentation> 
+getChOff ::
+         (MonadDOM m, FromJSString result) =>
+           HTMLTableColElement -> m result
+getChOff self
+  = liftDOM ((self ^. js "chOff") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableColElement.span Mozilla HTMLTableColElement.span documentation> 
+setSpan :: (MonadDOM m) => HTMLTableColElement -> Int -> m ()
+setSpan self val = liftDOM (self ^. jss "span" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableColElement.span Mozilla HTMLTableColElement.span documentation> 
+getSpan :: (MonadDOM m) => HTMLTableColElement -> m Int
+getSpan self
+  = liftDOM (round <$> ((self ^. js "span") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableColElement.vAlign Mozilla HTMLTableColElement.vAlign documentation> 
+setVAlign ::
+          (MonadDOM m, ToJSString val) => HTMLTableColElement -> val -> m ()
+setVAlign self val = liftDOM (self ^. jss "vAlign" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableColElement.vAlign Mozilla HTMLTableColElement.vAlign documentation> 
+getVAlign ::
+          (MonadDOM m, FromJSString result) =>
+            HTMLTableColElement -> m result
+getVAlign self
+  = liftDOM ((self ^. js "vAlign") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableColElement.width Mozilla HTMLTableColElement.width documentation> 
+setWidth ::
+         (MonadDOM m, ToJSString val) => HTMLTableColElement -> val -> m ()
+setWidth self val = liftDOM (self ^. jss "width" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableColElement.width Mozilla HTMLTableColElement.width documentation> 
+getWidth ::
+         (MonadDOM m, FromJSString result) =>
+           HTMLTableColElement -> m result
+getWidth self
+  = liftDOM ((self ^. js "width") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HTMLTableElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLTableElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLTableElement.hs
@@ -0,0 +1,216 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HTMLTableElement
+       (createTHead, deleteTHead, createTFoot, deleteTFoot, createTBody,
+        createCaption, deleteCaption, insertRow, deleteRow, setCaption,
+        getCaption, setTHead, getTHead, setTFoot, getTFoot, getRows,
+        getTBodies, setAlign, getAlign, setBgColor, getBgColor, setBorder,
+        getBorder, setCellPadding, getCellPadding, setCellSpacing,
+        getCellSpacing, setFrame, getFrame, setRules, getRules, setSummary,
+        getSummary, setWidth, getWidth, HTMLTableElement,
+        castToHTMLTableElement, gTypeHTMLTableElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.createTHead Mozilla HTMLTableElement.createTHead documentation> 
+createTHead ::
+            (MonadDOM m) => HTMLTableElement -> m (Maybe HTMLElement)
+createTHead self
+  = liftDOM ((self ^. js "createTHead") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.deleteTHead Mozilla HTMLTableElement.deleteTHead documentation> 
+deleteTHead :: (MonadDOM m) => HTMLTableElement -> m ()
+deleteTHead self = liftDOM (void (self ^. js "deleteTHead"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.createTFoot Mozilla HTMLTableElement.createTFoot documentation> 
+createTFoot ::
+            (MonadDOM m) => HTMLTableElement -> m (Maybe HTMLElement)
+createTFoot self
+  = liftDOM ((self ^. js "createTFoot") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.deleteTFoot Mozilla HTMLTableElement.deleteTFoot documentation> 
+deleteTFoot :: (MonadDOM m) => HTMLTableElement -> m ()
+deleteTFoot self = liftDOM (void (self ^. js "deleteTFoot"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.createTBody Mozilla HTMLTableElement.createTBody documentation> 
+createTBody ::
+            (MonadDOM m) => HTMLTableElement -> m (Maybe HTMLElement)
+createTBody self
+  = liftDOM ((self ^. js "createTBody") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.createCaption Mozilla HTMLTableElement.createCaption documentation> 
+createCaption ::
+              (MonadDOM m) => HTMLTableElement -> m (Maybe HTMLElement)
+createCaption self
+  = liftDOM ((self ^. js "createCaption") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.deleteCaption Mozilla HTMLTableElement.deleteCaption documentation> 
+deleteCaption :: (MonadDOM m) => HTMLTableElement -> m ()
+deleteCaption self = liftDOM (void (self ^. js "deleteCaption"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.insertRow Mozilla HTMLTableElement.insertRow documentation> 
+insertRow ::
+          (MonadDOM m) => HTMLTableElement -> Int -> m (Maybe HTMLElement)
+insertRow self index
+  = liftDOM ((self ^. jsf "insertRow" [toJSVal index]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.deleteRow Mozilla HTMLTableElement.deleteRow documentation> 
+deleteRow :: (MonadDOM m) => HTMLTableElement -> Int -> m ()
+deleteRow self index
+  = liftDOM (void (self ^. jsf "deleteRow" [toJSVal index]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.caption Mozilla HTMLTableElement.caption documentation> 
+setCaption ::
+           (MonadDOM m) =>
+             HTMLTableElement -> Maybe HTMLTableCaptionElement -> m ()
+setCaption self val = liftDOM (self ^. jss "caption" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.caption Mozilla HTMLTableElement.caption documentation> 
+getCaption ::
+           (MonadDOM m) =>
+             HTMLTableElement -> m (Maybe HTMLTableCaptionElement)
+getCaption self = liftDOM ((self ^. js "caption") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.tHead Mozilla HTMLTableElement.tHead documentation> 
+setTHead ::
+         (MonadDOM m) =>
+           HTMLTableElement -> Maybe HTMLTableSectionElement -> m ()
+setTHead self val = liftDOM (self ^. jss "tHead" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.tHead Mozilla HTMLTableElement.tHead documentation> 
+getTHead ::
+         (MonadDOM m) =>
+           HTMLTableElement -> m (Maybe HTMLTableSectionElement)
+getTHead self = liftDOM ((self ^. js "tHead") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.tFoot Mozilla HTMLTableElement.tFoot documentation> 
+setTFoot ::
+         (MonadDOM m) =>
+           HTMLTableElement -> Maybe HTMLTableSectionElement -> m ()
+setTFoot self val = liftDOM (self ^. jss "tFoot" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.tFoot Mozilla HTMLTableElement.tFoot documentation> 
+getTFoot ::
+         (MonadDOM m) =>
+           HTMLTableElement -> m (Maybe HTMLTableSectionElement)
+getTFoot self = liftDOM ((self ^. js "tFoot") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.rows Mozilla HTMLTableElement.rows documentation> 
+getRows ::
+        (MonadDOM m) => HTMLTableElement -> m (Maybe HTMLCollection)
+getRows self = liftDOM ((self ^. js "rows") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.tBodies Mozilla HTMLTableElement.tBodies documentation> 
+getTBodies ::
+           (MonadDOM m) => HTMLTableElement -> m (Maybe HTMLCollection)
+getTBodies self = liftDOM ((self ^. js "tBodies") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.align Mozilla HTMLTableElement.align documentation> 
+setAlign ::
+         (MonadDOM m, ToJSString val) => HTMLTableElement -> val -> m ()
+setAlign self val = liftDOM (self ^. jss "align" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.align Mozilla HTMLTableElement.align documentation> 
+getAlign ::
+         (MonadDOM m, FromJSString result) => HTMLTableElement -> m result
+getAlign self
+  = liftDOM ((self ^. js "align") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.bgColor Mozilla HTMLTableElement.bgColor documentation> 
+setBgColor ::
+           (MonadDOM m, ToJSString val) => HTMLTableElement -> val -> m ()
+setBgColor self val = liftDOM (self ^. jss "bgColor" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.bgColor Mozilla HTMLTableElement.bgColor documentation> 
+getBgColor ::
+           (MonadDOM m, FromJSString result) => HTMLTableElement -> m result
+getBgColor self
+  = liftDOM ((self ^. js "bgColor") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.border Mozilla HTMLTableElement.border documentation> 
+setBorder ::
+          (MonadDOM m, ToJSString val) => HTMLTableElement -> val -> m ()
+setBorder self val = liftDOM (self ^. jss "border" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.border Mozilla HTMLTableElement.border documentation> 
+getBorder ::
+          (MonadDOM m, FromJSString result) => HTMLTableElement -> m result
+getBorder self
+  = liftDOM ((self ^. js "border") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.cellPadding Mozilla HTMLTableElement.cellPadding documentation> 
+setCellPadding ::
+               (MonadDOM m, ToJSString val) => HTMLTableElement -> val -> m ()
+setCellPadding self val
+  = liftDOM (self ^. jss "cellPadding" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.cellPadding Mozilla HTMLTableElement.cellPadding documentation> 
+getCellPadding ::
+               (MonadDOM m, FromJSString result) => HTMLTableElement -> m result
+getCellPadding self
+  = liftDOM ((self ^. js "cellPadding") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.cellSpacing Mozilla HTMLTableElement.cellSpacing documentation> 
+setCellSpacing ::
+               (MonadDOM m, ToJSString val) => HTMLTableElement -> val -> m ()
+setCellSpacing self val
+  = liftDOM (self ^. jss "cellSpacing" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.cellSpacing Mozilla HTMLTableElement.cellSpacing documentation> 
+getCellSpacing ::
+               (MonadDOM m, FromJSString result) => HTMLTableElement -> m result
+getCellSpacing self
+  = liftDOM ((self ^. js "cellSpacing") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.frame Mozilla HTMLTableElement.frame documentation> 
+setFrame ::
+         (MonadDOM m, ToJSString val) => HTMLTableElement -> val -> m ()
+setFrame self val = liftDOM (self ^. jss "frame" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.frame Mozilla HTMLTableElement.frame documentation> 
+getFrame ::
+         (MonadDOM m, FromJSString result) => HTMLTableElement -> m result
+getFrame self
+  = liftDOM ((self ^. js "frame") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.rules Mozilla HTMLTableElement.rules documentation> 
+setRules ::
+         (MonadDOM m, ToJSString val) => HTMLTableElement -> val -> m ()
+setRules self val = liftDOM (self ^. jss "rules" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.rules Mozilla HTMLTableElement.rules documentation> 
+getRules ::
+         (MonadDOM m, FromJSString result) => HTMLTableElement -> m result
+getRules self
+  = liftDOM ((self ^. js "rules") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.summary Mozilla HTMLTableElement.summary documentation> 
+setSummary ::
+           (MonadDOM m, ToJSString val) => HTMLTableElement -> val -> m ()
+setSummary self val = liftDOM (self ^. jss "summary" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.summary Mozilla HTMLTableElement.summary documentation> 
+getSummary ::
+           (MonadDOM m, FromJSString result) => HTMLTableElement -> m result
+getSummary self
+  = liftDOM ((self ^. js "summary") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.width Mozilla HTMLTableElement.width documentation> 
+setWidth ::
+         (MonadDOM m, ToJSString val) => HTMLTableElement -> val -> m ()
+setWidth self val = liftDOM (self ^. jss "width" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.width Mozilla HTMLTableElement.width documentation> 
+getWidth ::
+         (MonadDOM m, FromJSString result) => HTMLTableElement -> m result
+getWidth self
+  = liftDOM ((self ^. js "width") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HTMLTableRowElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLTableRowElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLTableRowElement.hs
@@ -0,0 +1,105 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HTMLTableRowElement
+       (insertCell, deleteCell, getRowIndex, getSectionRowIndex, getCells,
+        setAlign, getAlign, setBgColor, getBgColor, setCh, getCh, setChOff,
+        getChOff, setVAlign, getVAlign, HTMLTableRowElement,
+        castToHTMLTableRowElement, gTypeHTMLTableRowElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.insertCell Mozilla HTMLTableRowElement.insertCell documentation> 
+insertCell ::
+           (MonadDOM m) => HTMLTableRowElement -> Int -> m (Maybe HTMLElement)
+insertCell self index
+  = liftDOM
+      ((self ^. jsf "insertCell" [toJSVal index]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.deleteCell Mozilla HTMLTableRowElement.deleteCell documentation> 
+deleteCell :: (MonadDOM m) => HTMLTableRowElement -> Int -> m ()
+deleteCell self index
+  = liftDOM (void (self ^. jsf "deleteCell" [toJSVal index]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.rowIndex Mozilla HTMLTableRowElement.rowIndex documentation> 
+getRowIndex :: (MonadDOM m) => HTMLTableRowElement -> m Int
+getRowIndex self
+  = liftDOM (round <$> ((self ^. js "rowIndex") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.sectionRowIndex Mozilla HTMLTableRowElement.sectionRowIndex documentation> 
+getSectionRowIndex :: (MonadDOM m) => HTMLTableRowElement -> m Int
+getSectionRowIndex self
+  = liftDOM
+      (round <$> ((self ^. js "sectionRowIndex") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.cells Mozilla HTMLTableRowElement.cells documentation> 
+getCells ::
+         (MonadDOM m) => HTMLTableRowElement -> m (Maybe HTMLCollection)
+getCells self = liftDOM ((self ^. js "cells") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.align Mozilla HTMLTableRowElement.align documentation> 
+setAlign ::
+         (MonadDOM m, ToJSString val) => HTMLTableRowElement -> val -> m ()
+setAlign self val = liftDOM (self ^. jss "align" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.align Mozilla HTMLTableRowElement.align documentation> 
+getAlign ::
+         (MonadDOM m, FromJSString result) =>
+           HTMLTableRowElement -> m result
+getAlign self
+  = liftDOM ((self ^. js "align") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.bgColor Mozilla HTMLTableRowElement.bgColor documentation> 
+setBgColor ::
+           (MonadDOM m, ToJSString val) => HTMLTableRowElement -> val -> m ()
+setBgColor self val = liftDOM (self ^. jss "bgColor" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.bgColor Mozilla HTMLTableRowElement.bgColor documentation> 
+getBgColor ::
+           (MonadDOM m, FromJSString result) =>
+             HTMLTableRowElement -> m result
+getBgColor self
+  = liftDOM ((self ^. js "bgColor") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.ch Mozilla HTMLTableRowElement.ch documentation> 
+setCh ::
+      (MonadDOM m, ToJSString val) => HTMLTableRowElement -> val -> m ()
+setCh self val = liftDOM (self ^. jss "ch" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.ch Mozilla HTMLTableRowElement.ch documentation> 
+getCh ::
+      (MonadDOM m, FromJSString result) =>
+        HTMLTableRowElement -> m result
+getCh self = liftDOM ((self ^. js "ch") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.chOff Mozilla HTMLTableRowElement.chOff documentation> 
+setChOff ::
+         (MonadDOM m, ToJSString val) => HTMLTableRowElement -> val -> m ()
+setChOff self val = liftDOM (self ^. jss "chOff" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.chOff Mozilla HTMLTableRowElement.chOff documentation> 
+getChOff ::
+         (MonadDOM m, FromJSString result) =>
+           HTMLTableRowElement -> m result
+getChOff self
+  = liftDOM ((self ^. js "chOff") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.vAlign Mozilla HTMLTableRowElement.vAlign documentation> 
+setVAlign ::
+          (MonadDOM m, ToJSString val) => HTMLTableRowElement -> val -> m ()
+setVAlign self val = liftDOM (self ^. jss "vAlign" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.vAlign Mozilla HTMLTableRowElement.vAlign documentation> 
+getVAlign ::
+          (MonadDOM m, FromJSString result) =>
+            HTMLTableRowElement -> m result
+getVAlign self
+  = liftDOM ((self ^. js "vAlign") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HTMLTableSectionElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLTableSectionElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLTableSectionElement.hs
@@ -0,0 +1,85 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HTMLTableSectionElement
+       (insertRow, deleteRow, setAlign, getAlign, setCh, getCh, setChOff,
+        getChOff, setVAlign, getVAlign, getRows, HTMLTableSectionElement,
+        castToHTMLTableSectionElement, gTypeHTMLTableSectionElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableSectionElement.insertRow Mozilla HTMLTableSectionElement.insertRow documentation> 
+insertRow ::
+          (MonadDOM m) =>
+            HTMLTableSectionElement -> Int -> m (Maybe HTMLElement)
+insertRow self index
+  = liftDOM ((self ^. jsf "insertRow" [toJSVal index]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableSectionElement.deleteRow Mozilla HTMLTableSectionElement.deleteRow documentation> 
+deleteRow :: (MonadDOM m) => HTMLTableSectionElement -> Int -> m ()
+deleteRow self index
+  = liftDOM (void (self ^. jsf "deleteRow" [toJSVal index]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableSectionElement.align Mozilla HTMLTableSectionElement.align documentation> 
+setAlign ::
+         (MonadDOM m, ToJSString val) =>
+           HTMLTableSectionElement -> val -> m ()
+setAlign self val = liftDOM (self ^. jss "align" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableSectionElement.align Mozilla HTMLTableSectionElement.align documentation> 
+getAlign ::
+         (MonadDOM m, FromJSString result) =>
+           HTMLTableSectionElement -> m result
+getAlign self
+  = liftDOM ((self ^. js "align") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableSectionElement.ch Mozilla HTMLTableSectionElement.ch documentation> 
+setCh ::
+      (MonadDOM m, ToJSString val) =>
+        HTMLTableSectionElement -> val -> m ()
+setCh self val = liftDOM (self ^. jss "ch" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableSectionElement.ch Mozilla HTMLTableSectionElement.ch documentation> 
+getCh ::
+      (MonadDOM m, FromJSString result) =>
+        HTMLTableSectionElement -> m result
+getCh self = liftDOM ((self ^. js "ch") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableSectionElement.chOff Mozilla HTMLTableSectionElement.chOff documentation> 
+setChOff ::
+         (MonadDOM m, ToJSString val) =>
+           HTMLTableSectionElement -> val -> m ()
+setChOff self val = liftDOM (self ^. jss "chOff" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableSectionElement.chOff Mozilla HTMLTableSectionElement.chOff documentation> 
+getChOff ::
+         (MonadDOM m, FromJSString result) =>
+           HTMLTableSectionElement -> m result
+getChOff self
+  = liftDOM ((self ^. js "chOff") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableSectionElement.vAlign Mozilla HTMLTableSectionElement.vAlign documentation> 
+setVAlign ::
+          (MonadDOM m, ToJSString val) =>
+            HTMLTableSectionElement -> val -> m ()
+setVAlign self val = liftDOM (self ^. jss "vAlign" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableSectionElement.vAlign Mozilla HTMLTableSectionElement.vAlign documentation> 
+getVAlign ::
+          (MonadDOM m, FromJSString result) =>
+            HTMLTableSectionElement -> m result
+getVAlign self
+  = liftDOM ((self ^. js "vAlign") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableSectionElement.rows Mozilla HTMLTableSectionElement.rows documentation> 
+getRows ::
+        (MonadDOM m) => HTMLTableSectionElement -> m (Maybe HTMLCollection)
+getRows self = liftDOM ((self ^. js "rows") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HTMLTemplateElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLTemplateElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLTemplateElement.hs
@@ -0,0 +1,21 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HTMLTemplateElement
+       (getContent, HTMLTemplateElement, castToHTMLTemplateElement,
+        gTypeHTMLTemplateElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement.content Mozilla HTMLTemplateElement.content documentation> 
+getContent ::
+           (MonadDOM m) => HTMLTemplateElement -> m (Maybe DocumentFragment)
+getContent self = liftDOM ((self ^. js "content") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HTMLTextAreaElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLTextAreaElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLTextAreaElement.hs
@@ -0,0 +1,311 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HTMLTextAreaElement
+       (checkValidity, setCustomValidity, select, setRangeText,
+        setRangeText4, setSelectionRange, setAutofocus, getAutofocus,
+        setCols, getCols, setDirName, getDirName, setDisabled, getDisabled,
+        getForm, setMaxLength, getMaxLength, setName, getName,
+        setPlaceholder, getPlaceholder, setReadOnly, getReadOnly,
+        setRequired, getRequired, setRows, getRows, setWrap, getWrap,
+        getType, setDefaultValue, getDefaultValue, setValue, getValue,
+        getTextLength, getWillValidate, getValidity, getValidationMessage,
+        getLabels, setSelectionStart, getSelectionStart, setSelectionEnd,
+        getSelectionEnd, setSelectionDirection, getSelectionDirection,
+        setAutocorrect, getAutocorrect, setAutocapitalize,
+        getAutocapitalize, HTMLTextAreaElement, castToHTMLTextAreaElement,
+        gTypeHTMLTextAreaElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.checkValidity Mozilla HTMLTextAreaElement.checkValidity documentation> 
+checkValidity :: (MonadDOM m) => HTMLTextAreaElement -> m Bool
+checkValidity self
+  = liftDOM ((self ^. js "checkValidity") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.setCustomValidity Mozilla HTMLTextAreaElement.setCustomValidity documentation> 
+setCustomValidity ::
+                  (MonadDOM m, ToJSString error) =>
+                    HTMLTextAreaElement -> Maybe error -> m ()
+setCustomValidity self error
+  = liftDOM (void (self ^. jsf "setCustomValidity" [toJSVal error]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.select Mozilla HTMLTextAreaElement.select documentation> 
+select :: (MonadDOM m) => HTMLTextAreaElement -> m ()
+select self = liftDOM (void (self ^. js "select"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.setRangeText Mozilla HTMLTextAreaElement.setRangeText documentation> 
+setRangeText ::
+             (MonadDOM m, ToJSString replacement) =>
+               HTMLTextAreaElement -> replacement -> m ()
+setRangeText self replacement
+  = liftDOM (void (self ^. jsf "setRangeText" [toJSVal replacement]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.setRangeText Mozilla HTMLTextAreaElement.setRangeText documentation> 
+setRangeText4 ::
+              (MonadDOM m, ToJSString replacement, ToJSString selectionMode) =>
+                HTMLTextAreaElement ->
+                  replacement -> Word -> Word -> selectionMode -> m ()
+setRangeText4 self replacement start end selectionMode
+  = liftDOM
+      (void
+         (self ^. jsf "setRangeText"
+            [toJSVal replacement, toJSVal start, toJSVal end,
+             toJSVal selectionMode]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.setSelectionRange Mozilla HTMLTextAreaElement.setSelectionRange documentation> 
+setSelectionRange ::
+                  (MonadDOM m, ToJSString direction) =>
+                    HTMLTextAreaElement -> Int -> Int -> direction -> m ()
+setSelectionRange self start end direction
+  = liftDOM
+      (void
+         (self ^. jsf "setSelectionRange"
+            [toJSVal start, toJSVal end, toJSVal direction]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.autofocus Mozilla HTMLTextAreaElement.autofocus documentation> 
+setAutofocus :: (MonadDOM m) => HTMLTextAreaElement -> Bool -> m ()
+setAutofocus self val
+  = liftDOM (self ^. jss "autofocus" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.autofocus Mozilla HTMLTextAreaElement.autofocus documentation> 
+getAutofocus :: (MonadDOM m) => HTMLTextAreaElement -> m Bool
+getAutofocus self
+  = liftDOM ((self ^. js "autofocus") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.cols Mozilla HTMLTextAreaElement.cols documentation> 
+setCols :: (MonadDOM m) => HTMLTextAreaElement -> Int -> m ()
+setCols self val = liftDOM (self ^. jss "cols" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.cols Mozilla HTMLTextAreaElement.cols documentation> 
+getCols :: (MonadDOM m) => HTMLTextAreaElement -> m Int
+getCols self
+  = liftDOM (round <$> ((self ^. js "cols") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.dirName Mozilla HTMLTextAreaElement.dirName documentation> 
+setDirName ::
+           (MonadDOM m, ToJSString val) => HTMLTextAreaElement -> val -> m ()
+setDirName self val = liftDOM (self ^. jss "dirName" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.dirName Mozilla HTMLTextAreaElement.dirName documentation> 
+getDirName ::
+           (MonadDOM m, FromJSString result) =>
+             HTMLTextAreaElement -> m result
+getDirName self
+  = liftDOM ((self ^. js "dirName") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.disabled Mozilla HTMLTextAreaElement.disabled documentation> 
+setDisabled :: (MonadDOM m) => HTMLTextAreaElement -> Bool -> m ()
+setDisabled self val
+  = liftDOM (self ^. jss "disabled" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.disabled Mozilla HTMLTextAreaElement.disabled documentation> 
+getDisabled :: (MonadDOM m) => HTMLTextAreaElement -> m Bool
+getDisabled self = liftDOM ((self ^. js "disabled") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.form Mozilla HTMLTextAreaElement.form documentation> 
+getForm ::
+        (MonadDOM m) => HTMLTextAreaElement -> m (Maybe HTMLFormElement)
+getForm self = liftDOM ((self ^. js "form") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.maxLength Mozilla HTMLTextAreaElement.maxLength documentation> 
+setMaxLength :: (MonadDOM m) => HTMLTextAreaElement -> Int -> m ()
+setMaxLength self val
+  = liftDOM (self ^. jss "maxLength" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.maxLength Mozilla HTMLTextAreaElement.maxLength documentation> 
+getMaxLength :: (MonadDOM m) => HTMLTextAreaElement -> m Int
+getMaxLength self
+  = liftDOM (round <$> ((self ^. js "maxLength") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.name Mozilla HTMLTextAreaElement.name documentation> 
+setName ::
+        (MonadDOM m, ToJSString val) => HTMLTextAreaElement -> val -> m ()
+setName self val = liftDOM (self ^. jss "name" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.name Mozilla HTMLTextAreaElement.name documentation> 
+getName ::
+        (MonadDOM m, FromJSString result) =>
+          HTMLTextAreaElement -> m result
+getName self = liftDOM ((self ^. js "name") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.placeholder Mozilla HTMLTextAreaElement.placeholder documentation> 
+setPlaceholder ::
+               (MonadDOM m, ToJSString val) => HTMLTextAreaElement -> val -> m ()
+setPlaceholder self val
+  = liftDOM (self ^. jss "placeholder" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.placeholder Mozilla HTMLTextAreaElement.placeholder documentation> 
+getPlaceholder ::
+               (MonadDOM m, FromJSString result) =>
+                 HTMLTextAreaElement -> m result
+getPlaceholder self
+  = liftDOM ((self ^. js "placeholder") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.readOnly Mozilla HTMLTextAreaElement.readOnly documentation> 
+setReadOnly :: (MonadDOM m) => HTMLTextAreaElement -> Bool -> m ()
+setReadOnly self val
+  = liftDOM (self ^. jss "readOnly" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.readOnly Mozilla HTMLTextAreaElement.readOnly documentation> 
+getReadOnly :: (MonadDOM m) => HTMLTextAreaElement -> m Bool
+getReadOnly self = liftDOM ((self ^. js "readOnly") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.required Mozilla HTMLTextAreaElement.required documentation> 
+setRequired :: (MonadDOM m) => HTMLTextAreaElement -> Bool -> m ()
+setRequired self val
+  = liftDOM (self ^. jss "required" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.required Mozilla HTMLTextAreaElement.required documentation> 
+getRequired :: (MonadDOM m) => HTMLTextAreaElement -> m Bool
+getRequired self = liftDOM ((self ^. js "required") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.rows Mozilla HTMLTextAreaElement.rows documentation> 
+setRows :: (MonadDOM m) => HTMLTextAreaElement -> Int -> m ()
+setRows self val = liftDOM (self ^. jss "rows" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.rows Mozilla HTMLTextAreaElement.rows documentation> 
+getRows :: (MonadDOM m) => HTMLTextAreaElement -> m Int
+getRows self
+  = liftDOM (round <$> ((self ^. js "rows") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.wrap Mozilla HTMLTextAreaElement.wrap documentation> 
+setWrap ::
+        (MonadDOM m, ToJSString val) => HTMLTextAreaElement -> val -> m ()
+setWrap self val = liftDOM (self ^. jss "wrap" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.wrap Mozilla HTMLTextAreaElement.wrap documentation> 
+getWrap ::
+        (MonadDOM m, FromJSString result) =>
+          HTMLTextAreaElement -> m result
+getWrap self = liftDOM ((self ^. js "wrap") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.type Mozilla HTMLTextAreaElement.type documentation> 
+getType ::
+        (MonadDOM m, FromJSString result) =>
+          HTMLTextAreaElement -> m result
+getType self = liftDOM ((self ^. js "type") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.defaultValue Mozilla HTMLTextAreaElement.defaultValue documentation> 
+setDefaultValue ::
+                (MonadDOM m, ToJSString val) =>
+                  HTMLTextAreaElement -> Maybe val -> m ()
+setDefaultValue self val
+  = liftDOM (self ^. jss "defaultValue" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.defaultValue Mozilla HTMLTextAreaElement.defaultValue documentation> 
+getDefaultValue ::
+                (MonadDOM m, FromJSString result) =>
+                  HTMLTextAreaElement -> m (Maybe result)
+getDefaultValue self
+  = liftDOM ((self ^. js "defaultValue") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.value Mozilla HTMLTextAreaElement.value documentation> 
+setValue ::
+         (MonadDOM m, ToJSString val) =>
+           HTMLTextAreaElement -> Maybe val -> m ()
+setValue self val = liftDOM (self ^. jss "value" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.value Mozilla HTMLTextAreaElement.value documentation> 
+getValue ::
+         (MonadDOM m, FromJSString result) =>
+           HTMLTextAreaElement -> m (Maybe result)
+getValue self
+  = liftDOM ((self ^. js "value") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.textLength Mozilla HTMLTextAreaElement.textLength documentation> 
+getTextLength :: (MonadDOM m) => HTMLTextAreaElement -> m Word
+getTextLength self
+  = liftDOM (round <$> ((self ^. js "textLength") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.willValidate Mozilla HTMLTextAreaElement.willValidate documentation> 
+getWillValidate :: (MonadDOM m) => HTMLTextAreaElement -> m Bool
+getWillValidate self
+  = liftDOM ((self ^. js "willValidate") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.validity Mozilla HTMLTextAreaElement.validity documentation> 
+getValidity ::
+            (MonadDOM m) => HTMLTextAreaElement -> m (Maybe ValidityState)
+getValidity self = liftDOM ((self ^. js "validity") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.validationMessage Mozilla HTMLTextAreaElement.validationMessage documentation> 
+getValidationMessage ::
+                     (MonadDOM m, FromJSString result) =>
+                       HTMLTextAreaElement -> m result
+getValidationMessage self
+  = liftDOM ((self ^. js "validationMessage") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.labels Mozilla HTMLTextAreaElement.labels documentation> 
+getLabels ::
+          (MonadDOM m) => HTMLTextAreaElement -> m (Maybe NodeList)
+getLabels self = liftDOM ((self ^. js "labels") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.selectionStart Mozilla HTMLTextAreaElement.selectionStart documentation> 
+setSelectionStart ::
+                  (MonadDOM m) => HTMLTextAreaElement -> Int -> m ()
+setSelectionStart self val
+  = liftDOM (self ^. jss "selectionStart" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.selectionStart Mozilla HTMLTextAreaElement.selectionStart documentation> 
+getSelectionStart :: (MonadDOM m) => HTMLTextAreaElement -> m Int
+getSelectionStart self
+  = liftDOM
+      (round <$> ((self ^. js "selectionStart") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.selectionEnd Mozilla HTMLTextAreaElement.selectionEnd documentation> 
+setSelectionEnd ::
+                (MonadDOM m) => HTMLTextAreaElement -> Int -> m ()
+setSelectionEnd self val
+  = liftDOM (self ^. jss "selectionEnd" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.selectionEnd Mozilla HTMLTextAreaElement.selectionEnd documentation> 
+getSelectionEnd :: (MonadDOM m) => HTMLTextAreaElement -> m Int
+getSelectionEnd self
+  = liftDOM (round <$> ((self ^. js "selectionEnd") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.selectionDirection Mozilla HTMLTextAreaElement.selectionDirection documentation> 
+setSelectionDirection ::
+                      (MonadDOM m, ToJSString val) => HTMLTextAreaElement -> val -> m ()
+setSelectionDirection self val
+  = liftDOM (self ^. jss "selectionDirection" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.selectionDirection Mozilla HTMLTextAreaElement.selectionDirection documentation> 
+getSelectionDirection ::
+                      (MonadDOM m, FromJSString result) =>
+                        HTMLTextAreaElement -> m result
+getSelectionDirection self
+  = liftDOM
+      ((self ^. js "selectionDirection") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.autocorrect Mozilla HTMLTextAreaElement.autocorrect documentation> 
+setAutocorrect ::
+               (MonadDOM m) => HTMLTextAreaElement -> Bool -> m ()
+setAutocorrect self val
+  = liftDOM (self ^. jss "autocorrect" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.autocorrect Mozilla HTMLTextAreaElement.autocorrect documentation> 
+getAutocorrect :: (MonadDOM m) => HTMLTextAreaElement -> m Bool
+getAutocorrect self
+  = liftDOM ((self ^. js "autocorrect") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.autocapitalize Mozilla HTMLTextAreaElement.autocapitalize documentation> 
+setAutocapitalize ::
+                  (MonadDOM m, ToJSString val) =>
+                    HTMLTextAreaElement -> Maybe val -> m ()
+setAutocapitalize self val
+  = liftDOM (self ^. jss "autocapitalize" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.autocapitalize Mozilla HTMLTextAreaElement.autocapitalize documentation> 
+getAutocapitalize ::
+                  (MonadDOM m, FromJSString result) =>
+                    HTMLTextAreaElement -> m (Maybe result)
+getAutocapitalize self
+  = liftDOM ((self ^. js "autocapitalize") >>= fromMaybeJSString)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HTMLTitleElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLTitleElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLTitleElement.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HTMLTitleElement
+       (setText, getText, HTMLTitleElement, castToHTMLTitleElement,
+        gTypeHTMLTitleElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTitleElement.text Mozilla HTMLTitleElement.text documentation> 
+setText ::
+        (MonadDOM m, ToJSString val) =>
+          HTMLTitleElement -> Maybe val -> m ()
+setText self val = liftDOM (self ^. jss "text" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTitleElement.text Mozilla HTMLTitleElement.text documentation> 
+getText ::
+        (MonadDOM m, FromJSString result) =>
+          HTMLTitleElement -> m (Maybe result)
+getText self = liftDOM ((self ^. js "text") >>= fromMaybeJSString)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HTMLTrackElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLTrackElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLTrackElement.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HTMLTrackElement
+       (pattern NONE, pattern LOADING, pattern LOADED, pattern ERROR,
+        setKind, getKind, setSrc, getSrc, setSrclang, getSrclang, setLabel,
+        getLabel, setDefault, getDefault, getReadyState, getTrack,
+        HTMLTrackElement, castToHTMLTrackElement, gTypeHTMLTrackElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+pattern NONE = 0
+pattern LOADING = 1
+pattern LOADED = 2
+pattern ERROR = 3
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTrackElement.kind Mozilla HTMLTrackElement.kind documentation> 
+setKind ::
+        (MonadDOM m, ToJSString val) => HTMLTrackElement -> val -> m ()
+setKind self val = liftDOM (self ^. jss "kind" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTrackElement.kind Mozilla HTMLTrackElement.kind documentation> 
+getKind ::
+        (MonadDOM m, FromJSString result) => HTMLTrackElement -> m result
+getKind self = liftDOM ((self ^. js "kind") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTrackElement.src Mozilla HTMLTrackElement.src documentation> 
+setSrc ::
+       (MonadDOM m, ToJSString val) => HTMLTrackElement -> val -> m ()
+setSrc self val = liftDOM (self ^. jss "src" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTrackElement.src Mozilla HTMLTrackElement.src documentation> 
+getSrc ::
+       (MonadDOM m, FromJSString result) => HTMLTrackElement -> m result
+getSrc self = liftDOM ((self ^. js "src") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTrackElement.srclang Mozilla HTMLTrackElement.srclang documentation> 
+setSrclang ::
+           (MonadDOM m, ToJSString val) => HTMLTrackElement -> val -> m ()
+setSrclang self val = liftDOM (self ^. jss "srclang" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTrackElement.srclang Mozilla HTMLTrackElement.srclang documentation> 
+getSrclang ::
+           (MonadDOM m, FromJSString result) => HTMLTrackElement -> m result
+getSrclang self
+  = liftDOM ((self ^. js "srclang") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTrackElement.label Mozilla HTMLTrackElement.label documentation> 
+setLabel ::
+         (MonadDOM m, ToJSString val) => HTMLTrackElement -> val -> m ()
+setLabel self val = liftDOM (self ^. jss "label" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTrackElement.label Mozilla HTMLTrackElement.label documentation> 
+getLabel ::
+         (MonadDOM m, FromJSString result) => HTMLTrackElement -> m result
+getLabel self
+  = liftDOM ((self ^. js "label") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTrackElement.default Mozilla HTMLTrackElement.default documentation> 
+setDefault :: (MonadDOM m) => HTMLTrackElement -> Bool -> m ()
+setDefault self val = liftDOM (self ^. jss "default" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTrackElement.default Mozilla HTMLTrackElement.default documentation> 
+getDefault :: (MonadDOM m) => HTMLTrackElement -> m Bool
+getDefault self = liftDOM ((self ^. js "default") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTrackElement.readyState Mozilla HTMLTrackElement.readyState documentation> 
+getReadyState :: (MonadDOM m) => HTMLTrackElement -> m Word
+getReadyState self
+  = liftDOM (round <$> ((self ^. js "readyState") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTrackElement.track Mozilla HTMLTrackElement.track documentation> 
+getTrack :: (MonadDOM m) => HTMLTrackElement -> m (Maybe TextTrack)
+getTrack self = liftDOM ((self ^. js "track") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HTMLUListElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLUListElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLUListElement.hs
@@ -0,0 +1,34 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HTMLUListElement
+       (setCompact, getCompact, setType, getType, HTMLUListElement,
+        castToHTMLUListElement, gTypeHTMLUListElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLUListElement.compact Mozilla HTMLUListElement.compact documentation> 
+setCompact :: (MonadDOM m) => HTMLUListElement -> Bool -> m ()
+setCompact self val = liftDOM (self ^. jss "compact" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLUListElement.compact Mozilla HTMLUListElement.compact documentation> 
+getCompact :: (MonadDOM m) => HTMLUListElement -> m Bool
+getCompact self = liftDOM ((self ^. js "compact") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLUListElement.type Mozilla HTMLUListElement.type documentation> 
+setType ::
+        (MonadDOM m, ToJSString val) => HTMLUListElement -> val -> m ()
+setType self val = liftDOM (self ^. jss "type" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLUListElement.type Mozilla HTMLUListElement.type documentation> 
+getType ::
+        (MonadDOM m, FromJSString result) => HTMLUListElement -> m result
+getType self = liftDOM ((self ^. js "type") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HTMLVideoElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLVideoElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HTMLVideoElement.hs
@@ -0,0 +1,153 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HTMLVideoElement
+       (webkitEnterFullscreen, webkitExitFullscreen,
+        webkitEnterFullScreen, webkitExitFullScreen,
+        webkitSupportsPresentationMode, webkitSetPresentationMode,
+        setWidth, getWidth, setHeight, getHeight, getVideoWidth,
+        getVideoHeight, setPoster, getPoster, getWebkitSupportsFullscreen,
+        getWebkitDisplayingFullscreen,
+        setWebkitWirelessVideoPlaybackDisabled,
+        getWebkitWirelessVideoPlaybackDisabled, getWebkitDecodedFrameCount,
+        getWebkitDroppedFrameCount, getWebkitPresentationMode,
+        webKitPresentationModeChanged, HTMLVideoElement,
+        castToHTMLVideoElement, gTypeHTMLVideoElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.webkitEnterFullscreen Mozilla HTMLVideoElement.webkitEnterFullscreen documentation> 
+webkitEnterFullscreen :: (MonadDOM m) => HTMLVideoElement -> m ()
+webkitEnterFullscreen self
+  = liftDOM (void (self ^. js "webkitEnterFullscreen"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.webkitExitFullscreen Mozilla HTMLVideoElement.webkitExitFullscreen documentation> 
+webkitExitFullscreen :: (MonadDOM m) => HTMLVideoElement -> m ()
+webkitExitFullscreen self
+  = liftDOM (void (self ^. js "webkitExitFullscreen"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.webkitEnterFullScreen Mozilla HTMLVideoElement.webkitEnterFullScreen documentation> 
+webkitEnterFullScreen :: (MonadDOM m) => HTMLVideoElement -> m ()
+webkitEnterFullScreen self
+  = liftDOM (void (self ^. js "webkitEnterFullScreen"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.webkitExitFullScreen Mozilla HTMLVideoElement.webkitExitFullScreen documentation> 
+webkitExitFullScreen :: (MonadDOM m) => HTMLVideoElement -> m ()
+webkitExitFullScreen self
+  = liftDOM (void (self ^. js "webkitExitFullScreen"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.webkitSupportsPresentationMode Mozilla HTMLVideoElement.webkitSupportsPresentationMode documentation> 
+webkitSupportsPresentationMode ::
+                               (MonadDOM m) => HTMLVideoElement -> VideoPresentationMode -> m Bool
+webkitSupportsPresentationMode self mode
+  = liftDOM
+      ((self ^. jsf "webkitSupportsPresentationMode" [toJSVal mode]) >>=
+         valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.webkitSetPresentationMode Mozilla HTMLVideoElement.webkitSetPresentationMode documentation> 
+webkitSetPresentationMode ::
+                          (MonadDOM m) => HTMLVideoElement -> VideoPresentationMode -> m ()
+webkitSetPresentationMode self mode
+  = liftDOM
+      (void (self ^. jsf "webkitSetPresentationMode" [toJSVal mode]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.width Mozilla HTMLVideoElement.width documentation> 
+setWidth :: (MonadDOM m) => HTMLVideoElement -> Word -> m ()
+setWidth self val = liftDOM (self ^. jss "width" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.width Mozilla HTMLVideoElement.width documentation> 
+getWidth :: (MonadDOM m) => HTMLVideoElement -> m Word
+getWidth self
+  = liftDOM (round <$> ((self ^. js "width") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.height Mozilla HTMLVideoElement.height documentation> 
+setHeight :: (MonadDOM m) => HTMLVideoElement -> Word -> m ()
+setHeight self val = liftDOM (self ^. jss "height" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.height Mozilla HTMLVideoElement.height documentation> 
+getHeight :: (MonadDOM m) => HTMLVideoElement -> m Word
+getHeight self
+  = liftDOM (round <$> ((self ^. js "height") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.videoWidth Mozilla HTMLVideoElement.videoWidth documentation> 
+getVideoWidth :: (MonadDOM m) => HTMLVideoElement -> m Word
+getVideoWidth self
+  = liftDOM (round <$> ((self ^. js "videoWidth") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.videoHeight Mozilla HTMLVideoElement.videoHeight documentation> 
+getVideoHeight :: (MonadDOM m) => HTMLVideoElement -> m Word
+getVideoHeight self
+  = liftDOM (round <$> ((self ^. js "videoHeight") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.poster Mozilla HTMLVideoElement.poster documentation> 
+setPoster ::
+          (MonadDOM m, ToJSString val) => HTMLVideoElement -> val -> m ()
+setPoster self val = liftDOM (self ^. jss "poster" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.poster Mozilla HTMLVideoElement.poster documentation> 
+getPoster ::
+          (MonadDOM m, FromJSString result) => HTMLVideoElement -> m result
+getPoster self
+  = liftDOM ((self ^. js "poster") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.webkitSupportsFullscreen Mozilla HTMLVideoElement.webkitSupportsFullscreen documentation> 
+getWebkitSupportsFullscreen ::
+                            (MonadDOM m) => HTMLVideoElement -> m Bool
+getWebkitSupportsFullscreen self
+  = liftDOM ((self ^. js "webkitSupportsFullscreen") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.webkitDisplayingFullscreen Mozilla HTMLVideoElement.webkitDisplayingFullscreen documentation> 
+getWebkitDisplayingFullscreen ::
+                              (MonadDOM m) => HTMLVideoElement -> m Bool
+getWebkitDisplayingFullscreen self
+  = liftDOM ((self ^. js "webkitDisplayingFullscreen") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.webkitWirelessVideoPlaybackDisabled Mozilla HTMLVideoElement.webkitWirelessVideoPlaybackDisabled documentation> 
+setWebkitWirelessVideoPlaybackDisabled ::
+                                       (MonadDOM m) => HTMLVideoElement -> Bool -> m ()
+setWebkitWirelessVideoPlaybackDisabled self val
+  = liftDOM
+      (self ^. jss "webkitWirelessVideoPlaybackDisabled" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.webkitWirelessVideoPlaybackDisabled Mozilla HTMLVideoElement.webkitWirelessVideoPlaybackDisabled documentation> 
+getWebkitWirelessVideoPlaybackDisabled ::
+                                       (MonadDOM m) => HTMLVideoElement -> m Bool
+getWebkitWirelessVideoPlaybackDisabled self
+  = liftDOM
+      ((self ^. js "webkitWirelessVideoPlaybackDisabled") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.webkitDecodedFrameCount Mozilla HTMLVideoElement.webkitDecodedFrameCount documentation> 
+getWebkitDecodedFrameCount ::
+                           (MonadDOM m) => HTMLVideoElement -> m Word
+getWebkitDecodedFrameCount self
+  = liftDOM
+      (round <$>
+         ((self ^. js "webkitDecodedFrameCount") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.webkitDroppedFrameCount Mozilla HTMLVideoElement.webkitDroppedFrameCount documentation> 
+getWebkitDroppedFrameCount ::
+                           (MonadDOM m) => HTMLVideoElement -> m Word
+getWebkitDroppedFrameCount self
+  = liftDOM
+      (round <$>
+         ((self ^. js "webkitDroppedFrameCount") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.webkitPresentationMode Mozilla HTMLVideoElement.webkitPresentationMode documentation> 
+getWebkitPresentationMode ::
+                          (MonadDOM m) => HTMLVideoElement -> m VideoPresentationMode
+getWebkitPresentationMode self
+  = liftDOM
+      ((self ^. js "webkitPresentationMode") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.onwebkitpresentationmodechanged Mozilla HTMLVideoElement.onwebkitpresentationmodechanged documentation> 
+webKitPresentationModeChanged :: EventName HTMLVideoElement Event
+webKitPresentationModeChanged
+  = unsafeEventName (toJSString "webkitpresentationmodechanged")
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/HashChangeEvent.hs b/src/Language/Javascript/JSaddle/DOM/Generated/HashChangeEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/HashChangeEvent.hs
@@ -0,0 +1,41 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.HashChangeEvent
+       (initHashChangeEvent, getOldURL, getNewURL, HashChangeEvent,
+        castToHashChangeEvent, gTypeHashChangeEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HashChangeEvent.initHashChangeEvent Mozilla HashChangeEvent.initHashChangeEvent documentation> 
+initHashChangeEvent ::
+                    (MonadDOM m, ToJSString type', ToJSString oldURL,
+                     ToJSString newURL) =>
+                      HashChangeEvent ->
+                        type' -> Bool -> Bool -> oldURL -> newURL -> m ()
+initHashChangeEvent self type' canBubble cancelable oldURL newURL
+  = liftDOM
+      (void
+         (self ^. jsf "initHashChangeEvent"
+            [toJSVal type', toJSVal canBubble, toJSVal cancelable,
+             toJSVal oldURL, toJSVal newURL]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HashChangeEvent.oldURL Mozilla HashChangeEvent.oldURL documentation> 
+getOldURL ::
+          (MonadDOM m, FromJSString result) => HashChangeEvent -> m result
+getOldURL self
+  = liftDOM ((self ^. js "oldURL") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HashChangeEvent.newURL Mozilla HashChangeEvent.newURL documentation> 
+getNewURL ::
+          (MonadDOM m, FromJSString result) => HashChangeEvent -> m result
+getNewURL self
+  = liftDOM ((self ^. js "newURL") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/History.hs b/src/Language/Javascript/JSaddle/DOM/Generated/History.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/History.hs
@@ -0,0 +1,59 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.History
+       (back, forward, go, pushState, replaceState, getLength, getState,
+        History, castToHistory, gTypeHistory)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/History.back Mozilla History.back documentation> 
+back :: (MonadDOM m) => History -> m ()
+back self = liftDOM (void (self ^. js "back"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/History.forward Mozilla History.forward documentation> 
+forward :: (MonadDOM m) => History -> m ()
+forward self = liftDOM (void (self ^. js "forward"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/History.go Mozilla History.go documentation> 
+go :: (MonadDOM m) => History -> Int -> m ()
+go self distance
+  = liftDOM (void (self ^. jsf "go" [toJSVal distance]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/History.pushState Mozilla History.pushState documentation> 
+pushState ::
+          (MonadDOM m, ToJSString title, ToJSString url) =>
+            History -> JSVal -> title -> url -> m ()
+pushState self data' title url
+  = liftDOM
+      (void
+         (self ^. jsf "pushState"
+            [toJSVal data', toJSVal title, toJSVal url]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/History.replaceState Mozilla History.replaceState documentation> 
+replaceState ::
+             (MonadDOM m, ToJSString title, ToJSString url) =>
+               History -> JSVal -> title -> url -> m ()
+replaceState self data' title url
+  = liftDOM
+      (void
+         (self ^. jsf "replaceState"
+            [toJSVal data', toJSVal title, toJSVal url]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/History.length Mozilla History.length documentation> 
+getLength :: (MonadDOM m) => History -> m Word
+getLength self
+  = liftDOM (round <$> ((self ^. js "length") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/History.state Mozilla History.state documentation> 
+getState ::
+         (MonadDOM m) => History -> m (Maybe SerializedScriptValue)
+getState self = liftDOM ((self ^. js "state") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/IDBCursor.hs b/src/Language/Javascript/JSaddle/DOM/Generated/IDBCursor.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/IDBCursor.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.IDBCursor
+       (update, advance, continue, delete, getSource, getDirection,
+        getKey, getPrimaryKey, IDBCursor, castToIDBCursor, gTypeIDBCursor,
+        IsIDBCursor, toIDBCursor)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.update Mozilla IDBCursor.update documentation> 
+update ::
+       (MonadDOM m, IsIDBCursor self) =>
+         self -> JSVal -> m (Maybe IDBRequest)
+update self value
+  = liftDOM
+      (((toIDBCursor self) ^. jsf "update" [toJSVal value]) >>=
+         fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.advance Mozilla IDBCursor.advance documentation> 
+advance :: (MonadDOM m, IsIDBCursor self) => self -> Word -> m ()
+advance self count
+  = liftDOM
+      (void ((toIDBCursor self) ^. jsf "advance" [toJSVal count]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.continue Mozilla IDBCursor.continue documentation> 
+continue :: (MonadDOM m, IsIDBCursor self) => self -> JSVal -> m ()
+continue self key
+  = liftDOM
+      (void ((toIDBCursor self) ^. jsf "continue" [toJSVal key]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.delete Mozilla IDBCursor.delete documentation> 
+delete ::
+       (MonadDOM m, IsIDBCursor self) => self -> m (Maybe IDBRequest)
+delete self
+  = liftDOM (((toIDBCursor self) ^. js "delete") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.source Mozilla IDBCursor.source documentation> 
+getSource ::
+          (MonadDOM m, IsIDBCursor self) => self -> m (Maybe IDBAny)
+getSource self
+  = liftDOM (((toIDBCursor self) ^. js "source") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.direction Mozilla IDBCursor.direction documentation> 
+getDirection ::
+             (MonadDOM m, IsIDBCursor self, FromJSString result) =>
+               self -> m result
+getDirection self
+  = liftDOM
+      (((toIDBCursor self) ^. js "direction") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.key Mozilla IDBCursor.key documentation> 
+getKey :: (MonadDOM m, IsIDBCursor self) => self -> m JSVal
+getKey self
+  = liftDOM (((toIDBCursor self) ^. js "key") >>= toJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.primaryKey Mozilla IDBCursor.primaryKey documentation> 
+getPrimaryKey :: (MonadDOM m, IsIDBCursor self) => self -> m JSVal
+getPrimaryKey self
+  = liftDOM (((toIDBCursor self) ^. js "primaryKey") >>= toJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/IDBCursorWithValue.hs b/src/Language/Javascript/JSaddle/DOM/Generated/IDBCursorWithValue.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/IDBCursorWithValue.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.IDBCursorWithValue
+       (getValue, IDBCursorWithValue, castToIDBCursorWithValue,
+        gTypeIDBCursorWithValue)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursorWithValue.value Mozilla IDBCursorWithValue.value documentation> 
+getValue :: (MonadDOM m) => IDBCursorWithValue -> m JSVal
+getValue self = liftDOM ((self ^. js "value") >>= toJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/IDBDatabase.hs b/src/Language/Javascript/JSaddle/DOM/Generated/IDBDatabase.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/IDBDatabase.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.IDBDatabase
+       (createObjectStore, deleteObjectStore, transaction, transaction',
+        close, getName, getVersion, getObjectStoreNames, abort, error,
+        versionChange, IDBDatabase, castToIDBDatabase, gTypeIDBDatabase)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase.createObjectStore Mozilla IDBDatabase.createObjectStore documentation> 
+createObjectStore ::
+                  (MonadDOM m, ToJSString name, IsDictionary options) =>
+                    IDBDatabase -> name -> Maybe options -> m (Maybe IDBObjectStore)
+createObjectStore self name options
+  = liftDOM
+      ((self ^. jsf "createObjectStore" [toJSVal name, toJSVal options])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase.deleteObjectStore Mozilla IDBDatabase.deleteObjectStore documentation> 
+deleteObjectStore ::
+                  (MonadDOM m, ToJSString name) => IDBDatabase -> name -> m ()
+deleteObjectStore self name
+  = liftDOM (void (self ^. jsf "deleteObjectStore" [toJSVal name]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase.transaction Mozilla IDBDatabase.transaction documentation> 
+transaction ::
+            (MonadDOM m, ToJSString storeName, ToJSString mode) =>
+              IDBDatabase -> storeName -> mode -> m (Maybe IDBTransaction)
+transaction self storeName mode
+  = liftDOM
+      ((self ^. jsf "transaction" [toJSVal storeName, toJSVal mode]) >>=
+         fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase.transaction Mozilla IDBDatabase.transaction documentation> 
+transaction' ::
+             (MonadDOM m, ToJSString storeNames, ToJSString mode) =>
+               IDBDatabase -> [storeNames] -> mode -> m (Maybe IDBTransaction)
+transaction' self storeNames mode
+  = liftDOM
+      ((self ^. jsf "transaction"
+          [toJSVal (array storeNames), toJSVal mode])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase.close Mozilla IDBDatabase.close documentation> 
+close :: (MonadDOM m) => IDBDatabase -> m ()
+close self = liftDOM (void (self ^. js "close"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase.name Mozilla IDBDatabase.name documentation> 
+getName ::
+        (MonadDOM m, FromJSString result) => IDBDatabase -> m result
+getName self = liftDOM ((self ^. js "name") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase.version Mozilla IDBDatabase.version documentation> 
+getVersion :: (MonadDOM m) => IDBDatabase -> m Word64
+getVersion self
+  = liftDOM (round <$> ((self ^. js "version") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase.objectStoreNames Mozilla IDBDatabase.objectStoreNames documentation> 
+getObjectStoreNames ::
+                    (MonadDOM m) => IDBDatabase -> m (Maybe DOMStringList)
+getObjectStoreNames self
+  = liftDOM ((self ^. js "objectStoreNames") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase.onabort Mozilla IDBDatabase.onabort documentation> 
+abort :: EventName IDBDatabase Event
+abort = unsafeEventName (toJSString "abort")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase.onerror Mozilla IDBDatabase.onerror documentation> 
+error :: EventName IDBDatabase Event
+error = unsafeEventName (toJSString "error")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase.onversionchange Mozilla IDBDatabase.onversionchange documentation> 
+versionChange :: EventName IDBDatabase IDBVersionChangeEvent
+versionChange = unsafeEventName (toJSString "versionchange")
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/IDBFactory.hs b/src/Language/Javascript/JSaddle/DOM/Generated/IDBFactory.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/IDBFactory.hs
@@ -0,0 +1,41 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.IDBFactory
+       (open, deleteDatabase, cmp, IDBFactory, castToIDBFactory,
+        gTypeIDBFactory)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBFactory.open Mozilla IDBFactory.open documentation> 
+open ::
+     (MonadDOM m, ToJSString name) =>
+       IDBFactory -> name -> Word64 -> m (Maybe IDBOpenDBRequest)
+open self name version
+  = liftDOM
+      ((self ^. jsf "open" [toJSVal name, toJSVal version]) >>=
+         fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBFactory.deleteDatabase Mozilla IDBFactory.deleteDatabase documentation> 
+deleteDatabase ::
+               (MonadDOM m, ToJSString name) =>
+                 IDBFactory -> name -> m (Maybe IDBOpenDBRequest)
+deleteDatabase self name
+  = liftDOM
+      ((self ^. jsf "deleteDatabase" [toJSVal name]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBFactory.cmp Mozilla IDBFactory.cmp documentation> 
+cmp :: (MonadDOM m) => IDBFactory -> JSVal -> JSVal -> m Int
+cmp self first second
+  = liftDOM
+      (round <$>
+         ((self ^. jsf "cmp" [toJSVal first, toJSVal second]) >>=
+            valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/IDBIndex.hs b/src/Language/Javascript/JSaddle/DOM/Generated/IDBIndex.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/IDBIndex.hs
@@ -0,0 +1,114 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.IDBIndex
+       (openCursorRange, openCursor, openKeyCursorRange, openKeyCursor,
+        getRange, get, getKeyRange, getKey, countRange, count, getName,
+        getObjectStore, getKeyPath, getMultiEntry, getUnique, IDBIndex,
+        castToIDBIndex, gTypeIDBIndex)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.openCursor Mozilla IDBIndex.openCursor documentation> 
+openCursorRange ::
+                (MonadDOM m, ToJSString direction) =>
+                  IDBIndex -> Maybe IDBKeyRange -> direction -> m (Maybe IDBRequest)
+openCursorRange self range direction
+  = liftDOM
+      ((self ^. jsf "openCursor" [toJSVal range, toJSVal direction]) >>=
+         fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.openCursor Mozilla IDBIndex.openCursor documentation> 
+openCursor ::
+           (MonadDOM m, ToJSString direction) =>
+             IDBIndex -> JSVal -> direction -> m (Maybe IDBRequest)
+openCursor self key direction
+  = liftDOM
+      ((self ^. jsf "openCursor" [toJSVal key, toJSVal direction]) >>=
+         fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.openKeyCursor Mozilla IDBIndex.openKeyCursor documentation> 
+openKeyCursorRange ::
+                   (MonadDOM m, ToJSString direction) =>
+                     IDBIndex -> Maybe IDBKeyRange -> direction -> m (Maybe IDBRequest)
+openKeyCursorRange self range direction
+  = liftDOM
+      ((self ^. jsf "openKeyCursor" [toJSVal range, toJSVal direction])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.openKeyCursor Mozilla IDBIndex.openKeyCursor documentation> 
+openKeyCursor ::
+              (MonadDOM m, ToJSString direction) =>
+                IDBIndex -> JSVal -> direction -> m (Maybe IDBRequest)
+openKeyCursor self key direction
+  = liftDOM
+      ((self ^. jsf "openKeyCursor" [toJSVal key, toJSVal direction]) >>=
+         fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.get Mozilla IDBIndex.get documentation> 
+getRange ::
+         (MonadDOM m) =>
+           IDBIndex -> Maybe IDBKeyRange -> m (Maybe IDBRequest)
+getRange self key
+  = liftDOM ((self ^. jsf "get" [toJSVal key]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.get Mozilla IDBIndex.get documentation> 
+get :: (MonadDOM m) => IDBIndex -> JSVal -> m (Maybe IDBRequest)
+get self key
+  = liftDOM ((self ^. jsf "get" [toJSVal key]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.getKey Mozilla IDBIndex.getKey documentation> 
+getKeyRange ::
+            (MonadDOM m) =>
+              IDBIndex -> Maybe IDBKeyRange -> m (Maybe IDBRequest)
+getKeyRange self key
+  = liftDOM ((self ^. jsf "getKey" [toJSVal key]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.getKey Mozilla IDBIndex.getKey documentation> 
+getKey :: (MonadDOM m) => IDBIndex -> JSVal -> m (Maybe IDBRequest)
+getKey self key
+  = liftDOM ((self ^. jsf "getKey" [toJSVal key]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.count Mozilla IDBIndex.count documentation> 
+countRange ::
+           (MonadDOM m) =>
+             IDBIndex -> Maybe IDBKeyRange -> m (Maybe IDBRequest)
+countRange self range
+  = liftDOM ((self ^. jsf "count" [toJSVal range]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.count Mozilla IDBIndex.count documentation> 
+count :: (MonadDOM m) => IDBIndex -> JSVal -> m (Maybe IDBRequest)
+count self key
+  = liftDOM ((self ^. jsf "count" [toJSVal key]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.name Mozilla IDBIndex.name documentation> 
+getName ::
+        (MonadDOM m, FromJSString result) => IDBIndex -> m result
+getName self = liftDOM ((self ^. js "name") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.objectStore Mozilla IDBIndex.objectStore documentation> 
+getObjectStore ::
+               (MonadDOM m) => IDBIndex -> m (Maybe IDBObjectStore)
+getObjectStore self
+  = liftDOM ((self ^. js "objectStore") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.keyPath Mozilla IDBIndex.keyPath documentation> 
+getKeyPath :: (MonadDOM m) => IDBIndex -> m (Maybe IDBAny)
+getKeyPath self = liftDOM ((self ^. js "keyPath") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.multiEntry Mozilla IDBIndex.multiEntry documentation> 
+getMultiEntry :: (MonadDOM m) => IDBIndex -> m Bool
+getMultiEntry self
+  = liftDOM ((self ^. js "multiEntry") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.unique Mozilla IDBIndex.unique documentation> 
+getUnique :: (MonadDOM m) => IDBIndex -> m Bool
+getUnique self = liftDOM ((self ^. js "unique") >>= valToBool)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/IDBKeyRange.hs b/src/Language/Javascript/JSaddle/DOM/Generated/IDBKeyRange.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/IDBKeyRange.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.IDBKeyRange
+       (only, lowerBound, upperBound, bound, getLower, getUpper,
+        getLowerOpen, getUpperOpen, IDBKeyRange, castToIDBKeyRange,
+        gTypeIDBKeyRange)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.only Mozilla IDBKeyRange.only documentation> 
+only ::
+     (MonadDOM m) => IDBKeyRange -> JSVal -> m (Maybe IDBKeyRange)
+only self value
+  = liftDOM ((self ^. jsf "only" [toJSVal value]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.lowerBound Mozilla IDBKeyRange.lowerBound documentation> 
+lowerBound ::
+           (MonadDOM m) =>
+             IDBKeyRange -> JSVal -> Bool -> m (Maybe IDBKeyRange)
+lowerBound self lower open
+  = liftDOM
+      ((self ^. jsf "lowerBound" [toJSVal lower, toJSVal open]) >>=
+         fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.upperBound Mozilla IDBKeyRange.upperBound documentation> 
+upperBound ::
+           (MonadDOM m) =>
+             IDBKeyRange -> JSVal -> Bool -> m (Maybe IDBKeyRange)
+upperBound self upper open
+  = liftDOM
+      ((self ^. jsf "upperBound" [toJSVal upper, toJSVal open]) >>=
+         fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.bound Mozilla IDBKeyRange.bound documentation> 
+bound ::
+      (MonadDOM m) =>
+        IDBKeyRange ->
+          JSVal -> JSVal -> Bool -> Bool -> m (Maybe IDBKeyRange)
+bound self lower upper lowerOpen upperOpen
+  = liftDOM
+      ((self ^. jsf "bound"
+          [toJSVal lower, toJSVal upper, toJSVal lowerOpen,
+           toJSVal upperOpen])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.lower Mozilla IDBKeyRange.lower documentation> 
+getLower :: (MonadDOM m) => IDBKeyRange -> m JSVal
+getLower self = liftDOM ((self ^. js "lower") >>= toJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.upper Mozilla IDBKeyRange.upper documentation> 
+getUpper :: (MonadDOM m) => IDBKeyRange -> m JSVal
+getUpper self = liftDOM ((self ^. js "upper") >>= toJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.lowerOpen Mozilla IDBKeyRange.lowerOpen documentation> 
+getLowerOpen :: (MonadDOM m) => IDBKeyRange -> m Bool
+getLowerOpen self
+  = liftDOM ((self ^. js "lowerOpen") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.upperOpen Mozilla IDBKeyRange.upperOpen documentation> 
+getUpperOpen :: (MonadDOM m) => IDBKeyRange -> m Bool
+getUpperOpen self
+  = liftDOM ((self ^. js "upperOpen") >>= valToBool)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/IDBObjectStore.hs b/src/Language/Javascript/JSaddle/DOM/Generated/IDBObjectStore.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/IDBObjectStore.hs
@@ -0,0 +1,161 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.IDBObjectStore
+       (put, add, deleteRange, delete, getRange, get, clear,
+        openCursorRange, openCursor, createIndex', createIndex, index,
+        deleteIndex, countRange, count, getName, getKeyPath, getIndexNames,
+        getTransaction, getAutoIncrement, IDBObjectStore,
+        castToIDBObjectStore, gTypeIDBObjectStore)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.put Mozilla IDBObjectStore.put documentation> 
+put ::
+    (MonadDOM m) =>
+      IDBObjectStore -> JSVal -> JSVal -> m (Maybe IDBRequest)
+put self value key
+  = liftDOM
+      ((self ^. jsf "put" [toJSVal value, toJSVal key]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.add Mozilla IDBObjectStore.add documentation> 
+add ::
+    (MonadDOM m) =>
+      IDBObjectStore -> JSVal -> JSVal -> m (Maybe IDBRequest)
+add self value key
+  = liftDOM
+      ((self ^. jsf "add" [toJSVal value, toJSVal key]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.delete Mozilla IDBObjectStore.delete documentation> 
+deleteRange ::
+            (MonadDOM m) =>
+              IDBObjectStore -> Maybe IDBKeyRange -> m (Maybe IDBRequest)
+deleteRange self keyRange
+  = liftDOM ((self ^. jsf "delete" [toJSVal keyRange]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.delete Mozilla IDBObjectStore.delete documentation> 
+delete ::
+       (MonadDOM m) => IDBObjectStore -> JSVal -> m (Maybe IDBRequest)
+delete self key
+  = liftDOM ((self ^. jsf "delete" [toJSVal key]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.get Mozilla IDBObjectStore.get documentation> 
+getRange ::
+         (MonadDOM m) =>
+           IDBObjectStore -> Maybe IDBKeyRange -> m (Maybe IDBRequest)
+getRange self key
+  = liftDOM ((self ^. jsf "get" [toJSVal key]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.get Mozilla IDBObjectStore.get documentation> 
+get ::
+    (MonadDOM m) => IDBObjectStore -> JSVal -> m (Maybe IDBRequest)
+get self key
+  = liftDOM ((self ^. jsf "get" [toJSVal key]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.clear Mozilla IDBObjectStore.clear documentation> 
+clear :: (MonadDOM m) => IDBObjectStore -> m (Maybe IDBRequest)
+clear self = liftDOM ((self ^. js "clear") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.openCursor Mozilla IDBObjectStore.openCursor documentation> 
+openCursorRange ::
+                (MonadDOM m, ToJSString direction) =>
+                  IDBObjectStore ->
+                    Maybe IDBKeyRange -> direction -> m (Maybe IDBRequest)
+openCursorRange self range direction
+  = liftDOM
+      ((self ^. jsf "openCursor" [toJSVal range, toJSVal direction]) >>=
+         fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.openCursor Mozilla IDBObjectStore.openCursor documentation> 
+openCursor ::
+           (MonadDOM m, ToJSString direction) =>
+             IDBObjectStore -> JSVal -> direction -> m (Maybe IDBRequest)
+openCursor self key direction
+  = liftDOM
+      ((self ^. jsf "openCursor" [toJSVal key, toJSVal direction]) >>=
+         fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.createIndex Mozilla IDBObjectStore.createIndex documentation> 
+createIndex' ::
+             (MonadDOM m, ToJSString name, ToJSString keyPath,
+              IsDictionary options) =>
+               IDBObjectStore ->
+                 name -> [keyPath] -> Maybe options -> m (Maybe IDBIndex)
+createIndex' self name keyPath options
+  = liftDOM
+      ((self ^. jsf "createIndex"
+          [toJSVal name, toJSVal (array keyPath), toJSVal options])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.createIndex Mozilla IDBObjectStore.createIndex documentation> 
+createIndex ::
+            (MonadDOM m, ToJSString name, ToJSString keyPath,
+             IsDictionary options) =>
+              IDBObjectStore ->
+                name -> keyPath -> Maybe options -> m (Maybe IDBIndex)
+createIndex self name keyPath options
+  = liftDOM
+      ((self ^. jsf "createIndex"
+          [toJSVal name, toJSVal keyPath, toJSVal options])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.index Mozilla IDBObjectStore.index documentation> 
+index ::
+      (MonadDOM m, ToJSString name) =>
+        IDBObjectStore -> name -> m (Maybe IDBIndex)
+index self name
+  = liftDOM ((self ^. jsf "index" [toJSVal name]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.deleteIndex Mozilla IDBObjectStore.deleteIndex documentation> 
+deleteIndex ::
+            (MonadDOM m, ToJSString name) => IDBObjectStore -> name -> m ()
+deleteIndex self name
+  = liftDOM (void (self ^. jsf "deleteIndex" [toJSVal name]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.count Mozilla IDBObjectStore.count documentation> 
+countRange ::
+           (MonadDOM m) =>
+             IDBObjectStore -> Maybe IDBKeyRange -> m (Maybe IDBRequest)
+countRange self range
+  = liftDOM ((self ^. jsf "count" [toJSVal range]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.count Mozilla IDBObjectStore.count documentation> 
+count ::
+      (MonadDOM m) => IDBObjectStore -> JSVal -> m (Maybe IDBRequest)
+count self key
+  = liftDOM ((self ^. jsf "count" [toJSVal key]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.name Mozilla IDBObjectStore.name documentation> 
+getName ::
+        (MonadDOM m, FromJSString result) =>
+          IDBObjectStore -> m (Maybe result)
+getName self = liftDOM ((self ^. js "name") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.keyPath Mozilla IDBObjectStore.keyPath documentation> 
+getKeyPath :: (MonadDOM m) => IDBObjectStore -> m (Maybe IDBAny)
+getKeyPath self = liftDOM ((self ^. js "keyPath") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.indexNames Mozilla IDBObjectStore.indexNames documentation> 
+getIndexNames ::
+              (MonadDOM m) => IDBObjectStore -> m (Maybe DOMStringList)
+getIndexNames self
+  = liftDOM ((self ^. js "indexNames") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.transaction Mozilla IDBObjectStore.transaction documentation> 
+getTransaction ::
+               (MonadDOM m) => IDBObjectStore -> m (Maybe IDBTransaction)
+getTransaction self
+  = liftDOM ((self ^. js "transaction") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.autoIncrement Mozilla IDBObjectStore.autoIncrement documentation> 
+getAutoIncrement :: (MonadDOM m) => IDBObjectStore -> m Bool
+getAutoIncrement self
+  = liftDOM ((self ^. js "autoIncrement") >>= valToBool)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/IDBOpenDBRequest.hs b/src/Language/Javascript/JSaddle/DOM/Generated/IDBOpenDBRequest.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/IDBOpenDBRequest.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.IDBOpenDBRequest
+       (blocked, upgradeNeeded, IDBOpenDBRequest, castToIDBOpenDBRequest,
+        gTypeIDBOpenDBRequest)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBOpenDBRequest.onblocked Mozilla IDBOpenDBRequest.onblocked documentation> 
+blocked :: EventName IDBOpenDBRequest IDBVersionChangeEvent
+blocked = unsafeEventName (toJSString "blocked")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBOpenDBRequest.onupgradeneeded Mozilla IDBOpenDBRequest.onupgradeneeded documentation> 
+upgradeNeeded :: EventName IDBOpenDBRequest IDBVersionChangeEvent
+upgradeNeeded = unsafeEventName (toJSString "upgradeneeded")
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/IDBRequest.hs b/src/Language/Javascript/JSaddle/DOM/Generated/IDBRequest.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/IDBRequest.hs
@@ -0,0 +1,59 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.IDBRequest
+       (getResult, getError, getSource, getTransaction, getReadyState,
+        success, error, IDBRequest, castToIDBRequest, gTypeIDBRequest,
+        IsIDBRequest, toIDBRequest)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBRequest.result Mozilla IDBRequest.result documentation> 
+getResult ::
+          (MonadDOM m, IsIDBRequest self) => self -> m (Maybe IDBAny)
+getResult self
+  = liftDOM (((toIDBRequest self) ^. js "result") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBRequest.error Mozilla IDBRequest.error documentation> 
+getError ::
+         (MonadDOM m, IsIDBRequest self) => self -> m (Maybe DOMError)
+getError self
+  = liftDOM (((toIDBRequest self) ^. js "error") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBRequest.source Mozilla IDBRequest.source documentation> 
+getSource ::
+          (MonadDOM m, IsIDBRequest self) => self -> m (Maybe IDBAny)
+getSource self
+  = liftDOM (((toIDBRequest self) ^. js "source") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBRequest.transaction Mozilla IDBRequest.transaction documentation> 
+getTransaction ::
+               (MonadDOM m, IsIDBRequest self) => self -> m (Maybe IDBTransaction)
+getTransaction self
+  = liftDOM (((toIDBRequest self) ^. js "transaction") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBRequest.readyState Mozilla IDBRequest.readyState documentation> 
+getReadyState ::
+              (MonadDOM m, IsIDBRequest self, FromJSString result) =>
+                self -> m result
+getReadyState self
+  = liftDOM
+      (((toIDBRequest self) ^. js "readyState") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBRequest.onsuccess Mozilla IDBRequest.onsuccess documentation> 
+success ::
+        (IsIDBRequest self, IsEventTarget self) => EventName self Event
+success = unsafeEventName (toJSString "success")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBRequest.onerror Mozilla IDBRequest.onerror documentation> 
+error ::
+      (IsIDBRequest self, IsEventTarget self) => EventName self Event
+error = unsafeEventName (toJSString "error")
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/IDBTransaction.hs b/src/Language/Javascript/JSaddle/DOM/Generated/IDBTransaction.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/IDBTransaction.hs
@@ -0,0 +1,54 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.IDBTransaction
+       (objectStore, abort, getMode, getDb, getError, abortEvent,
+        complete, error, IDBTransaction, castToIDBTransaction,
+        gTypeIDBTransaction)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBTransaction.objectStore Mozilla IDBTransaction.objectStore documentation> 
+objectStore ::
+            (MonadDOM m, ToJSString name) =>
+              IDBTransaction -> name -> m (Maybe IDBObjectStore)
+objectStore self name
+  = liftDOM
+      ((self ^. jsf "objectStore" [toJSVal name]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBTransaction.abort Mozilla IDBTransaction.abort documentation> 
+abort :: (MonadDOM m) => IDBTransaction -> m ()
+abort self = liftDOM (void (self ^. js "abort"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBTransaction.mode Mozilla IDBTransaction.mode documentation> 
+getMode ::
+        (MonadDOM m, FromJSString result) => IDBTransaction -> m result
+getMode self = liftDOM ((self ^. js "mode") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBTransaction.db Mozilla IDBTransaction.db documentation> 
+getDb :: (MonadDOM m) => IDBTransaction -> m (Maybe IDBDatabase)
+getDb self = liftDOM ((self ^. js "db") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBTransaction.error Mozilla IDBTransaction.error documentation> 
+getError :: (MonadDOM m) => IDBTransaction -> m (Maybe DOMError)
+getError self = liftDOM ((self ^. js "error") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBTransaction.onabort Mozilla IDBTransaction.onabort documentation> 
+abortEvent :: EventName IDBTransaction Event
+abortEvent = unsafeEventName (toJSString "abort")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBTransaction.oncomplete Mozilla IDBTransaction.oncomplete documentation> 
+complete :: EventName IDBTransaction Event
+complete = unsafeEventName (toJSString "complete")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBTransaction.onerror Mozilla IDBTransaction.onerror documentation> 
+error :: EventName IDBTransaction Event
+error = unsafeEventName (toJSString "error")
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/IDBVersionChangeEvent.hs b/src/Language/Javascript/JSaddle/DOM/Generated/IDBVersionChangeEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/IDBVersionChangeEvent.hs
@@ -0,0 +1,27 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.IDBVersionChangeEvent
+       (getOldVersion, getNewVersion, IDBVersionChangeEvent,
+        castToIDBVersionChangeEvent, gTypeIDBVersionChangeEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBVersionChangeEvent.oldVersion Mozilla IDBVersionChangeEvent.oldVersion documentation> 
+getOldVersion :: (MonadDOM m) => IDBVersionChangeEvent -> m Word64
+getOldVersion self
+  = liftDOM (round <$> ((self ^. js "oldVersion") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBVersionChangeEvent.newVersion Mozilla IDBVersionChangeEvent.newVersion documentation> 
+getNewVersion ::
+              (MonadDOM m) => IDBVersionChangeEvent -> m (Maybe Word64)
+getNewVersion self
+  = liftDOM ((self ^. js "newVersion") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/ImageData.hs b/src/Language/Javascript/JSaddle/DOM/Generated/ImageData.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/ImageData.hs
@@ -0,0 +1,41 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.ImageData
+       (newImageData, newImageData', getWidth, getHeight, ImageData,
+        castToImageData, gTypeImageData)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ImageData Mozilla ImageData documentation> 
+newImageData ::
+             (MonadDOM m, IsUint8ClampedArray data') =>
+               Maybe data' -> Word -> Word -> m ImageData
+newImageData data' sw sh
+  = liftDOM
+      (ImageData <$>
+         new (jsg "ImageData") [toJSVal data', toJSVal sw, toJSVal sh])
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ImageData Mozilla ImageData documentation> 
+newImageData' :: (MonadDOM m) => Word -> Word -> m ImageData
+newImageData' sw sh
+  = liftDOM
+      (ImageData <$> new (jsg "ImageData") [toJSVal sw, toJSVal sh])
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ImageData.width Mozilla ImageData.width documentation> 
+getWidth :: (MonadDOM m) => ImageData -> m Int
+getWidth self
+  = liftDOM (round <$> ((self ^. js "width") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ImageData.height Mozilla ImageData.height documentation> 
+getHeight :: (MonadDOM m) => ImageData -> m Int
+getHeight self
+  = liftDOM (round <$> ((self ^. js "height") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/InspectorFrontendHost.hs b/src/Language/Javascript/JSaddle/DOM/Generated/InspectorFrontendHost.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/InspectorFrontendHost.hs
@@ -0,0 +1,206 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.InspectorFrontendHost
+       (loaded, closeWindow, bringToFront, setZoomFactor,
+        inspectedURLChanged, requestSetDockSide, setAttachedWindowHeight,
+        setAttachedWindowWidth, setToolbarHeight, moveWindowBy,
+        localizedStringsURL, debuggableType, copyText, openInNewTab,
+        canSave, save, append, close, platform, port, showContextMenu,
+        dispatchEventAsContextMenuEvent, sendMessageToBackend,
+        unbufferedLog, isUnderTest, beep, canInspectWorkers, canSaveAs,
+        InspectorFrontendHost, castToInspectorFrontendHost,
+        gTypeInspectorFrontendHost)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.loaded Mozilla InspectorFrontendHost.loaded documentation> 
+loaded :: (MonadDOM m) => InspectorFrontendHost -> m ()
+loaded self = liftDOM (void (self ^. js "loaded"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.closeWindow Mozilla InspectorFrontendHost.closeWindow documentation> 
+closeWindow :: (MonadDOM m) => InspectorFrontendHost -> m ()
+closeWindow self = liftDOM (void (self ^. js "closeWindow"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.bringToFront Mozilla InspectorFrontendHost.bringToFront documentation> 
+bringToFront :: (MonadDOM m) => InspectorFrontendHost -> m ()
+bringToFront self = liftDOM (void (self ^. js "bringToFront"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.setZoomFactor Mozilla InspectorFrontendHost.setZoomFactor documentation> 
+setZoomFactor ::
+              (MonadDOM m) => InspectorFrontendHost -> Float -> m ()
+setZoomFactor self zoom
+  = liftDOM (void (self ^. jsf "setZoomFactor" [toJSVal zoom]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.inspectedURLChanged Mozilla InspectorFrontendHost.inspectedURLChanged documentation> 
+inspectedURLChanged ::
+                    (MonadDOM m, ToJSString newURL) =>
+                      InspectorFrontendHost -> newURL -> m ()
+inspectedURLChanged self newURL
+  = liftDOM
+      (void (self ^. jsf "inspectedURLChanged" [toJSVal newURL]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.requestSetDockSide Mozilla InspectorFrontendHost.requestSetDockSide documentation> 
+requestSetDockSide ::
+                   (MonadDOM m, ToJSString side) =>
+                     InspectorFrontendHost -> side -> m ()
+requestSetDockSide self side
+  = liftDOM (void (self ^. jsf "requestSetDockSide" [toJSVal side]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.setAttachedWindowHeight Mozilla InspectorFrontendHost.setAttachedWindowHeight documentation> 
+setAttachedWindowHeight ::
+                        (MonadDOM m) => InspectorFrontendHost -> Word -> m ()
+setAttachedWindowHeight self height
+  = liftDOM
+      (void (self ^. jsf "setAttachedWindowHeight" [toJSVal height]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.setAttachedWindowWidth Mozilla InspectorFrontendHost.setAttachedWindowWidth documentation> 
+setAttachedWindowWidth ::
+                       (MonadDOM m) => InspectorFrontendHost -> Word -> m ()
+setAttachedWindowWidth self width
+  = liftDOM
+      (void (self ^. jsf "setAttachedWindowWidth" [toJSVal width]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.setToolbarHeight Mozilla InspectorFrontendHost.setToolbarHeight documentation> 
+setToolbarHeight ::
+                 (MonadDOM m) => InspectorFrontendHost -> Float -> m ()
+setToolbarHeight self height
+  = liftDOM (void (self ^. jsf "setToolbarHeight" [toJSVal height]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.moveWindowBy Mozilla InspectorFrontendHost.moveWindowBy documentation> 
+moveWindowBy ::
+             (MonadDOM m) => InspectorFrontendHost -> Float -> Float -> m ()
+moveWindowBy self x y
+  = liftDOM
+      (void (self ^. jsf "moveWindowBy" [toJSVal x, toJSVal y]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.localizedStringsURL Mozilla InspectorFrontendHost.localizedStringsURL documentation> 
+localizedStringsURL ::
+                    (MonadDOM m, FromJSString result) =>
+                      InspectorFrontendHost -> m result
+localizedStringsURL self
+  = liftDOM
+      ((self ^. js "localizedStringsURL") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.debuggableType Mozilla InspectorFrontendHost.debuggableType documentation> 
+debuggableType ::
+               (MonadDOM m, FromJSString result) =>
+                 InspectorFrontendHost -> m result
+debuggableType self
+  = liftDOM ((self ^. js "debuggableType") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.copyText Mozilla InspectorFrontendHost.copyText documentation> 
+copyText ::
+         (MonadDOM m, ToJSString text) =>
+           InspectorFrontendHost -> text -> m ()
+copyText self text
+  = liftDOM (void (self ^. jsf "copyText" [toJSVal text]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.openInNewTab Mozilla InspectorFrontendHost.openInNewTab documentation> 
+openInNewTab ::
+             (MonadDOM m, ToJSString url) =>
+               InspectorFrontendHost -> url -> m ()
+openInNewTab self url
+  = liftDOM (void (self ^. jsf "openInNewTab" [toJSVal url]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.canSave Mozilla InspectorFrontendHost.canSave documentation> 
+canSave :: (MonadDOM m) => InspectorFrontendHost -> m Bool
+canSave self = liftDOM ((self ^. js "canSave") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.save Mozilla InspectorFrontendHost.save documentation> 
+save ::
+     (MonadDOM m, ToJSString url, ToJSString content) =>
+       InspectorFrontendHost -> url -> content -> Bool -> Bool -> m ()
+save self url content base64Encoded forceSaveAs
+  = liftDOM
+      (void
+         (self ^. jsf "save"
+            [toJSVal url, toJSVal content, toJSVal base64Encoded,
+             toJSVal forceSaveAs]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.append Mozilla InspectorFrontendHost.append documentation> 
+append ::
+       (MonadDOM m, ToJSString url, ToJSString content) =>
+         InspectorFrontendHost -> url -> content -> m ()
+append self url content
+  = liftDOM
+      (void (self ^. jsf "append" [toJSVal url, toJSVal content]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.close Mozilla InspectorFrontendHost.close documentation> 
+close ::
+      (MonadDOM m, ToJSString url) =>
+        InspectorFrontendHost -> url -> m ()
+close self url = liftDOM (void (self ^. jsf "close" [toJSVal url]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.platform Mozilla InspectorFrontendHost.platform documentation> 
+platform ::
+         (MonadDOM m, FromJSString result) =>
+           InspectorFrontendHost -> m result
+platform self
+  = liftDOM ((self ^. js "platform") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.port Mozilla InspectorFrontendHost.port documentation> 
+port ::
+     (MonadDOM m, FromJSString result) =>
+       InspectorFrontendHost -> m result
+port self = liftDOM ((self ^. js "port") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.showContextMenu Mozilla InspectorFrontendHost.showContextMenu documentation> 
+showContextMenu ::
+                (MonadDOM m, IsMouseEvent event) =>
+                  InspectorFrontendHost -> Maybe event -> JSVal -> m ()
+showContextMenu self event items
+  = liftDOM
+      (void
+         (self ^. jsf "showContextMenu" [toJSVal event, toJSVal items]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.dispatchEventAsContextMenuEvent Mozilla InspectorFrontendHost.dispatchEventAsContextMenuEvent documentation> 
+dispatchEventAsContextMenuEvent ::
+                                (MonadDOM m, IsEvent event) =>
+                                  InspectorFrontendHost -> Maybe event -> m ()
+dispatchEventAsContextMenuEvent self event
+  = liftDOM
+      (void
+         (self ^. jsf "dispatchEventAsContextMenuEvent" [toJSVal event]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.sendMessageToBackend Mozilla InspectorFrontendHost.sendMessageToBackend documentation> 
+sendMessageToBackend ::
+                     (MonadDOM m, ToJSString message) =>
+                       InspectorFrontendHost -> message -> m ()
+sendMessageToBackend self message
+  = liftDOM
+      (void (self ^. jsf "sendMessageToBackend" [toJSVal message]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.unbufferedLog Mozilla InspectorFrontendHost.unbufferedLog documentation> 
+unbufferedLog ::
+              (MonadDOM m, ToJSString message) =>
+                InspectorFrontendHost -> message -> m ()
+unbufferedLog self message
+  = liftDOM (void (self ^. jsf "unbufferedLog" [toJSVal message]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.isUnderTest Mozilla InspectorFrontendHost.isUnderTest documentation> 
+isUnderTest :: (MonadDOM m) => InspectorFrontendHost -> m Bool
+isUnderTest self
+  = liftDOM ((self ^. js "isUnderTest") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.beep Mozilla InspectorFrontendHost.beep documentation> 
+beep :: (MonadDOM m) => InspectorFrontendHost -> m ()
+beep self = liftDOM (void (self ^. js "beep"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.canInspectWorkers Mozilla InspectorFrontendHost.canInspectWorkers documentation> 
+canInspectWorkers ::
+                  (MonadDOM m) => InspectorFrontendHost -> m Bool
+canInspectWorkers self
+  = liftDOM ((self ^. js "canInspectWorkers") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.canSaveAs Mozilla InspectorFrontendHost.canSaveAs documentation> 
+canSaveAs :: (MonadDOM m) => InspectorFrontendHost -> m Bool
+canSaveAs self = liftDOM ((self ^. js "canSaveAs") >>= valToBool)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/InternalSettings.hs b/src/Language/Javascript/JSaddle/DOM/Generated/InternalSettings.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/InternalSettings.hs
@@ -0,0 +1,294 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.InternalSettings
+       (setTouchEventEmulationEnabled, setStandardFontFamily,
+        setSerifFontFamily, setSansSerifFontFamily, setFixedFontFamily,
+        setCursiveFontFamily, setFantasyFontFamily,
+        setPictographFontFamily, setFontFallbackPrefersPictographs,
+        setTextAutosizingEnabled, setTextAutosizingWindowSizeOverride,
+        setTextAutosizingFontScaleFactor, setCSSShapesEnabled,
+        setCanStartMedia, setShouldDisplayTrackKind,
+        shouldDisplayTrackKind, setDefaultVideoPosterURL,
+        setTimeWithoutMouseMovementBeforeHidingControls,
+        setMediaTypeOverride, setPluginReplacementEnabled,
+        setEditingBehavior, setShouldConvertPositionStyleOnCopy,
+        setLangAttributeAwareFormControlUIEnabled,
+        setStorageBlockingPolicy, setImagesEnabled,
+        setUseLegacyBackgroundSizeShorthandBehavior,
+        setAutoscrollForDragAndDropEnabled,
+        setBackgroundShouldExtendBeyondPage,
+        setScrollingTreeIncludesFrames, setMinimumTimerInterval,
+        InternalSettings, castToInternalSettings, gTypeInternalSettings)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InternalSettings.setTouchEventEmulationEnabled Mozilla InternalSettings.setTouchEventEmulationEnabled documentation> 
+setTouchEventEmulationEnabled ::
+                              (MonadDOM m) => InternalSettings -> Bool -> m ()
+setTouchEventEmulationEnabled self enabled
+  = liftDOM
+      (void
+         (self ^. jsf "setTouchEventEmulationEnabled" [toJSVal enabled]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InternalSettings.setStandardFontFamily Mozilla InternalSettings.setStandardFontFamily documentation> 
+setStandardFontFamily ::
+                      (MonadDOM m, ToJSString family', ToJSString script) =>
+                        InternalSettings -> family' -> script -> m ()
+setStandardFontFamily self family' script
+  = liftDOM
+      (void
+         (self ^. jsf "setStandardFontFamily"
+            [toJSVal family', toJSVal script]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InternalSettings.setSerifFontFamily Mozilla InternalSettings.setSerifFontFamily documentation> 
+setSerifFontFamily ::
+                   (MonadDOM m, ToJSString family', ToJSString script) =>
+                     InternalSettings -> family' -> script -> m ()
+setSerifFontFamily self family' script
+  = liftDOM
+      (void
+         (self ^. jsf "setSerifFontFamily"
+            [toJSVal family', toJSVal script]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InternalSettings.setSansSerifFontFamily Mozilla InternalSettings.setSansSerifFontFamily documentation> 
+setSansSerifFontFamily ::
+                       (MonadDOM m, ToJSString family', ToJSString script) =>
+                         InternalSettings -> family' -> script -> m ()
+setSansSerifFontFamily self family' script
+  = liftDOM
+      (void
+         (self ^. jsf "setSansSerifFontFamily"
+            [toJSVal family', toJSVal script]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InternalSettings.setFixedFontFamily Mozilla InternalSettings.setFixedFontFamily documentation> 
+setFixedFontFamily ::
+                   (MonadDOM m, ToJSString family', ToJSString script) =>
+                     InternalSettings -> family' -> script -> m ()
+setFixedFontFamily self family' script
+  = liftDOM
+      (void
+         (self ^. jsf "setFixedFontFamily"
+            [toJSVal family', toJSVal script]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InternalSettings.setCursiveFontFamily Mozilla InternalSettings.setCursiveFontFamily documentation> 
+setCursiveFontFamily ::
+                     (MonadDOM m, ToJSString family', ToJSString script) =>
+                       InternalSettings -> family' -> script -> m ()
+setCursiveFontFamily self family' script
+  = liftDOM
+      (void
+         (self ^. jsf "setCursiveFontFamily"
+            [toJSVal family', toJSVal script]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InternalSettings.setFantasyFontFamily Mozilla InternalSettings.setFantasyFontFamily documentation> 
+setFantasyFontFamily ::
+                     (MonadDOM m, ToJSString family', ToJSString script) =>
+                       InternalSettings -> family' -> script -> m ()
+setFantasyFontFamily self family' script
+  = liftDOM
+      (void
+         (self ^. jsf "setFantasyFontFamily"
+            [toJSVal family', toJSVal script]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InternalSettings.setPictographFontFamily Mozilla InternalSettings.setPictographFontFamily documentation> 
+setPictographFontFamily ::
+                        (MonadDOM m, ToJSString family', ToJSString script) =>
+                          InternalSettings -> family' -> script -> m ()
+setPictographFontFamily self family' script
+  = liftDOM
+      (void
+         (self ^. jsf "setPictographFontFamily"
+            [toJSVal family', toJSVal script]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InternalSettings.setFontFallbackPrefersPictographs Mozilla InternalSettings.setFontFallbackPrefersPictographs documentation> 
+setFontFallbackPrefersPictographs ::
+                                  (MonadDOM m) => InternalSettings -> Bool -> m ()
+setFontFallbackPrefersPictographs self preferPictographs
+  = liftDOM
+      (void
+         (self ^. jsf "setFontFallbackPrefersPictographs"
+            [toJSVal preferPictographs]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InternalSettings.setTextAutosizingEnabled Mozilla InternalSettings.setTextAutosizingEnabled documentation> 
+setTextAutosizingEnabled ::
+                         (MonadDOM m) => InternalSettings -> Bool -> m ()
+setTextAutosizingEnabled self enabled
+  = liftDOM
+      (void (self ^. jsf "setTextAutosizingEnabled" [toJSVal enabled]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InternalSettings.setTextAutosizingWindowSizeOverride Mozilla InternalSettings.setTextAutosizingWindowSizeOverride documentation> 
+setTextAutosizingWindowSizeOverride ::
+                                    (MonadDOM m) => InternalSettings -> Int -> Int -> m ()
+setTextAutosizingWindowSizeOverride self width height
+  = liftDOM
+      (void
+         (self ^. jsf "setTextAutosizingWindowSizeOverride"
+            [toJSVal width, toJSVal height]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InternalSettings.setTextAutosizingFontScaleFactor Mozilla InternalSettings.setTextAutosizingFontScaleFactor documentation> 
+setTextAutosizingFontScaleFactor ::
+                                 (MonadDOM m) => InternalSettings -> Float -> m ()
+setTextAutosizingFontScaleFactor self fontScaleFactor
+  = liftDOM
+      (void
+         (self ^. jsf "setTextAutosizingFontScaleFactor"
+            [toJSVal fontScaleFactor]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InternalSettings.setCSSShapesEnabled Mozilla InternalSettings.setCSSShapesEnabled documentation> 
+setCSSShapesEnabled ::
+                    (MonadDOM m) => InternalSettings -> Bool -> m ()
+setCSSShapesEnabled self enabled
+  = liftDOM
+      (void (self ^. jsf "setCSSShapesEnabled" [toJSVal enabled]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InternalSettings.setCanStartMedia Mozilla InternalSettings.setCanStartMedia documentation> 
+setCanStartMedia ::
+                 (MonadDOM m) => InternalSettings -> Bool -> m ()
+setCanStartMedia self enabled
+  = liftDOM (void (self ^. jsf "setCanStartMedia" [toJSVal enabled]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InternalSettings.setShouldDisplayTrackKind Mozilla InternalSettings.setShouldDisplayTrackKind documentation> 
+setShouldDisplayTrackKind ::
+                          (MonadDOM m, ToJSString kind) =>
+                            InternalSettings -> kind -> Bool -> m ()
+setShouldDisplayTrackKind self kind enabled
+  = liftDOM
+      (void
+         (self ^. jsf "setShouldDisplayTrackKind"
+            [toJSVal kind, toJSVal enabled]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InternalSettings.shouldDisplayTrackKind Mozilla InternalSettings.shouldDisplayTrackKind documentation> 
+shouldDisplayTrackKind ::
+                       (MonadDOM m, ToJSString trackKind) =>
+                         InternalSettings -> trackKind -> m Bool
+shouldDisplayTrackKind self trackKind
+  = liftDOM
+      ((self ^. jsf "shouldDisplayTrackKind" [toJSVal trackKind]) >>=
+         valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InternalSettings.setDefaultVideoPosterURL Mozilla InternalSettings.setDefaultVideoPosterURL documentation> 
+setDefaultVideoPosterURL ::
+                         (MonadDOM m, ToJSString poster) =>
+                           InternalSettings -> poster -> m ()
+setDefaultVideoPosterURL self poster
+  = liftDOM
+      (void (self ^. jsf "setDefaultVideoPosterURL" [toJSVal poster]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InternalSettings.setTimeWithoutMouseMovementBeforeHidingControls Mozilla InternalSettings.setTimeWithoutMouseMovementBeforeHidingControls documentation> 
+setTimeWithoutMouseMovementBeforeHidingControls ::
+                                                (MonadDOM m) => InternalSettings -> Double -> m ()
+setTimeWithoutMouseMovementBeforeHidingControls self time
+  = liftDOM
+      (void
+         (self ^. jsf "setTimeWithoutMouseMovementBeforeHidingControls"
+            [toJSVal time]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InternalSettings.setMediaTypeOverride Mozilla InternalSettings.setMediaTypeOverride documentation> 
+setMediaTypeOverride ::
+                     (MonadDOM m, ToJSString mediaTypeOverride) =>
+                       InternalSettings -> mediaTypeOverride -> m ()
+setMediaTypeOverride self mediaTypeOverride
+  = liftDOM
+      (void
+         (self ^. jsf "setMediaTypeOverride" [toJSVal mediaTypeOverride]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InternalSettings.setPluginReplacementEnabled Mozilla InternalSettings.setPluginReplacementEnabled documentation> 
+setPluginReplacementEnabled ::
+                            (MonadDOM m) => InternalSettings -> Bool -> m ()
+setPluginReplacementEnabled self enabled
+  = liftDOM
+      (void
+         (self ^. jsf "setPluginReplacementEnabled" [toJSVal enabled]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InternalSettings.setEditingBehavior Mozilla InternalSettings.setEditingBehavior documentation> 
+setEditingBehavior ::
+                   (MonadDOM m, ToJSString behavior) =>
+                     InternalSettings -> behavior -> m ()
+setEditingBehavior self behavior
+  = liftDOM
+      (void (self ^. jsf "setEditingBehavior" [toJSVal behavior]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InternalSettings.setShouldConvertPositionStyleOnCopy Mozilla InternalSettings.setShouldConvertPositionStyleOnCopy documentation> 
+setShouldConvertPositionStyleOnCopy ::
+                                    (MonadDOM m) => InternalSettings -> Bool -> m ()
+setShouldConvertPositionStyleOnCopy self convert
+  = liftDOM
+      (void
+         (self ^. jsf "setShouldConvertPositionStyleOnCopy"
+            [toJSVal convert]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InternalSettings.setLangAttributeAwareFormControlUIEnabled Mozilla InternalSettings.setLangAttributeAwareFormControlUIEnabled documentation> 
+setLangAttributeAwareFormControlUIEnabled ::
+                                          (MonadDOM m) => InternalSettings -> Bool -> m ()
+setLangAttributeAwareFormControlUIEnabled self enabled
+  = liftDOM
+      (void
+         (self ^. jsf "setLangAttributeAwareFormControlUIEnabled"
+            [toJSVal enabled]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InternalSettings.setStorageBlockingPolicy Mozilla InternalSettings.setStorageBlockingPolicy documentation> 
+setStorageBlockingPolicy ::
+                         (MonadDOM m, ToJSString policy) =>
+                           InternalSettings -> policy -> m ()
+setStorageBlockingPolicy self policy
+  = liftDOM
+      (void (self ^. jsf "setStorageBlockingPolicy" [toJSVal policy]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InternalSettings.setImagesEnabled Mozilla InternalSettings.setImagesEnabled documentation> 
+setImagesEnabled ::
+                 (MonadDOM m) => InternalSettings -> Bool -> m ()
+setImagesEnabled self enabled
+  = liftDOM (void (self ^. jsf "setImagesEnabled" [toJSVal enabled]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InternalSettings.setUseLegacyBackgroundSizeShorthandBehavior Mozilla InternalSettings.setUseLegacyBackgroundSizeShorthandBehavior documentation> 
+setUseLegacyBackgroundSizeShorthandBehavior ::
+                                            (MonadDOM m) => InternalSettings -> Bool -> m ()
+setUseLegacyBackgroundSizeShorthandBehavior self enabled
+  = liftDOM
+      (void
+         (self ^. jsf "setUseLegacyBackgroundSizeShorthandBehavior"
+            [toJSVal enabled]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InternalSettings.setAutoscrollForDragAndDropEnabled Mozilla InternalSettings.setAutoscrollForDragAndDropEnabled documentation> 
+setAutoscrollForDragAndDropEnabled ::
+                                   (MonadDOM m) => InternalSettings -> Bool -> m ()
+setAutoscrollForDragAndDropEnabled self enabled
+  = liftDOM
+      (void
+         (self ^. jsf "setAutoscrollForDragAndDropEnabled"
+            [toJSVal enabled]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InternalSettings.setBackgroundShouldExtendBeyondPage Mozilla InternalSettings.setBackgroundShouldExtendBeyondPage documentation> 
+setBackgroundShouldExtendBeyondPage ::
+                                    (MonadDOM m) => InternalSettings -> Bool -> m ()
+setBackgroundShouldExtendBeyondPage self hasExtendedBackground
+  = liftDOM
+      (void
+         (self ^. jsf "setBackgroundShouldExtendBeyondPage"
+            [toJSVal hasExtendedBackground]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InternalSettings.setScrollingTreeIncludesFrames Mozilla InternalSettings.setScrollingTreeIncludesFrames documentation> 
+setScrollingTreeIncludesFrames ::
+                               (MonadDOM m) => InternalSettings -> Bool -> m ()
+setScrollingTreeIncludesFrames self enabled
+  = liftDOM
+      (void
+         (self ^. jsf "setScrollingTreeIncludesFrames" [toJSVal enabled]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InternalSettings.setMinimumTimerInterval Mozilla InternalSettings.setMinimumTimerInterval documentation> 
+setMinimumTimerInterval ::
+                        (MonadDOM m) => InternalSettings -> Double -> m ()
+setMinimumTimerInterval self intervalInSeconds
+  = liftDOM
+      (void
+         (self ^. jsf "setMinimumTimerInterval"
+            [toJSVal intervalInSeconds]))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/Internals.hs b/src/Language/Javascript/JSaddle/DOM/Generated/Internals.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/Internals.hs
@@ -0,0 +1,1458 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.Internals
+       (address, nodeNeedsStyleRecalc, description,
+        hasPausedImageAnimations, elementRenderTreeAsText, isPreloaded,
+        isLoadingFromMemoryCache, xhrResponseSource, clearMemoryCache,
+        pruneMemoryCacheToSize, memoryCacheSize, clearPageCache,
+        pageCacheSize, computedStyleIncludingVisitedInfo, ensureShadowRoot,
+        createShadowRoot, shadowRoot, shadowRootType, includerFor,
+        shadowPseudoId, setShadowPseudoId, treeScopeRootNode,
+        parentTreeScope, lastSpatialNavigationCandidateCount,
+        numberOfActiveAnimations, suspendAnimations, resumeAnimations,
+        animationsAreSuspended, pauseAnimationAtTimeOnElement,
+        pauseAnimationAtTimeOnPseudoElement,
+        pauseTransitionAtTimeOnElement,
+        pauseTransitionAtTimeOnPseudoElement, attached, visiblePlaceholder,
+        selectColorInColorChooser, formControlStateOfPreviousHistoryItem,
+        setFormControlStateOfPreviousHistoryItem, absoluteCaretBounds,
+        boundingBox, inspectorHighlightRects, inspectorHighlightObject,
+        markerCountForNode, markerRangeForNode, markerDescriptionForNode,
+        addTextMatchMarker, setMarkedTextMatchesAreHighlighted,
+        invalidateFontCache, setScrollViewPosition, setPagination,
+        configurationForViewport, wasLastChangeUserEdit,
+        elementShouldAutoComplete, setEditingValue, setAutofilled,
+        countMatchesForText, paintControlTints, scrollElementToRect,
+        rangeFromLocationAndLength, locationFromRange, lengthFromRange,
+        rangeAsText, subrange, rangeForDictionaryLookupAtLocation,
+        setDelegatesScrolling, lastSpellCheckRequestSequence,
+        lastSpellCheckProcessedSequence, userPreferredLanguages,
+        setUserPreferredLanguages, wheelEventHandlerCount,
+        touchEventHandlerCount, nodesFromRect, parserMetaData,
+        updateEditorUINowIfScheduled, hasSpellingMarker, hasGrammarMarker,
+        hasAutocorrectedMarker, setContinuousSpellCheckingEnabled,
+        setAutomaticQuoteSubstitutionEnabled,
+        setAutomaticLinkDetectionEnabled,
+        setAutomaticDashSubstitutionEnabled,
+        setAutomaticTextReplacementEnabled,
+        setAutomaticSpellingCorrectionEnabled, isOverwriteModeEnabled,
+        toggleOverwriteModeEnabled, numberOfScrollableAreas,
+        isPageBoxVisible, layerTreeAsText, scrollingStateTreeAsText,
+        mainThreadScrollingReasons, nonFastScrollableRects,
+        repaintRectsAsText, garbageCollectDocumentResources,
+        allowRoundingHacks, insertAuthorCSS, insertUserCSS,
+        setBatteryStatus, setDeviceProximity, numberOfLiveNodes,
+        numberOfLiveDocuments, consoleMessageArgumentCounts,
+        openDummyInspectorFrontend, closeDummyInspectorFrontend,
+        setJavaScriptProfilingEnabled, setInspectorIsUnderTest,
+        counterValue, pageNumber, shortcutIconURLs, allIconURLs,
+        numberOfPages, pageProperty, pageSizeAndMarginsInPixels,
+        setPageScaleFactor, setPageZoomFactor, setHeaderHeight,
+        setFooterHeight, setTopContentInset,
+        webkitWillEnterFullScreenForElement,
+        webkitDidEnterFullScreenForElement,
+        webkitWillExitFullScreenForElement,
+        webkitDidExitFullScreenForElement, setApplicationCacheOriginQuota,
+        registerURLSchemeAsBypassingContentSecurityPolicy,
+        removeURLSchemeRegisteredAsBypassingContentSecurityPolicy,
+        mallocStatistics, typeConversions, memoryInfo,
+        getReferencedFilePaths, startTrackingRepaints,
+        stopTrackingRepaints, isTimerThrottled,
+        updateLayoutIgnorePendingStylesheetsAndRunPostLayoutTasks,
+        getCurrentCursorInfo, markerTextForListItem, toolTipFromElement,
+        deserializeBuffer, serializeObject, setUsesOverlayScrollbars,
+        forceReload, simulateAudioInterruption,
+        mediaElementHasCharacteristic, initializeMockCDM,
+        enableMockSpeechSynthesizer, getImageSourceURL,
+        captionsStyleSheetOverride, setCaptionsStyleSheetOverride,
+        setPrimaryAudioTrackLanguageOverride, setCaptionDisplayMode,
+        createTimeRanges, closestTimeToTimeRanges, isSelectPopupVisible,
+        isVibrating, isPluginUnavailabilityIndicatorObscured,
+        isPluginSnapshotted, selectionBounds, initializeMockMediaSource,
+        bufferedSamplesForTrackID, beginMediaSessionInterruption,
+        endMediaSessionInterruption, applicationWillEnterForeground,
+        applicationWillEnterBackground, setMediaSessionRestrictions,
+        postRemoteControlCommand, simulateSystemSleep, simulateSystemWake,
+        elementIsBlockingDisplaySleep, installMockPageOverlay,
+        pageOverlayLayerTreeAsText, setPageMuted, isPagePlayingAudio,
+        pattern LAYER_TREE_INCLUDES_VISIBLE_RECTS,
+        pattern LAYER_TREE_INCLUDES_TILE_CACHES,
+        pattern LAYER_TREE_INCLUDES_REPAINT_RECTS,
+        pattern LAYER_TREE_INCLUDES_PAINTING_PHASES,
+        pattern LAYER_TREE_INCLUDES_CONTENT_LAYERS, getSettings,
+        getWorkerThreadCount, getConsoleProfiles, Internals,
+        castToInternals, gTypeInternals)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.address Mozilla Internals.address documentation> 
+address ::
+        (MonadDOM m, IsNode node, FromJSString result) =>
+          Internals -> Maybe node -> m result
+address self node
+  = liftDOM
+      ((self ^. jsf "address" [toJSVal node]) >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.nodeNeedsStyleRecalc Mozilla Internals.nodeNeedsStyleRecalc documentation> 
+nodeNeedsStyleRecalc ::
+                     (MonadDOM m, IsNode node) => Internals -> Maybe node -> m Bool
+nodeNeedsStyleRecalc self node
+  = liftDOM
+      ((self ^. jsf "nodeNeedsStyleRecalc" [toJSVal node]) >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.description Mozilla Internals.description documentation> 
+description ::
+            (MonadDOM m, FromJSString result) => Internals -> JSVal -> m result
+description self value
+  = liftDOM
+      ((self ^. jsf "description" [toJSVal value]) >>=
+         fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.hasPausedImageAnimations Mozilla Internals.hasPausedImageAnimations documentation> 
+hasPausedImageAnimations ::
+                         (MonadDOM m, IsElement element) =>
+                           Internals -> Maybe element -> m Bool
+hasPausedImageAnimations self element
+  = liftDOM
+      ((self ^. jsf "hasPausedImageAnimations" [toJSVal element]) >>=
+         valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.elementRenderTreeAsText Mozilla Internals.elementRenderTreeAsText documentation> 
+elementRenderTreeAsText ::
+                        (MonadDOM m, IsElement element, FromJSString result) =>
+                          Internals -> Maybe element -> m result
+elementRenderTreeAsText self element
+  = liftDOM
+      ((self ^. jsf "elementRenderTreeAsText" [toJSVal element]) >>=
+         fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.isPreloaded Mozilla Internals.isPreloaded documentation> 
+isPreloaded ::
+            (MonadDOM m, ToJSString url) => Internals -> url -> m Bool
+isPreloaded self url
+  = liftDOM ((self ^. jsf "isPreloaded" [toJSVal url]) >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.isLoadingFromMemoryCache Mozilla Internals.isLoadingFromMemoryCache documentation> 
+isLoadingFromMemoryCache ::
+                         (MonadDOM m, ToJSString url) => Internals -> url -> m Bool
+isLoadingFromMemoryCache self url
+  = liftDOM
+      ((self ^. jsf "isLoadingFromMemoryCache" [toJSVal url]) >>=
+         valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.xhrResponseSource Mozilla Internals.xhrResponseSource documentation> 
+xhrResponseSource ::
+                  (MonadDOM m, FromJSString result) =>
+                    Internals -> Maybe XMLHttpRequest -> m result
+xhrResponseSource self xhr
+  = liftDOM
+      ((self ^. jsf "xhrResponseSource" [toJSVal xhr]) >>=
+         fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.clearMemoryCache Mozilla Internals.clearMemoryCache documentation> 
+clearMemoryCache :: (MonadDOM m) => Internals -> m ()
+clearMemoryCache self
+  = liftDOM (void (self ^. js "clearMemoryCache"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.pruneMemoryCacheToSize Mozilla Internals.pruneMemoryCacheToSize documentation> 
+pruneMemoryCacheToSize :: (MonadDOM m) => Internals -> Int -> m ()
+pruneMemoryCacheToSize self size
+  = liftDOM
+      (void (self ^. jsf "pruneMemoryCacheToSize" [toJSVal size]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.memoryCacheSize Mozilla Internals.memoryCacheSize documentation> 
+memoryCacheSize :: (MonadDOM m) => Internals -> m Int
+memoryCacheSize self
+  = liftDOM
+      (round <$> ((self ^. js "memoryCacheSize") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.clearPageCache Mozilla Internals.clearPageCache documentation> 
+clearPageCache :: (MonadDOM m) => Internals -> m ()
+clearPageCache self = liftDOM (void (self ^. js "clearPageCache"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.pageCacheSize Mozilla Internals.pageCacheSize documentation> 
+pageCacheSize :: (MonadDOM m) => Internals -> m Word
+pageCacheSize self
+  = liftDOM
+      (round <$> ((self ^. js "pageCacheSize") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.computedStyleIncludingVisitedInfo Mozilla Internals.computedStyleIncludingVisitedInfo documentation> 
+computedStyleIncludingVisitedInfo ::
+                                  (MonadDOM m, IsNode node) =>
+                                    Internals -> Maybe node -> m (Maybe CSSStyleDeclaration)
+computedStyleIncludingVisitedInfo self node
+  = liftDOM
+      ((self ^. jsf "computedStyleIncludingVisitedInfo" [toJSVal node])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.ensureShadowRoot Mozilla Internals.ensureShadowRoot documentation> 
+ensureShadowRoot ::
+                 (MonadDOM m, IsElement host) =>
+                   Internals -> Maybe host -> m (Maybe Node)
+ensureShadowRoot self host
+  = liftDOM
+      ((self ^. jsf "ensureShadowRoot" [toJSVal host]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.createShadowRoot Mozilla Internals.createShadowRoot documentation> 
+createShadowRoot ::
+                 (MonadDOM m, IsElement host) =>
+                   Internals -> Maybe host -> m (Maybe Node)
+createShadowRoot self host
+  = liftDOM
+      ((self ^. jsf "createShadowRoot" [toJSVal host]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.shadowRoot Mozilla Internals.shadowRoot documentation> 
+shadowRoot ::
+           (MonadDOM m, IsElement host) =>
+             Internals -> Maybe host -> m (Maybe Node)
+shadowRoot self host
+  = liftDOM ((self ^. jsf "shadowRoot" [toJSVal host]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.shadowRootType Mozilla Internals.shadowRootType documentation> 
+shadowRootType ::
+               (MonadDOM m, IsNode root, FromJSString result) =>
+                 Internals -> Maybe root -> m result
+shadowRootType self root
+  = liftDOM
+      ((self ^. jsf "shadowRootType" [toJSVal root]) >>=
+         fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.includerFor Mozilla Internals.includerFor documentation> 
+includerFor ::
+            (MonadDOM m, IsNode node) =>
+              Internals -> Maybe node -> m (Maybe Element)
+includerFor self node
+  = liftDOM
+      ((self ^. jsf "includerFor" [toJSVal node]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.shadowPseudoId Mozilla Internals.shadowPseudoId documentation> 
+shadowPseudoId ::
+               (MonadDOM m, IsElement element, FromJSString result) =>
+                 Internals -> Maybe element -> m result
+shadowPseudoId self element
+  = liftDOM
+      ((self ^. jsf "shadowPseudoId" [toJSVal element]) >>=
+         fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.setShadowPseudoId Mozilla Internals.setShadowPseudoId documentation> 
+setShadowPseudoId ::
+                  (MonadDOM m, IsElement element, ToJSString id) =>
+                    Internals -> Maybe element -> id -> m ()
+setShadowPseudoId self element id
+  = liftDOM
+      (void
+         (self ^. jsf "setShadowPseudoId" [toJSVal element, toJSVal id]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.treeScopeRootNode Mozilla Internals.treeScopeRootNode documentation> 
+treeScopeRootNode ::
+                  (MonadDOM m, IsNode node) =>
+                    Internals -> Maybe node -> m (Maybe Node)
+treeScopeRootNode self node
+  = liftDOM
+      ((self ^. jsf "treeScopeRootNode" [toJSVal node]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.parentTreeScope Mozilla Internals.parentTreeScope documentation> 
+parentTreeScope ::
+                (MonadDOM m, IsNode node) =>
+                  Internals -> Maybe node -> m (Maybe Node)
+parentTreeScope self node
+  = liftDOM
+      ((self ^. jsf "parentTreeScope" [toJSVal node]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.lastSpatialNavigationCandidateCount Mozilla Internals.lastSpatialNavigationCandidateCount documentation> 
+lastSpatialNavigationCandidateCount ::
+                                    (MonadDOM m) => Internals -> m Word
+lastSpatialNavigationCandidateCount self
+  = liftDOM
+      (round <$>
+         ((self ^. js "lastSpatialNavigationCandidateCount") >>=
+            valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.numberOfActiveAnimations Mozilla Internals.numberOfActiveAnimations documentation> 
+numberOfActiveAnimations :: (MonadDOM m) => Internals -> m Word
+numberOfActiveAnimations self
+  = liftDOM
+      (round <$>
+         ((self ^. js "numberOfActiveAnimations") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.suspendAnimations Mozilla Internals.suspendAnimations documentation> 
+suspendAnimations :: (MonadDOM m) => Internals -> m ()
+suspendAnimations self
+  = liftDOM (void (self ^. js "suspendAnimations"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.resumeAnimations Mozilla Internals.resumeAnimations documentation> 
+resumeAnimations :: (MonadDOM m) => Internals -> m ()
+resumeAnimations self
+  = liftDOM (void (self ^. js "resumeAnimations"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.animationsAreSuspended Mozilla Internals.animationsAreSuspended documentation> 
+animationsAreSuspended :: (MonadDOM m) => Internals -> m Bool
+animationsAreSuspended self
+  = liftDOM ((self ^. js "animationsAreSuspended") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.pauseAnimationAtTimeOnElement Mozilla Internals.pauseAnimationAtTimeOnElement documentation> 
+pauseAnimationAtTimeOnElement ::
+                              (MonadDOM m, ToJSString animationName, IsElement element) =>
+                                Internals -> animationName -> Double -> Maybe element -> m Bool
+pauseAnimationAtTimeOnElement self animationName pauseTime element
+  = liftDOM
+      ((self ^. jsf "pauseAnimationAtTimeOnElement"
+          [toJSVal animationName, toJSVal pauseTime, toJSVal element])
+         >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.pauseAnimationAtTimeOnPseudoElement Mozilla Internals.pauseAnimationAtTimeOnPseudoElement documentation> 
+pauseAnimationAtTimeOnPseudoElement ::
+                                    (MonadDOM m, ToJSString animationName, IsElement element,
+                                     ToJSString pseudoId) =>
+                                      Internals ->
+                                        animationName ->
+                                          Double -> Maybe element -> pseudoId -> m Bool
+pauseAnimationAtTimeOnPseudoElement self animationName pauseTime
+  element pseudoId
+  = liftDOM
+      ((self ^. jsf "pauseAnimationAtTimeOnPseudoElement"
+          [toJSVal animationName, toJSVal pauseTime, toJSVal element,
+           toJSVal pseudoId])
+         >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.pauseTransitionAtTimeOnElement Mozilla Internals.pauseTransitionAtTimeOnElement documentation> 
+pauseTransitionAtTimeOnElement ::
+                               (MonadDOM m, ToJSString propertyName, IsElement element) =>
+                                 Internals -> propertyName -> Double -> Maybe element -> m Bool
+pauseTransitionAtTimeOnElement self propertyName pauseTime element
+  = liftDOM
+      ((self ^. jsf "pauseTransitionAtTimeOnElement"
+          [toJSVal propertyName, toJSVal pauseTime, toJSVal element])
+         >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.pauseTransitionAtTimeOnPseudoElement Mozilla Internals.pauseTransitionAtTimeOnPseudoElement documentation> 
+pauseTransitionAtTimeOnPseudoElement ::
+                                     (MonadDOM m, ToJSString property, IsElement element,
+                                      ToJSString pseudoId) =>
+                                       Internals ->
+                                         property -> Double -> Maybe element -> pseudoId -> m Bool
+pauseTransitionAtTimeOnPseudoElement self property pauseTime
+  element pseudoId
+  = liftDOM
+      ((self ^. jsf "pauseTransitionAtTimeOnPseudoElement"
+          [toJSVal property, toJSVal pauseTime, toJSVal element,
+           toJSVal pseudoId])
+         >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.attached Mozilla Internals.attached documentation> 
+attached ::
+         (MonadDOM m, IsNode node) => Internals -> Maybe node -> m Bool
+attached self node
+  = liftDOM ((self ^. jsf "attached" [toJSVal node]) >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.visiblePlaceholder Mozilla Internals.visiblePlaceholder documentation> 
+visiblePlaceholder ::
+                   (MonadDOM m, IsElement element, FromJSString result) =>
+                     Internals -> Maybe element -> m result
+visiblePlaceholder self element
+  = liftDOM
+      ((self ^. jsf "visiblePlaceholder" [toJSVal element]) >>=
+         fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.selectColorInColorChooser Mozilla Internals.selectColorInColorChooser documentation> 
+selectColorInColorChooser ::
+                          (MonadDOM m, IsElement element, ToJSString colorValue) =>
+                            Internals -> Maybe element -> colorValue -> m ()
+selectColorInColorChooser self element colorValue
+  = liftDOM
+      (void
+         (self ^. jsf "selectColorInColorChooser"
+            [toJSVal element, toJSVal colorValue]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.formControlStateOfPreviousHistoryItem Mozilla Internals.formControlStateOfPreviousHistoryItem documentation> 
+formControlStateOfPreviousHistoryItem ::
+                                      (MonadDOM m, FromJSString result) => Internals -> m [result]
+formControlStateOfPreviousHistoryItem self
+  = liftDOM
+      ((self ^. js "formControlStateOfPreviousHistoryItem") >>=
+         fromJSArrayUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.setFormControlStateOfPreviousHistoryItem Mozilla Internals.setFormControlStateOfPreviousHistoryItem documentation> 
+setFormControlStateOfPreviousHistoryItem ::
+                                         (MonadDOM m, ToJSString values) =>
+                                           Internals -> [values] -> m ()
+setFormControlStateOfPreviousHistoryItem self values
+  = liftDOM
+      (void
+         (self ^. jsf "setFormControlStateOfPreviousHistoryItem"
+            [toJSVal (array values)]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.absoluteCaretBounds Mozilla Internals.absoluteCaretBounds documentation> 
+absoluteCaretBounds ::
+                    (MonadDOM m) => Internals -> m (Maybe ClientRect)
+absoluteCaretBounds self
+  = liftDOM ((self ^. js "absoluteCaretBounds") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.boundingBox Mozilla Internals.boundingBox documentation> 
+boundingBox ::
+            (MonadDOM m, IsElement element) =>
+              Internals -> Maybe element -> m (Maybe ClientRect)
+boundingBox self element
+  = liftDOM
+      ((self ^. jsf "boundingBox" [toJSVal element]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.inspectorHighlightRects Mozilla Internals.inspectorHighlightRects documentation> 
+inspectorHighlightRects ::
+                        (MonadDOM m) => Internals -> m (Maybe ClientRectList)
+inspectorHighlightRects self
+  = liftDOM ((self ^. js "inspectorHighlightRects") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.inspectorHighlightObject Mozilla Internals.inspectorHighlightObject documentation> 
+inspectorHighlightObject ::
+                         (MonadDOM m, FromJSString result) => Internals -> m result
+inspectorHighlightObject self
+  = liftDOM
+      ((self ^. js "inspectorHighlightObject") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.markerCountForNode Mozilla Internals.markerCountForNode documentation> 
+markerCountForNode ::
+                   (MonadDOM m, IsNode node, ToJSString markerType) =>
+                     Internals -> Maybe node -> markerType -> m Word
+markerCountForNode self node markerType
+  = liftDOM
+      (round <$>
+         ((self ^. jsf "markerCountForNode"
+             [toJSVal node, toJSVal markerType])
+            >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.markerRangeForNode Mozilla Internals.markerRangeForNode documentation> 
+markerRangeForNode ::
+                   (MonadDOM m, IsNode node, ToJSString markerType) =>
+                     Internals -> Maybe node -> markerType -> Word -> m (Maybe Range)
+markerRangeForNode self node markerType index
+  = liftDOM
+      ((self ^. jsf "markerRangeForNode"
+          [toJSVal node, toJSVal markerType, toJSVal index])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.markerDescriptionForNode Mozilla Internals.markerDescriptionForNode documentation> 
+markerDescriptionForNode ::
+                         (MonadDOM m, IsNode node, ToJSString markerType,
+                          FromJSString result) =>
+                           Internals -> Maybe node -> markerType -> Word -> m result
+markerDescriptionForNode self node markerType index
+  = liftDOM
+      ((self ^. jsf "markerDescriptionForNode"
+          [toJSVal node, toJSVal markerType, toJSVal index])
+         >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.addTextMatchMarker Mozilla Internals.addTextMatchMarker documentation> 
+addTextMatchMarker ::
+                   (MonadDOM m) => Internals -> Maybe Range -> Bool -> m ()
+addTextMatchMarker self range isActive
+  = liftDOM
+      (void
+         (self ^. jsf "addTextMatchMarker"
+            [toJSVal range, toJSVal isActive]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.setMarkedTextMatchesAreHighlighted Mozilla Internals.setMarkedTextMatchesAreHighlighted documentation> 
+setMarkedTextMatchesAreHighlighted ::
+                                   (MonadDOM m) => Internals -> Bool -> m ()
+setMarkedTextMatchesAreHighlighted self flag
+  = liftDOM
+      (void
+         (self ^. jsf "setMarkedTextMatchesAreHighlighted" [toJSVal flag]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.invalidateFontCache Mozilla Internals.invalidateFontCache documentation> 
+invalidateFontCache :: (MonadDOM m) => Internals -> m ()
+invalidateFontCache self
+  = liftDOM (void (self ^. js "invalidateFontCache"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.setScrollViewPosition Mozilla Internals.setScrollViewPosition documentation> 
+setScrollViewPosition ::
+                      (MonadDOM m) => Internals -> Int -> Int -> m ()
+setScrollViewPosition self x y
+  = liftDOM
+      (void (self ^. jsf "setScrollViewPosition" [toJSVal x, toJSVal y]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.setPagination Mozilla Internals.setPagination documentation> 
+setPagination ::
+              (MonadDOM m, ToJSString mode) =>
+                Internals -> mode -> Int -> Int -> m ()
+setPagination self mode gap pageLength
+  = liftDOM
+      (void
+         (self ^. jsf "setPagination"
+            [toJSVal mode, toJSVal gap, toJSVal pageLength]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.configurationForViewport Mozilla Internals.configurationForViewport documentation> 
+configurationForViewport ::
+                         (MonadDOM m, FromJSString result) =>
+                           Internals -> Float -> Int -> Int -> Int -> Int -> m result
+configurationForViewport self devicePixelRatio deviceWidth
+  deviceHeight availableWidth availableHeight
+  = liftDOM
+      ((self ^. jsf "configurationForViewport"
+          [toJSVal devicePixelRatio, toJSVal deviceWidth,
+           toJSVal deviceHeight, toJSVal availableWidth,
+           toJSVal availableHeight])
+         >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.wasLastChangeUserEdit Mozilla Internals.wasLastChangeUserEdit documentation> 
+wasLastChangeUserEdit ::
+                      (MonadDOM m, IsElement textField) =>
+                        Internals -> Maybe textField -> m Bool
+wasLastChangeUserEdit self textField
+  = liftDOM
+      ((self ^. jsf "wasLastChangeUserEdit" [toJSVal textField]) >>=
+         valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.elementShouldAutoComplete Mozilla Internals.elementShouldAutoComplete documentation> 
+elementShouldAutoComplete ::
+                          (MonadDOM m, IsElement inputElement) =>
+                            Internals -> Maybe inputElement -> m Bool
+elementShouldAutoComplete self inputElement
+  = liftDOM
+      ((self ^. jsf "elementShouldAutoComplete" [toJSVal inputElement])
+         >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.setEditingValue Mozilla Internals.setEditingValue documentation> 
+setEditingValue ::
+                (MonadDOM m, IsElement inputElement, ToJSString value) =>
+                  Internals -> Maybe inputElement -> value -> m ()
+setEditingValue self inputElement value
+  = liftDOM
+      (void
+         (self ^. jsf "setEditingValue"
+            [toJSVal inputElement, toJSVal value]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.setAutofilled Mozilla Internals.setAutofilled documentation> 
+setAutofilled ::
+              (MonadDOM m, IsElement inputElement) =>
+                Internals -> Maybe inputElement -> Bool -> m ()
+setAutofilled self inputElement enabled
+  = liftDOM
+      (void
+         (self ^. jsf "setAutofilled"
+            [toJSVal inputElement, toJSVal enabled]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.countMatchesForText Mozilla Internals.countMatchesForText documentation> 
+countMatchesForText ::
+                    (MonadDOM m, ToJSString text, ToJSString markMatches) =>
+                      Internals -> text -> Word -> markMatches -> m Word
+countMatchesForText self text findOptions markMatches
+  = liftDOM
+      (round <$>
+         ((self ^. jsf "countMatchesForText"
+             [toJSVal text, toJSVal findOptions, toJSVal markMatches])
+            >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.paintControlTints Mozilla Internals.paintControlTints documentation> 
+paintControlTints :: (MonadDOM m) => Internals -> m ()
+paintControlTints self
+  = liftDOM (void (self ^. js "paintControlTints"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.scrollElementToRect Mozilla Internals.scrollElementToRect documentation> 
+scrollElementToRect ::
+                    (MonadDOM m, IsElement element) =>
+                      Internals -> Maybe element -> Int -> Int -> Int -> Int -> m ()
+scrollElementToRect self element x y w h
+  = liftDOM
+      (void
+         (self ^. jsf "scrollElementToRect"
+            [toJSVal element, toJSVal x, toJSVal y, toJSVal w, toJSVal h]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.rangeFromLocationAndLength Mozilla Internals.rangeFromLocationAndLength documentation> 
+rangeFromLocationAndLength ::
+                           (MonadDOM m, IsElement scope) =>
+                             Internals -> Maybe scope -> Int -> Int -> m (Maybe Range)
+rangeFromLocationAndLength self scope rangeLocation rangeLength
+  = liftDOM
+      ((self ^. jsf "rangeFromLocationAndLength"
+          [toJSVal scope, toJSVal rangeLocation, toJSVal rangeLength])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.locationFromRange Mozilla Internals.locationFromRange documentation> 
+locationFromRange ::
+                  (MonadDOM m, IsElement scope) =>
+                    Internals -> Maybe scope -> Maybe Range -> m Word
+locationFromRange self scope range
+  = liftDOM
+      (round <$>
+         ((self ^. jsf "locationFromRange" [toJSVal scope, toJSVal range])
+            >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.lengthFromRange Mozilla Internals.lengthFromRange documentation> 
+lengthFromRange ::
+                (MonadDOM m, IsElement scope) =>
+                  Internals -> Maybe scope -> Maybe Range -> m Word
+lengthFromRange self scope range
+  = liftDOM
+      (round <$>
+         ((self ^. jsf "lengthFromRange" [toJSVal scope, toJSVal range]) >>=
+            valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.rangeAsText Mozilla Internals.rangeAsText documentation> 
+rangeAsText ::
+            (MonadDOM m, FromJSString result) =>
+              Internals -> Maybe Range -> m result
+rangeAsText self range
+  = liftDOM
+      ((self ^. jsf "rangeAsText" [toJSVal range]) >>=
+         fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.subrange Mozilla Internals.subrange documentation> 
+subrange ::
+         (MonadDOM m) =>
+           Internals -> Maybe Range -> Int -> Int -> m (Maybe Range)
+subrange self range rangeLocation rangeLength
+  = liftDOM
+      ((self ^. jsf "subrange"
+          [toJSVal range, toJSVal rangeLocation, toJSVal rangeLength])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.rangeForDictionaryLookupAtLocation Mozilla Internals.rangeForDictionaryLookupAtLocation documentation> 
+rangeForDictionaryLookupAtLocation ::
+                                   (MonadDOM m) => Internals -> Int -> Int -> m (Maybe Range)
+rangeForDictionaryLookupAtLocation self x y
+  = liftDOM
+      ((self ^. jsf "rangeForDictionaryLookupAtLocation"
+          [toJSVal x, toJSVal y])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.setDelegatesScrolling Mozilla Internals.setDelegatesScrolling documentation> 
+setDelegatesScrolling :: (MonadDOM m) => Internals -> Bool -> m ()
+setDelegatesScrolling self enabled
+  = liftDOM
+      (void (self ^. jsf "setDelegatesScrolling" [toJSVal enabled]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.lastSpellCheckRequestSequence Mozilla Internals.lastSpellCheckRequestSequence documentation> 
+lastSpellCheckRequestSequence :: (MonadDOM m) => Internals -> m Int
+lastSpellCheckRequestSequence self
+  = liftDOM
+      (round <$>
+         ((self ^. js "lastSpellCheckRequestSequence") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.lastSpellCheckProcessedSequence Mozilla Internals.lastSpellCheckProcessedSequence documentation> 
+lastSpellCheckProcessedSequence ::
+                                (MonadDOM m) => Internals -> m Int
+lastSpellCheckProcessedSequence self
+  = liftDOM
+      (round <$>
+         ((self ^. js "lastSpellCheckProcessedSequence") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.userPreferredLanguages Mozilla Internals.userPreferredLanguages documentation> 
+userPreferredLanguages ::
+                       (MonadDOM m, FromJSString result) => Internals -> m [result]
+userPreferredLanguages self
+  = liftDOM
+      ((self ^. js "userPreferredLanguages") >>= fromJSArrayUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.setUserPreferredLanguages Mozilla Internals.setUserPreferredLanguages documentation> 
+setUserPreferredLanguages ::
+                          (MonadDOM m, ToJSString languages) =>
+                            Internals -> [languages] -> m ()
+setUserPreferredLanguages self languages
+  = liftDOM
+      (void
+         (self ^. jsf "setUserPreferredLanguages"
+            [toJSVal (array languages)]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.wheelEventHandlerCount Mozilla Internals.wheelEventHandlerCount documentation> 
+wheelEventHandlerCount :: (MonadDOM m) => Internals -> m Word
+wheelEventHandlerCount self
+  = liftDOM
+      (round <$> ((self ^. js "wheelEventHandlerCount") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.touchEventHandlerCount Mozilla Internals.touchEventHandlerCount documentation> 
+touchEventHandlerCount :: (MonadDOM m) => Internals -> m Word
+touchEventHandlerCount self
+  = liftDOM
+      (round <$> ((self ^. js "touchEventHandlerCount") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.nodesFromRect Mozilla Internals.nodesFromRect documentation> 
+nodesFromRect ::
+              (MonadDOM m, IsDocument document) =>
+                Internals ->
+                  Maybe document ->
+                    Int ->
+                      Int ->
+                        Word ->
+                          Word -> Word -> Word -> Bool -> Bool -> Bool -> m (Maybe NodeList)
+nodesFromRect self document x y topPadding rightPadding
+  bottomPadding leftPadding ignoreClipping allowShadowContent
+  allowChildFrameContent
+  = liftDOM
+      ((self ^. jsf "nodesFromRect"
+          [toJSVal document, toJSVal x, toJSVal y, toJSVal topPadding,
+           toJSVal rightPadding, toJSVal bottomPadding, toJSVal leftPadding,
+           toJSVal ignoreClipping, toJSVal allowShadowContent,
+           toJSVal allowChildFrameContent])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.parserMetaData Mozilla Internals.parserMetaData documentation> 
+parserMetaData ::
+               (MonadDOM m, FromJSString result) => Internals -> JSVal -> m result
+parserMetaData self func
+  = liftDOM
+      ((self ^. jsf "parserMetaData" [toJSVal func]) >>=
+         fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.updateEditorUINowIfScheduled Mozilla Internals.updateEditorUINowIfScheduled documentation> 
+updateEditorUINowIfScheduled :: (MonadDOM m) => Internals -> m ()
+updateEditorUINowIfScheduled self
+  = liftDOM (void (self ^. js "updateEditorUINowIfScheduled"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.hasSpellingMarker Mozilla Internals.hasSpellingMarker documentation> 
+hasSpellingMarker ::
+                  (MonadDOM m) => Internals -> Int -> Int -> m Bool
+hasSpellingMarker self from length
+  = liftDOM
+      ((self ^. jsf "hasSpellingMarker" [toJSVal from, toJSVal length])
+         >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.hasGrammarMarker Mozilla Internals.hasGrammarMarker documentation> 
+hasGrammarMarker ::
+                 (MonadDOM m) => Internals -> Int -> Int -> m Bool
+hasGrammarMarker self from length
+  = liftDOM
+      ((self ^. jsf "hasGrammarMarker" [toJSVal from, toJSVal length])
+         >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.hasAutocorrectedMarker Mozilla Internals.hasAutocorrectedMarker documentation> 
+hasAutocorrectedMarker ::
+                       (MonadDOM m) => Internals -> Int -> Int -> m Bool
+hasAutocorrectedMarker self from length
+  = liftDOM
+      ((self ^. jsf "hasAutocorrectedMarker"
+          [toJSVal from, toJSVal length])
+         >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.setContinuousSpellCheckingEnabled Mozilla Internals.setContinuousSpellCheckingEnabled documentation> 
+setContinuousSpellCheckingEnabled ::
+                                  (MonadDOM m) => Internals -> Bool -> m ()
+setContinuousSpellCheckingEnabled self enabled
+  = liftDOM
+      (void
+         (self ^. jsf "setContinuousSpellCheckingEnabled"
+            [toJSVal enabled]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.setAutomaticQuoteSubstitutionEnabled Mozilla Internals.setAutomaticQuoteSubstitutionEnabled documentation> 
+setAutomaticQuoteSubstitutionEnabled ::
+                                     (MonadDOM m) => Internals -> Bool -> m ()
+setAutomaticQuoteSubstitutionEnabled self enabled
+  = liftDOM
+      (void
+         (self ^. jsf "setAutomaticQuoteSubstitutionEnabled"
+            [toJSVal enabled]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.setAutomaticLinkDetectionEnabled Mozilla Internals.setAutomaticLinkDetectionEnabled documentation> 
+setAutomaticLinkDetectionEnabled ::
+                                 (MonadDOM m) => Internals -> Bool -> m ()
+setAutomaticLinkDetectionEnabled self enabled
+  = liftDOM
+      (void
+         (self ^. jsf "setAutomaticLinkDetectionEnabled" [toJSVal enabled]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.setAutomaticDashSubstitutionEnabled Mozilla Internals.setAutomaticDashSubstitutionEnabled documentation> 
+setAutomaticDashSubstitutionEnabled ::
+                                    (MonadDOM m) => Internals -> Bool -> m ()
+setAutomaticDashSubstitutionEnabled self enabled
+  = liftDOM
+      (void
+         (self ^. jsf "setAutomaticDashSubstitutionEnabled"
+            [toJSVal enabled]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.setAutomaticTextReplacementEnabled Mozilla Internals.setAutomaticTextReplacementEnabled documentation> 
+setAutomaticTextReplacementEnabled ::
+                                   (MonadDOM m) => Internals -> Bool -> m ()
+setAutomaticTextReplacementEnabled self enabled
+  = liftDOM
+      (void
+         (self ^. jsf "setAutomaticTextReplacementEnabled"
+            [toJSVal enabled]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.setAutomaticSpellingCorrectionEnabled Mozilla Internals.setAutomaticSpellingCorrectionEnabled documentation> 
+setAutomaticSpellingCorrectionEnabled ::
+                                      (MonadDOM m) => Internals -> Bool -> m ()
+setAutomaticSpellingCorrectionEnabled self enabled
+  = liftDOM
+      (void
+         (self ^. jsf "setAutomaticSpellingCorrectionEnabled"
+            [toJSVal enabled]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.isOverwriteModeEnabled Mozilla Internals.isOverwriteModeEnabled documentation> 
+isOverwriteModeEnabled :: (MonadDOM m) => Internals -> m Bool
+isOverwriteModeEnabled self
+  = liftDOM ((self ^. js "isOverwriteModeEnabled") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.toggleOverwriteModeEnabled Mozilla Internals.toggleOverwriteModeEnabled documentation> 
+toggleOverwriteModeEnabled :: (MonadDOM m) => Internals -> m ()
+toggleOverwriteModeEnabled self
+  = liftDOM (void (self ^. js "toggleOverwriteModeEnabled"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.numberOfScrollableAreas Mozilla Internals.numberOfScrollableAreas documentation> 
+numberOfScrollableAreas :: (MonadDOM m) => Internals -> m Word
+numberOfScrollableAreas self
+  = liftDOM
+      (round <$>
+         ((self ^. js "numberOfScrollableAreas") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.isPageBoxVisible Mozilla Internals.isPageBoxVisible documentation> 
+isPageBoxVisible :: (MonadDOM m) => Internals -> Int -> m Bool
+isPageBoxVisible self pageNumber
+  = liftDOM
+      ((self ^. jsf "isPageBoxVisible" [toJSVal pageNumber]) >>=
+         valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.layerTreeAsText Mozilla Internals.layerTreeAsText documentation> 
+layerTreeAsText ::
+                (MonadDOM m, IsDocument document, FromJSString result) =>
+                  Internals -> Maybe document -> Word -> m result
+layerTreeAsText self document flags
+  = liftDOM
+      ((self ^. jsf "layerTreeAsText" [toJSVal document, toJSVal flags])
+         >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.scrollingStateTreeAsText Mozilla Internals.scrollingStateTreeAsText documentation> 
+scrollingStateTreeAsText ::
+                         (MonadDOM m, FromJSString result) => Internals -> m result
+scrollingStateTreeAsText self
+  = liftDOM
+      ((self ^. js "scrollingStateTreeAsText") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.mainThreadScrollingReasons Mozilla Internals.mainThreadScrollingReasons documentation> 
+mainThreadScrollingReasons ::
+                           (MonadDOM m, FromJSString result) => Internals -> m result
+mainThreadScrollingReasons self
+  = liftDOM
+      ((self ^. js "mainThreadScrollingReasons") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.nonFastScrollableRects Mozilla Internals.nonFastScrollableRects documentation> 
+nonFastScrollableRects ::
+                       (MonadDOM m) => Internals -> m (Maybe ClientRectList)
+nonFastScrollableRects self
+  = liftDOM ((self ^. js "nonFastScrollableRects") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.repaintRectsAsText Mozilla Internals.repaintRectsAsText documentation> 
+repaintRectsAsText ::
+                   (MonadDOM m, FromJSString result) => Internals -> m result
+repaintRectsAsText self
+  = liftDOM
+      ((self ^. js "repaintRectsAsText") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.garbageCollectDocumentResources Mozilla Internals.garbageCollectDocumentResources documentation> 
+garbageCollectDocumentResources ::
+                                (MonadDOM m) => Internals -> m ()
+garbageCollectDocumentResources self
+  = liftDOM (void (self ^. js "garbageCollectDocumentResources"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.allowRoundingHacks Mozilla Internals.allowRoundingHacks documentation> 
+allowRoundingHacks :: (MonadDOM m) => Internals -> m ()
+allowRoundingHacks self
+  = liftDOM (void (self ^. js "allowRoundingHacks"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.insertAuthorCSS Mozilla Internals.insertAuthorCSS documentation> 
+insertAuthorCSS ::
+                (MonadDOM m, ToJSString css) => Internals -> css -> m ()
+insertAuthorCSS self css
+  = liftDOM (void (self ^. jsf "insertAuthorCSS" [toJSVal css]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.insertUserCSS Mozilla Internals.insertUserCSS documentation> 
+insertUserCSS ::
+              (MonadDOM m, ToJSString css) => Internals -> css -> m ()
+insertUserCSS self css
+  = liftDOM (void (self ^. jsf "insertUserCSS" [toJSVal css]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.setBatteryStatus Mozilla Internals.setBatteryStatus documentation> 
+setBatteryStatus ::
+                 (MonadDOM m, ToJSString eventType) =>
+                   Internals ->
+                     eventType -> Bool -> Double -> Double -> Double -> m ()
+setBatteryStatus self eventType charging chargingTime
+  dischargingTime level
+  = liftDOM
+      (void
+         (self ^. jsf "setBatteryStatus"
+            [toJSVal eventType, toJSVal charging, toJSVal chargingTime,
+             toJSVal dischargingTime, toJSVal level]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.setDeviceProximity Mozilla Internals.setDeviceProximity documentation> 
+setDeviceProximity ::
+                   (MonadDOM m, ToJSString eventType) =>
+                     Internals -> eventType -> Double -> Double -> Double -> m ()
+setDeviceProximity self eventType value min max
+  = liftDOM
+      (void
+         (self ^. jsf "setDeviceProximity"
+            [toJSVal eventType, toJSVal value, toJSVal min, toJSVal max]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.numberOfLiveNodes Mozilla Internals.numberOfLiveNodes documentation> 
+numberOfLiveNodes :: (MonadDOM m) => Internals -> m Word
+numberOfLiveNodes self
+  = liftDOM
+      (round <$> ((self ^. js "numberOfLiveNodes") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.numberOfLiveDocuments Mozilla Internals.numberOfLiveDocuments documentation> 
+numberOfLiveDocuments :: (MonadDOM m) => Internals -> m Word
+numberOfLiveDocuments self
+  = liftDOM
+      (round <$> ((self ^. js "numberOfLiveDocuments") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.consoleMessageArgumentCounts Mozilla Internals.consoleMessageArgumentCounts documentation> 
+consoleMessageArgumentCounts ::
+                             (MonadDOM m, FromJSString result) => Internals -> m [result]
+consoleMessageArgumentCounts self
+  = liftDOM
+      ((self ^. js "consoleMessageArgumentCounts") >>=
+         fromJSArrayUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.openDummyInspectorFrontend Mozilla Internals.openDummyInspectorFrontend documentation> 
+openDummyInspectorFrontend ::
+                           (MonadDOM m, ToJSString url) =>
+                             Internals -> url -> m (Maybe Window)
+openDummyInspectorFrontend self url
+  = liftDOM
+      ((self ^. jsf "openDummyInspectorFrontend" [toJSVal url]) >>=
+         fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.closeDummyInspectorFrontend Mozilla Internals.closeDummyInspectorFrontend documentation> 
+closeDummyInspectorFrontend :: (MonadDOM m) => Internals -> m ()
+closeDummyInspectorFrontend self
+  = liftDOM (void (self ^. js "closeDummyInspectorFrontend"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.setJavaScriptProfilingEnabled Mozilla Internals.setJavaScriptProfilingEnabled documentation> 
+setJavaScriptProfilingEnabled ::
+                              (MonadDOM m) => Internals -> Bool -> m ()
+setJavaScriptProfilingEnabled self creates
+  = liftDOM
+      (void
+         (self ^. jsf "setJavaScriptProfilingEnabled" [toJSVal creates]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.setInspectorIsUnderTest Mozilla Internals.setInspectorIsUnderTest documentation> 
+setInspectorIsUnderTest ::
+                        (MonadDOM m) => Internals -> Bool -> m ()
+setInspectorIsUnderTest self isUnderTest
+  = liftDOM
+      (void
+         (self ^. jsf "setInspectorIsUnderTest" [toJSVal isUnderTest]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.counterValue Mozilla Internals.counterValue documentation> 
+counterValue ::
+             (MonadDOM m, IsElement element, FromJSString result) =>
+               Internals -> Maybe element -> m result
+counterValue self element
+  = liftDOM
+      ((self ^. jsf "counterValue" [toJSVal element]) >>=
+         fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.pageNumber Mozilla Internals.pageNumber documentation> 
+pageNumber ::
+           (MonadDOM m, IsElement element) =>
+             Internals -> Maybe element -> Float -> Float -> m Int
+pageNumber self element pageWidth pageHeight
+  = liftDOM
+      (round <$>
+         ((self ^. jsf "pageNumber"
+             [toJSVal element, toJSVal pageWidth, toJSVal pageHeight])
+            >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.shortcutIconURLs Mozilla Internals.shortcutIconURLs documentation> 
+shortcutIconURLs ::
+                 (MonadDOM m, FromJSString result) => Internals -> m [result]
+shortcutIconURLs self
+  = liftDOM
+      ((self ^. js "shortcutIconURLs") >>= fromJSArrayUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.allIconURLs Mozilla Internals.allIconURLs documentation> 
+allIconURLs ::
+            (MonadDOM m, FromJSString result) => Internals -> m [result]
+allIconURLs self
+  = liftDOM ((self ^. js "allIconURLs") >>= fromJSArrayUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.numberOfPages Mozilla Internals.numberOfPages documentation> 
+numberOfPages ::
+              (MonadDOM m) => Internals -> Double -> Double -> m Int
+numberOfPages self pageWidthInPixels pageHeightInPixels
+  = liftDOM
+      (round <$>
+         ((self ^. jsf "numberOfPages"
+             [toJSVal pageWidthInPixels, toJSVal pageHeightInPixels])
+            >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.pageProperty Mozilla Internals.pageProperty documentation> 
+pageProperty ::
+             (MonadDOM m, ToJSString propertyName, FromJSString result) =>
+               Internals -> propertyName -> Int -> m result
+pageProperty self propertyName pageNumber
+  = liftDOM
+      ((self ^. jsf "pageProperty"
+          [toJSVal propertyName, toJSVal pageNumber])
+         >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.pageSizeAndMarginsInPixels Mozilla Internals.pageSizeAndMarginsInPixels documentation> 
+pageSizeAndMarginsInPixels ::
+                           (MonadDOM m, FromJSString result) =>
+                             Internals ->
+                               Int -> Int -> Int -> Int -> Int -> Int -> Int -> m result
+pageSizeAndMarginsInPixels self pageIndex width height marginTop
+  marginRight marginBottom marginLeft
+  = liftDOM
+      ((self ^. jsf "pageSizeAndMarginsInPixels"
+          [toJSVal pageIndex, toJSVal width, toJSVal height,
+           toJSVal marginTop, toJSVal marginRight, toJSVal marginBottom,
+           toJSVal marginLeft])
+         >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.setPageScaleFactor Mozilla Internals.setPageScaleFactor documentation> 
+setPageScaleFactor ::
+                   (MonadDOM m) => Internals -> Float -> Int -> Int -> m ()
+setPageScaleFactor self scaleFactor x y
+  = liftDOM
+      (void
+         (self ^. jsf "setPageScaleFactor"
+            [toJSVal scaleFactor, toJSVal x, toJSVal y]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.setPageZoomFactor Mozilla Internals.setPageZoomFactor documentation> 
+setPageZoomFactor :: (MonadDOM m) => Internals -> Float -> m ()
+setPageZoomFactor self zoomFactor
+  = liftDOM
+      (void (self ^. jsf "setPageZoomFactor" [toJSVal zoomFactor]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.setHeaderHeight Mozilla Internals.setHeaderHeight documentation> 
+setHeaderHeight :: (MonadDOM m) => Internals -> Float -> m ()
+setHeaderHeight self height
+  = liftDOM (void (self ^. jsf "setHeaderHeight" [toJSVal height]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.setFooterHeight Mozilla Internals.setFooterHeight documentation> 
+setFooterHeight :: (MonadDOM m) => Internals -> Float -> m ()
+setFooterHeight self height
+  = liftDOM (void (self ^. jsf "setFooterHeight" [toJSVal height]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.setTopContentInset Mozilla Internals.setTopContentInset documentation> 
+setTopContentInset :: (MonadDOM m) => Internals -> Float -> m ()
+setTopContentInset self contentInset
+  = liftDOM
+      (void (self ^. jsf "setTopContentInset" [toJSVal contentInset]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.webkitWillEnterFullScreenForElement Mozilla Internals.webkitWillEnterFullScreenForElement documentation> 
+webkitWillEnterFullScreenForElement ::
+                                    (MonadDOM m, IsElement element) =>
+                                      Internals -> Maybe element -> m ()
+webkitWillEnterFullScreenForElement self element
+  = liftDOM
+      (void
+         (self ^. jsf "webkitWillEnterFullScreenForElement"
+            [toJSVal element]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.webkitDidEnterFullScreenForElement Mozilla Internals.webkitDidEnterFullScreenForElement documentation> 
+webkitDidEnterFullScreenForElement ::
+                                   (MonadDOM m, IsElement element) =>
+                                     Internals -> Maybe element -> m ()
+webkitDidEnterFullScreenForElement self element
+  = liftDOM
+      (void
+         (self ^. jsf "webkitDidEnterFullScreenForElement"
+            [toJSVal element]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.webkitWillExitFullScreenForElement Mozilla Internals.webkitWillExitFullScreenForElement documentation> 
+webkitWillExitFullScreenForElement ::
+                                   (MonadDOM m, IsElement element) =>
+                                     Internals -> Maybe element -> m ()
+webkitWillExitFullScreenForElement self element
+  = liftDOM
+      (void
+         (self ^. jsf "webkitWillExitFullScreenForElement"
+            [toJSVal element]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.webkitDidExitFullScreenForElement Mozilla Internals.webkitDidExitFullScreenForElement documentation> 
+webkitDidExitFullScreenForElement ::
+                                  (MonadDOM m, IsElement element) =>
+                                    Internals -> Maybe element -> m ()
+webkitDidExitFullScreenForElement self element
+  = liftDOM
+      (void
+         (self ^. jsf "webkitDidExitFullScreenForElement"
+            [toJSVal element]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.setApplicationCacheOriginQuota Mozilla Internals.setApplicationCacheOriginQuota documentation> 
+setApplicationCacheOriginQuota ::
+                               (MonadDOM m) => Internals -> Word64 -> m ()
+setApplicationCacheOriginQuota self quota
+  = liftDOM
+      (void
+         (self ^. jsf "setApplicationCacheOriginQuota" [toJSVal quota]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.registerURLSchemeAsBypassingContentSecurityPolicy Mozilla Internals.registerURLSchemeAsBypassingContentSecurityPolicy documentation> 
+registerURLSchemeAsBypassingContentSecurityPolicy ::
+                                                  (MonadDOM m, ToJSString scheme) =>
+                                                    Internals -> scheme -> m ()
+registerURLSchemeAsBypassingContentSecurityPolicy self scheme
+  = liftDOM
+      (void
+         (self ^. jsf "registerURLSchemeAsBypassingContentSecurityPolicy"
+            [toJSVal scheme]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.removeURLSchemeRegisteredAsBypassingContentSecurityPolicy Mozilla Internals.removeURLSchemeRegisteredAsBypassingContentSecurityPolicy documentation> 
+removeURLSchemeRegisteredAsBypassingContentSecurityPolicy ::
+                                                          (MonadDOM m, ToJSString scheme) =>
+                                                            Internals -> scheme -> m ()
+removeURLSchemeRegisteredAsBypassingContentSecurityPolicy self
+  scheme
+  = liftDOM
+      (void
+         (self ^.
+            jsf "removeURLSchemeRegisteredAsBypassingContentSecurityPolicy"
+            [toJSVal scheme]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.mallocStatistics Mozilla Internals.mallocStatistics documentation> 
+mallocStatistics ::
+                 (MonadDOM m) => Internals -> m (Maybe MallocStatistics)
+mallocStatistics self
+  = liftDOM ((self ^. js "mallocStatistics") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.typeConversions Mozilla Internals.typeConversions documentation> 
+typeConversions ::
+                (MonadDOM m) => Internals -> m (Maybe TypeConversions)
+typeConversions self
+  = liftDOM ((self ^. js "typeConversions") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.memoryInfo Mozilla Internals.memoryInfo documentation> 
+memoryInfo :: (MonadDOM m) => Internals -> m (Maybe MemoryInfo)
+memoryInfo self = liftDOM ((self ^. js "memoryInfo") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.getReferencedFilePaths Mozilla Internals.getReferencedFilePaths documentation> 
+getReferencedFilePaths ::
+                       (MonadDOM m, FromJSString result) => Internals -> m [result]
+getReferencedFilePaths self
+  = liftDOM
+      ((self ^. js "getReferencedFilePaths") >>= fromJSArrayUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.startTrackingRepaints Mozilla Internals.startTrackingRepaints documentation> 
+startTrackingRepaints :: (MonadDOM m) => Internals -> m ()
+startTrackingRepaints self
+  = liftDOM (void (self ^. js "startTrackingRepaints"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.stopTrackingRepaints Mozilla Internals.stopTrackingRepaints documentation> 
+stopTrackingRepaints :: (MonadDOM m) => Internals -> m ()
+stopTrackingRepaints self
+  = liftDOM (void (self ^. js "stopTrackingRepaints"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.isTimerThrottled Mozilla Internals.isTimerThrottled documentation> 
+isTimerThrottled :: (MonadDOM m) => Internals -> Int -> m Bool
+isTimerThrottled self timerHandle
+  = liftDOM
+      ((self ^. jsf "isTimerThrottled" [toJSVal timerHandle]) >>=
+         valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.updateLayoutIgnorePendingStylesheetsAndRunPostLayoutTasks Mozilla Internals.updateLayoutIgnorePendingStylesheetsAndRunPostLayoutTasks documentation> 
+updateLayoutIgnorePendingStylesheetsAndRunPostLayoutTasks ::
+                                                          (MonadDOM m, IsNode node) =>
+                                                            Internals -> Maybe node -> m ()
+updateLayoutIgnorePendingStylesheetsAndRunPostLayoutTasks self node
+  = liftDOM
+      (void
+         (self ^.
+            jsf "updateLayoutIgnorePendingStylesheetsAndRunPostLayoutTasks"
+            [toJSVal node]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.getCurrentCursorInfo Mozilla Internals.getCurrentCursorInfo documentation> 
+getCurrentCursorInfo ::
+                     (MonadDOM m, FromJSString result) => Internals -> m result
+getCurrentCursorInfo self
+  = liftDOM
+      ((self ^. js "getCurrentCursorInfo") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.markerTextForListItem Mozilla Internals.markerTextForListItem documentation> 
+markerTextForListItem ::
+                      (MonadDOM m, IsElement element, FromJSString result) =>
+                        Internals -> Maybe element -> m result
+markerTextForListItem self element
+  = liftDOM
+      ((self ^. jsf "markerTextForListItem" [toJSVal element]) >>=
+         fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.toolTipFromElement Mozilla Internals.toolTipFromElement documentation> 
+toolTipFromElement ::
+                   (MonadDOM m, IsElement element, FromJSString result) =>
+                     Internals -> Maybe element -> m result
+toolTipFromElement self element
+  = liftDOM
+      ((self ^. jsf "toolTipFromElement" [toJSVal element]) >>=
+         fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.deserializeBuffer Mozilla Internals.deserializeBuffer documentation> 
+deserializeBuffer ::
+                  (MonadDOM m, IsArrayBuffer buffer) =>
+                    Internals -> Maybe buffer -> m (Maybe SerializedScriptValue)
+deserializeBuffer self buffer
+  = liftDOM
+      ((self ^. jsf "deserializeBuffer" [toJSVal buffer]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.serializeObject Mozilla Internals.serializeObject documentation> 
+serializeObject ::
+                (MonadDOM m, IsSerializedScriptValue obj) =>
+                  Internals -> Maybe obj -> m (Maybe ArrayBuffer)
+serializeObject self obj
+  = liftDOM
+      ((self ^. jsf "serializeObject" [toJSVal obj]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.setUsesOverlayScrollbars Mozilla Internals.setUsesOverlayScrollbars documentation> 
+setUsesOverlayScrollbars ::
+                         (MonadDOM m) => Internals -> Bool -> m ()
+setUsesOverlayScrollbars self enabled
+  = liftDOM
+      (void (self ^. jsf "setUsesOverlayScrollbars" [toJSVal enabled]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.forceReload Mozilla Internals.forceReload documentation> 
+forceReload :: (MonadDOM m) => Internals -> Bool -> m ()
+forceReload self endToEnd
+  = liftDOM (void (self ^. jsf "forceReload" [toJSVal endToEnd]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.simulateAudioInterruption Mozilla Internals.simulateAudioInterruption documentation> 
+simulateAudioInterruption ::
+                          (MonadDOM m, IsNode node) => Internals -> Maybe node -> m ()
+simulateAudioInterruption self node
+  = liftDOM
+      (void (self ^. jsf "simulateAudioInterruption" [toJSVal node]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.mediaElementHasCharacteristic Mozilla Internals.mediaElementHasCharacteristic documentation> 
+mediaElementHasCharacteristic ::
+                              (MonadDOM m, IsNode node, ToJSString characteristic) =>
+                                Internals -> Maybe node -> characteristic -> m Bool
+mediaElementHasCharacteristic self node characteristic
+  = liftDOM
+      ((self ^. jsf "mediaElementHasCharacteristic"
+          [toJSVal node, toJSVal characteristic])
+         >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.initializeMockCDM Mozilla Internals.initializeMockCDM documentation> 
+initializeMockCDM :: (MonadDOM m) => Internals -> m ()
+initializeMockCDM self
+  = liftDOM (void (self ^. js "initializeMockCDM"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.enableMockSpeechSynthesizer Mozilla Internals.enableMockSpeechSynthesizer documentation> 
+enableMockSpeechSynthesizer :: (MonadDOM m) => Internals -> m ()
+enableMockSpeechSynthesizer self
+  = liftDOM (void (self ^. js "enableMockSpeechSynthesizer"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.getImageSourceURL Mozilla Internals.getImageSourceURL documentation> 
+getImageSourceURL ::
+                  (MonadDOM m, IsElement element, FromJSString result) =>
+                    Internals -> Maybe element -> m result
+getImageSourceURL self element
+  = liftDOM
+      ((self ^. jsf "getImageSourceURL" [toJSVal element]) >>=
+         fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.captionsStyleSheetOverride Mozilla Internals.captionsStyleSheetOverride documentation> 
+captionsStyleSheetOverride ::
+                           (MonadDOM m, FromJSString result) => Internals -> m result
+captionsStyleSheetOverride self
+  = liftDOM
+      ((self ^. js "captionsStyleSheetOverride") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.setCaptionsStyleSheetOverride Mozilla Internals.setCaptionsStyleSheetOverride documentation> 
+setCaptionsStyleSheetOverride ::
+                              (MonadDOM m, ToJSString override) => Internals -> override -> m ()
+setCaptionsStyleSheetOverride self override
+  = liftDOM
+      (void
+         (self ^. jsf "setCaptionsStyleSheetOverride" [toJSVal override]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.setPrimaryAudioTrackLanguageOverride Mozilla Internals.setPrimaryAudioTrackLanguageOverride documentation> 
+setPrimaryAudioTrackLanguageOverride ::
+                                     (MonadDOM m, ToJSString language) =>
+                                       Internals -> language -> m ()
+setPrimaryAudioTrackLanguageOverride self language
+  = liftDOM
+      (void
+         (self ^. jsf "setPrimaryAudioTrackLanguageOverride"
+            [toJSVal language]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.setCaptionDisplayMode Mozilla Internals.setCaptionDisplayMode documentation> 
+setCaptionDisplayMode ::
+                      (MonadDOM m, ToJSString mode) => Internals -> mode -> m ()
+setCaptionDisplayMode self mode
+  = liftDOM
+      (void (self ^. jsf "setCaptionDisplayMode" [toJSVal mode]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.createTimeRanges Mozilla Internals.createTimeRanges documentation> 
+createTimeRanges ::
+                 (MonadDOM m, IsFloat32Array startTimes, IsFloat32Array endTimes) =>
+                   Internals ->
+                     Maybe startTimes -> Maybe endTimes -> m (Maybe TimeRanges)
+createTimeRanges self startTimes endTimes
+  = liftDOM
+      ((self ^. jsf "createTimeRanges"
+          [toJSVal startTimes, toJSVal endTimes])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.closestTimeToTimeRanges Mozilla Internals.closestTimeToTimeRanges documentation> 
+closestTimeToTimeRanges ::
+                        (MonadDOM m) => Internals -> Double -> Maybe TimeRanges -> m Double
+closestTimeToTimeRanges self time ranges
+  = liftDOM
+      ((self ^. jsf "closestTimeToTimeRanges"
+          [toJSVal time, toJSVal ranges])
+         >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.isSelectPopupVisible Mozilla Internals.isSelectPopupVisible documentation> 
+isSelectPopupVisible ::
+                     (MonadDOM m, IsNode node) => Internals -> Maybe node -> m Bool
+isSelectPopupVisible self node
+  = liftDOM
+      ((self ^. jsf "isSelectPopupVisible" [toJSVal node]) >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.isVibrating Mozilla Internals.isVibrating documentation> 
+isVibrating :: (MonadDOM m) => Internals -> m Bool
+isVibrating self
+  = liftDOM ((self ^. js "isVibrating") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.isPluginUnavailabilityIndicatorObscured Mozilla Internals.isPluginUnavailabilityIndicatorObscured documentation> 
+isPluginUnavailabilityIndicatorObscured ::
+                                        (MonadDOM m, IsElement element) =>
+                                          Internals -> Maybe element -> m Bool
+isPluginUnavailabilityIndicatorObscured self element
+  = liftDOM
+      ((self ^. jsf "isPluginUnavailabilityIndicatorObscured"
+          [toJSVal element])
+         >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.isPluginSnapshotted Mozilla Internals.isPluginSnapshotted documentation> 
+isPluginSnapshotted ::
+                    (MonadDOM m, IsElement element) =>
+                      Internals -> Maybe element -> m Bool
+isPluginSnapshotted self element
+  = liftDOM
+      ((self ^. jsf "isPluginSnapshotted" [toJSVal element]) >>=
+         valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.selectionBounds Mozilla Internals.selectionBounds documentation> 
+selectionBounds ::
+                (MonadDOM m) => Internals -> m (Maybe ClientRect)
+selectionBounds self
+  = liftDOM ((self ^. js "selectionBounds") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.initializeMockMediaSource Mozilla Internals.initializeMockMediaSource documentation> 
+initializeMockMediaSource :: (MonadDOM m) => Internals -> m ()
+initializeMockMediaSource self
+  = liftDOM (void (self ^. js "initializeMockMediaSource"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.bufferedSamplesForTrackID Mozilla Internals.bufferedSamplesForTrackID documentation> 
+bufferedSamplesForTrackID ::
+                          (MonadDOM m, ToJSString trackID, FromJSString result) =>
+                            Internals -> Maybe SourceBuffer -> trackID -> m [result]
+bufferedSamplesForTrackID self buffer trackID
+  = liftDOM
+      ((self ^. jsf "bufferedSamplesForTrackID"
+          [toJSVal buffer, toJSVal trackID])
+         >>= fromJSArrayUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.beginMediaSessionInterruption Mozilla Internals.beginMediaSessionInterruption documentation> 
+beginMediaSessionInterruption :: (MonadDOM m) => Internals -> m ()
+beginMediaSessionInterruption self
+  = liftDOM (void (self ^. js "beginMediaSessionInterruption"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.endMediaSessionInterruption Mozilla Internals.endMediaSessionInterruption documentation> 
+endMediaSessionInterruption ::
+                            (MonadDOM m, ToJSString flags) => Internals -> flags -> m ()
+endMediaSessionInterruption self flags
+  = liftDOM
+      (void (self ^. jsf "endMediaSessionInterruption" [toJSVal flags]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.applicationWillEnterForeground Mozilla Internals.applicationWillEnterForeground documentation> 
+applicationWillEnterForeground :: (MonadDOM m) => Internals -> m ()
+applicationWillEnterForeground self
+  = liftDOM (void (self ^. js "applicationWillEnterForeground"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.applicationWillEnterBackground Mozilla Internals.applicationWillEnterBackground documentation> 
+applicationWillEnterBackground :: (MonadDOM m) => Internals -> m ()
+applicationWillEnterBackground self
+  = liftDOM (void (self ^. js "applicationWillEnterBackground"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.setMediaSessionRestrictions Mozilla Internals.setMediaSessionRestrictions documentation> 
+setMediaSessionRestrictions ::
+                            (MonadDOM m, ToJSString mediaType, ToJSString restrictions) =>
+                              Internals -> mediaType -> restrictions -> m ()
+setMediaSessionRestrictions self mediaType restrictions
+  = liftDOM
+      (void
+         (self ^. jsf "setMediaSessionRestrictions"
+            [toJSVal mediaType, toJSVal restrictions]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.postRemoteControlCommand Mozilla Internals.postRemoteControlCommand documentation> 
+postRemoteControlCommand ::
+                         (MonadDOM m, ToJSString command) => Internals -> command -> m ()
+postRemoteControlCommand self command
+  = liftDOM
+      (void (self ^. jsf "postRemoteControlCommand" [toJSVal command]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.simulateSystemSleep Mozilla Internals.simulateSystemSleep documentation> 
+simulateSystemSleep :: (MonadDOM m) => Internals -> m ()
+simulateSystemSleep self
+  = liftDOM (void (self ^. js "simulateSystemSleep"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.simulateSystemWake Mozilla Internals.simulateSystemWake documentation> 
+simulateSystemWake :: (MonadDOM m) => Internals -> m ()
+simulateSystemWake self
+  = liftDOM (void (self ^. js "simulateSystemWake"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.elementIsBlockingDisplaySleep Mozilla Internals.elementIsBlockingDisplaySleep documentation> 
+elementIsBlockingDisplaySleep ::
+                              (MonadDOM m, IsElement element) =>
+                                Internals -> Maybe element -> m Bool
+elementIsBlockingDisplaySleep self element
+  = liftDOM
+      ((self ^. jsf "elementIsBlockingDisplaySleep" [toJSVal element])
+         >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.installMockPageOverlay Mozilla Internals.installMockPageOverlay documentation> 
+installMockPageOverlay ::
+                       (MonadDOM m) => Internals -> PageOverlayType -> m ()
+installMockPageOverlay self type'
+  = liftDOM
+      (void (self ^. jsf "installMockPageOverlay" [toJSVal type']))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.pageOverlayLayerTreeAsText Mozilla Internals.pageOverlayLayerTreeAsText documentation> 
+pageOverlayLayerTreeAsText ::
+                           (MonadDOM m, FromJSString result) => Internals -> m result
+pageOverlayLayerTreeAsText self
+  = liftDOM
+      ((self ^. js "pageOverlayLayerTreeAsText") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.setPageMuted Mozilla Internals.setPageMuted documentation> 
+setPageMuted :: (MonadDOM m) => Internals -> Bool -> m ()
+setPageMuted self muted
+  = liftDOM (void (self ^. jsf "setPageMuted" [toJSVal muted]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.isPagePlayingAudio Mozilla Internals.isPagePlayingAudio documentation> 
+isPagePlayingAudio :: (MonadDOM m) => Internals -> m Bool
+isPagePlayingAudio self
+  = liftDOM ((self ^. js "isPagePlayingAudio") >>= valToBool)
+pattern LAYER_TREE_INCLUDES_VISIBLE_RECTS = 1
+pattern LAYER_TREE_INCLUDES_TILE_CACHES = 2
+pattern LAYER_TREE_INCLUDES_REPAINT_RECTS = 4
+pattern LAYER_TREE_INCLUDES_PAINTING_PHASES = 8
+pattern LAYER_TREE_INCLUDES_CONTENT_LAYERS = 16
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.settings Mozilla Internals.settings documentation> 
+getSettings ::
+            (MonadDOM m) => Internals -> m (Maybe InternalSettings)
+getSettings self = liftDOM ((self ^. js "settings") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.workerThreadCount Mozilla Internals.workerThreadCount documentation> 
+getWorkerThreadCount :: (MonadDOM m) => Internals -> m Word
+getWorkerThreadCount self
+  = liftDOM
+      (round <$> ((self ^. js "workerThreadCount") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.consoleProfiles Mozilla Internals.consoleProfiles documentation> 
+getConsoleProfiles ::
+                   (MonadDOM m) => Internals -> m [Maybe ScriptProfile]
+getConsoleProfiles self
+  = liftDOM ((self ^. js "consoleProfiles") >>= fromJSArray)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/KeyboardEvent.hs b/src/Language/Javascript/JSaddle/DOM/Generated/KeyboardEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/KeyboardEvent.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.KeyboardEvent
+       (initKeyboardEvent, pattern DOM_KEY_LOCATION_STANDARD,
+        pattern DOM_KEY_LOCATION_LEFT, pattern DOM_KEY_LOCATION_RIGHT,
+        pattern DOM_KEY_LOCATION_NUMPAD, getKeyIdentifier, getLocation,
+        getKeyLocation, getCtrlKey, getShiftKey, getAltKey, getMetaKey,
+        getAltGraphKey, KeyboardEvent, castToKeyboardEvent,
+        gTypeKeyboardEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent.initKeyboardEvent Mozilla KeyboardEvent.initKeyboardEvent documentation> 
+initKeyboardEvent ::
+                  (MonadDOM m, ToJSString type', ToJSString keyIdentifier) =>
+                    KeyboardEvent ->
+                      type' ->
+                        Bool ->
+                          Bool ->
+                            Maybe Window ->
+                              keyIdentifier ->
+                                Word -> Bool -> Bool -> Bool -> Bool -> Bool -> m ()
+initKeyboardEvent self type' canBubble cancelable view
+  keyIdentifier location ctrlKey altKey shiftKey metaKey altGraphKey
+  = liftDOM
+      (void
+         (self ^. jsf "initKeyboardEvent"
+            [toJSVal type', toJSVal canBubble, toJSVal cancelable,
+             toJSVal view, toJSVal keyIdentifier, toJSVal location,
+             toJSVal ctrlKey, toJSVal altKey, toJSVal shiftKey, toJSVal metaKey,
+             toJSVal altGraphKey]))
+pattern DOM_KEY_LOCATION_STANDARD = 0
+pattern DOM_KEY_LOCATION_LEFT = 1
+pattern DOM_KEY_LOCATION_RIGHT = 2
+pattern DOM_KEY_LOCATION_NUMPAD = 3
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent.keyIdentifier Mozilla KeyboardEvent.keyIdentifier documentation> 
+getKeyIdentifier ::
+                 (MonadDOM m, FromJSString result) => KeyboardEvent -> m result
+getKeyIdentifier self
+  = liftDOM ((self ^. js "keyIdentifier") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent.location Mozilla KeyboardEvent.location documentation> 
+getLocation :: (MonadDOM m) => KeyboardEvent -> m Word
+getLocation self
+  = liftDOM (round <$> ((self ^. js "location") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent.keyLocation Mozilla KeyboardEvent.keyLocation documentation> 
+getKeyLocation :: (MonadDOM m) => KeyboardEvent -> m Word
+getKeyLocation self
+  = liftDOM (round <$> ((self ^. js "keyLocation") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent.ctrlKey Mozilla KeyboardEvent.ctrlKey documentation> 
+getCtrlKey :: (MonadDOM m) => KeyboardEvent -> m Bool
+getCtrlKey self = liftDOM ((self ^. js "ctrlKey") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent.shiftKey Mozilla KeyboardEvent.shiftKey documentation> 
+getShiftKey :: (MonadDOM m) => KeyboardEvent -> m Bool
+getShiftKey self = liftDOM ((self ^. js "shiftKey") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent.altKey Mozilla KeyboardEvent.altKey documentation> 
+getAltKey :: (MonadDOM m) => KeyboardEvent -> m Bool
+getAltKey self = liftDOM ((self ^. js "altKey") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent.metaKey Mozilla KeyboardEvent.metaKey documentation> 
+getMetaKey :: (MonadDOM m) => KeyboardEvent -> m Bool
+getMetaKey self = liftDOM ((self ^. js "metaKey") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent.altGraphKey Mozilla KeyboardEvent.altGraphKey documentation> 
+getAltGraphKey :: (MonadDOM m) => KeyboardEvent -> m Bool
+getAltGraphKey self
+  = liftDOM ((self ^. js "altGraphKey") >>= valToBool)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/Location.hs b/src/Language/Javascript/JSaddle/DOM/Generated/Location.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/Location.hs
@@ -0,0 +1,134 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.Location
+       (assign, replace, reload, toString, setHref, getHref, setProtocol,
+        getProtocol, setHost, getHost, setHostname, getHostname, setPort,
+        getPort, setPathname, getPathname, setSearch, getSearch, setHash,
+        getHash, getOrigin, getAncestorOrigins, Location, castToLocation,
+        gTypeLocation)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.assign Mozilla Location.assign documentation> 
+assign :: (MonadDOM m, ToJSString url) => Location -> url -> m ()
+assign self url
+  = liftDOM (void (self ^. jsf "assign" [toJSVal url]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.replace Mozilla Location.replace documentation> 
+replace :: (MonadDOM m, ToJSString url) => Location -> url -> m ()
+replace self url
+  = liftDOM (void (self ^. jsf "replace" [toJSVal url]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.reload Mozilla Location.reload documentation> 
+reload :: (MonadDOM m) => Location -> m ()
+reload self = liftDOM (void (self ^. js "reload"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.toString Mozilla Location.toString documentation> 
+toString ::
+         (MonadDOM m, FromJSString result) => Location -> m result
+toString self
+  = liftDOM ((self ^. js "toString") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.href Mozilla Location.href documentation> 
+setHref :: (MonadDOM m, ToJSString val) => Location -> val -> m ()
+setHref self val = liftDOM (self ^. jss "href" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.href Mozilla Location.href documentation> 
+getHref ::
+        (MonadDOM m, FromJSString result) => Location -> m result
+getHref self = liftDOM ((self ^. js "href") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.protocol Mozilla Location.protocol documentation> 
+setProtocol ::
+            (MonadDOM m, ToJSString val) => Location -> val -> m ()
+setProtocol self val
+  = liftDOM (self ^. jss "protocol" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.protocol Mozilla Location.protocol documentation> 
+getProtocol ::
+            (MonadDOM m, FromJSString result) => Location -> m result
+getProtocol self
+  = liftDOM ((self ^. js "protocol") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.host Mozilla Location.host documentation> 
+setHost :: (MonadDOM m, ToJSString val) => Location -> val -> m ()
+setHost self val = liftDOM (self ^. jss "host" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.host Mozilla Location.host documentation> 
+getHost ::
+        (MonadDOM m, FromJSString result) => Location -> m result
+getHost self = liftDOM ((self ^. js "host") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.hostname Mozilla Location.hostname documentation> 
+setHostname ::
+            (MonadDOM m, ToJSString val) => Location -> val -> m ()
+setHostname self val
+  = liftDOM (self ^. jss "hostname" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.hostname Mozilla Location.hostname documentation> 
+getHostname ::
+            (MonadDOM m, FromJSString result) => Location -> m result
+getHostname self
+  = liftDOM ((self ^. js "hostname") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.port Mozilla Location.port documentation> 
+setPort :: (MonadDOM m, ToJSString val) => Location -> val -> m ()
+setPort self val = liftDOM (self ^. jss "port" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.port Mozilla Location.port documentation> 
+getPort ::
+        (MonadDOM m, FromJSString result) => Location -> m result
+getPort self = liftDOM ((self ^. js "port") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.pathname Mozilla Location.pathname documentation> 
+setPathname ::
+            (MonadDOM m, ToJSString val) => Location -> val -> m ()
+setPathname self val
+  = liftDOM (self ^. jss "pathname" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.pathname Mozilla Location.pathname documentation> 
+getPathname ::
+            (MonadDOM m, FromJSString result) => Location -> m result
+getPathname self
+  = liftDOM ((self ^. js "pathname") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.search Mozilla Location.search documentation> 
+setSearch ::
+          (MonadDOM m, ToJSString val) => Location -> val -> m ()
+setSearch self val = liftDOM (self ^. jss "search" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.search Mozilla Location.search documentation> 
+getSearch ::
+          (MonadDOM m, FromJSString result) => Location -> m result
+getSearch self
+  = liftDOM ((self ^. js "search") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.hash Mozilla Location.hash documentation> 
+setHash :: (MonadDOM m, ToJSString val) => Location -> val -> m ()
+setHash self val = liftDOM (self ^. jss "hash" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.hash Mozilla Location.hash documentation> 
+getHash ::
+        (MonadDOM m, FromJSString result) => Location -> m result
+getHash self = liftDOM ((self ^. js "hash") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.origin Mozilla Location.origin documentation> 
+getOrigin ::
+          (MonadDOM m, FromJSString result) => Location -> m result
+getOrigin self
+  = liftDOM ((self ^. js "origin") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.ancestorOrigins Mozilla Location.ancestorOrigins documentation> 
+getAncestorOrigins ::
+                   (MonadDOM m) => Location -> m (Maybe DOMStringList)
+getAncestorOrigins self
+  = liftDOM ((self ^. js "ancestorOrigins") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/MallocStatistics.hs b/src/Language/Javascript/JSaddle/DOM/Generated/MallocStatistics.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/MallocStatistics.hs
@@ -0,0 +1,34 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.MallocStatistics
+       (getReservedVMBytes, getCommittedVMBytes, getFreeListBytes,
+        MallocStatistics, castToMallocStatistics, gTypeMallocStatistics)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MallocStatistics.reservedVMBytes Mozilla MallocStatistics.reservedVMBytes documentation> 
+getReservedVMBytes :: (MonadDOM m) => MallocStatistics -> m Word
+getReservedVMBytes self
+  = liftDOM
+      (round <$> ((self ^. js "reservedVMBytes") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MallocStatistics.committedVMBytes Mozilla MallocStatistics.committedVMBytes documentation> 
+getCommittedVMBytes :: (MonadDOM m) => MallocStatistics -> m Word
+getCommittedVMBytes self
+  = liftDOM
+      (round <$> ((self ^. js "committedVMBytes") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MallocStatistics.freeListBytes Mozilla MallocStatistics.freeListBytes documentation> 
+getFreeListBytes :: (MonadDOM m) => MallocStatistics -> m Word
+getFreeListBytes self
+  = liftDOM
+      (round <$> ((self ^. js "freeListBytes") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/MediaController.hs b/src/Language/Javascript/JSaddle/DOM/Generated/MediaController.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/MediaController.hs
@@ -0,0 +1,116 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.MediaController
+       (newMediaController, play, pause, unpause, getBuffered,
+        getSeekable, getDuration, setCurrentTime, getCurrentTime,
+        getPaused, getPlayed, getPlaybackState, setDefaultPlaybackRate,
+        getDefaultPlaybackRate, setPlaybackRate, getPlaybackRate,
+        setVolume, getVolume, setMuted, getMuted, MediaController,
+        castToMediaController, gTypeMediaController)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController Mozilla MediaController documentation> 
+newMediaController :: (MonadDOM m) => m MediaController
+newMediaController
+  = liftDOM (MediaController <$> new (jsg "MediaController") ())
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.play Mozilla MediaController.play documentation> 
+play :: (MonadDOM m) => MediaController -> m ()
+play self = liftDOM (void (self ^. js "play"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.pause Mozilla MediaController.pause documentation> 
+pause :: (MonadDOM m) => MediaController -> m ()
+pause self = liftDOM (void (self ^. js "pause"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.unpause Mozilla MediaController.unpause documentation> 
+unpause :: (MonadDOM m) => MediaController -> m ()
+unpause self = liftDOM (void (self ^. js "unpause"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.buffered Mozilla MediaController.buffered documentation> 
+getBuffered ::
+            (MonadDOM m) => MediaController -> m (Maybe TimeRanges)
+getBuffered self = liftDOM ((self ^. js "buffered") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.seekable Mozilla MediaController.seekable documentation> 
+getSeekable ::
+            (MonadDOM m) => MediaController -> m (Maybe TimeRanges)
+getSeekable self = liftDOM ((self ^. js "seekable") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.duration Mozilla MediaController.duration documentation> 
+getDuration :: (MonadDOM m) => MediaController -> m Double
+getDuration self
+  = liftDOM ((self ^. js "duration") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.currentTime Mozilla MediaController.currentTime documentation> 
+setCurrentTime :: (MonadDOM m) => MediaController -> Double -> m ()
+setCurrentTime self val
+  = liftDOM (self ^. jss "currentTime" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.currentTime Mozilla MediaController.currentTime documentation> 
+getCurrentTime :: (MonadDOM m) => MediaController -> m Double
+getCurrentTime self
+  = liftDOM ((self ^. js "currentTime") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.paused Mozilla MediaController.paused documentation> 
+getPaused :: (MonadDOM m) => MediaController -> m Bool
+getPaused self = liftDOM ((self ^. js "paused") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.played Mozilla MediaController.played documentation> 
+getPlayed ::
+          (MonadDOM m) => MediaController -> m (Maybe TimeRanges)
+getPlayed self = liftDOM ((self ^. js "played") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.playbackState Mozilla MediaController.playbackState documentation> 
+getPlaybackState ::
+                 (MonadDOM m, FromJSString result) => MediaController -> m result
+getPlaybackState self
+  = liftDOM ((self ^. js "playbackState") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.defaultPlaybackRate Mozilla MediaController.defaultPlaybackRate documentation> 
+setDefaultPlaybackRate ::
+                       (MonadDOM m) => MediaController -> Double -> m ()
+setDefaultPlaybackRate self val
+  = liftDOM (self ^. jss "defaultPlaybackRate" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.defaultPlaybackRate Mozilla MediaController.defaultPlaybackRate documentation> 
+getDefaultPlaybackRate ::
+                       (MonadDOM m) => MediaController -> m Double
+getDefaultPlaybackRate self
+  = liftDOM ((self ^. js "defaultPlaybackRate") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.playbackRate Mozilla MediaController.playbackRate documentation> 
+setPlaybackRate ::
+                (MonadDOM m) => MediaController -> Double -> m ()
+setPlaybackRate self val
+  = liftDOM (self ^. jss "playbackRate" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.playbackRate Mozilla MediaController.playbackRate documentation> 
+getPlaybackRate :: (MonadDOM m) => MediaController -> m Double
+getPlaybackRate self
+  = liftDOM ((self ^. js "playbackRate") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.volume Mozilla MediaController.volume documentation> 
+setVolume :: (MonadDOM m) => MediaController -> Double -> m ()
+setVolume self val = liftDOM (self ^. jss "volume" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.volume Mozilla MediaController.volume documentation> 
+getVolume :: (MonadDOM m) => MediaController -> m Double
+getVolume self = liftDOM ((self ^. js "volume") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.muted Mozilla MediaController.muted documentation> 
+setMuted :: (MonadDOM m) => MediaController -> Bool -> m ()
+setMuted self val = liftDOM (self ^. jss "muted" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.muted Mozilla MediaController.muted documentation> 
+getMuted :: (MonadDOM m) => MediaController -> m Bool
+getMuted self = liftDOM ((self ^. js "muted") >>= valToBool)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/MediaControlsHost.hs b/src/Language/Javascript/JSaddle/DOM/Generated/MediaControlsHost.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/MediaControlsHost.hs
@@ -0,0 +1,170 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.MediaControlsHost
+       (sortedTrackListForMenu, sortedTrackListForMenuAudio,
+        displayNameForTrack, displayNameForTrackAudio,
+        setSelectedTextTrack, updateTextTrackContainer, enteredFullscreen,
+        exitedFullscreen, enterFullscreenOptimized, mediaUIImageData,
+        getCaptionMenuOffItem, getCaptionMenuAutomaticItem,
+        getCaptionDisplayMode, getTextTrackContainer,
+        getMediaPlaybackAllowsInline, getSupportsFullscreen,
+        getUserGestureRequired, getExternalDeviceDisplayName,
+        getExternalDeviceType, setControlsDependOnPageScaleFactor,
+        getControlsDependOnPageScaleFactor, MediaControlsHost,
+        castToMediaControlsHost, gTypeMediaControlsHost)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.sortedTrackListForMenu Mozilla MediaControlsHost.sortedTrackListForMenu documentation> 
+sortedTrackListForMenu ::
+                       (MonadDOM m) =>
+                         MediaControlsHost -> Maybe TextTrackList -> m [Maybe TextTrack]
+sortedTrackListForMenu self trackList
+  = liftDOM
+      ((self ^. jsf "sortedTrackListForMenu" [toJSVal trackList]) >>=
+         fromJSArray)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.sortedTrackListForMenu Mozilla MediaControlsHost.sortedTrackListForMenu documentation> 
+sortedTrackListForMenuAudio ::
+                            (MonadDOM m) =>
+                              MediaControlsHost -> Maybe AudioTrackList -> m [Maybe AudioTrack]
+sortedTrackListForMenuAudio self trackList
+  = liftDOM
+      ((self ^. jsf "sortedTrackListForMenu" [toJSVal trackList]) >>=
+         fromJSArray)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.displayNameForTrack Mozilla MediaControlsHost.displayNameForTrack documentation> 
+displayNameForTrack ::
+                    (MonadDOM m, FromJSString result) =>
+                      MediaControlsHost -> Maybe TextTrack -> m result
+displayNameForTrack self track
+  = liftDOM
+      ((self ^. jsf "displayNameForTrack" [toJSVal track]) >>=
+         fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.displayNameForTrack Mozilla MediaControlsHost.displayNameForTrack documentation> 
+displayNameForTrackAudio ::
+                         (MonadDOM m, FromJSString result) =>
+                           MediaControlsHost -> Maybe AudioTrack -> m result
+displayNameForTrackAudio self track
+  = liftDOM
+      ((self ^. jsf "displayNameForTrack" [toJSVal track]) >>=
+         fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.setSelectedTextTrack Mozilla MediaControlsHost.setSelectedTextTrack documentation> 
+setSelectedTextTrack ::
+                     (MonadDOM m) => MediaControlsHost -> Maybe TextTrack -> m ()
+setSelectedTextTrack self track
+  = liftDOM
+      (void (self ^. jsf "setSelectedTextTrack" [toJSVal track]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.updateTextTrackContainer Mozilla MediaControlsHost.updateTextTrackContainer documentation> 
+updateTextTrackContainer ::
+                         (MonadDOM m) => MediaControlsHost -> m ()
+updateTextTrackContainer self
+  = liftDOM (void (self ^. js "updateTextTrackContainer"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.enteredFullscreen Mozilla MediaControlsHost.enteredFullscreen documentation> 
+enteredFullscreen :: (MonadDOM m) => MediaControlsHost -> m ()
+enteredFullscreen self
+  = liftDOM (void (self ^. js "enteredFullscreen"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.exitedFullscreen Mozilla MediaControlsHost.exitedFullscreen documentation> 
+exitedFullscreen :: (MonadDOM m) => MediaControlsHost -> m ()
+exitedFullscreen self
+  = liftDOM (void (self ^. js "exitedFullscreen"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.enterFullscreenOptimized Mozilla MediaControlsHost.enterFullscreenOptimized documentation> 
+enterFullscreenOptimized ::
+                         (MonadDOM m) => MediaControlsHost -> m ()
+enterFullscreenOptimized self
+  = liftDOM (void (self ^. js "enterFullscreenOptimized"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.mediaUIImageData Mozilla MediaControlsHost.mediaUIImageData documentation> 
+mediaUIImageData ::
+                 (MonadDOM m, FromJSString result) =>
+                   MediaControlsHost -> MediaUIPartID -> m result
+mediaUIImageData self partID
+  = liftDOM
+      ((self ^. jsf "mediaUIImageData" [toJSVal partID]) >>=
+         fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.captionMenuOffItem Mozilla MediaControlsHost.captionMenuOffItem documentation> 
+getCaptionMenuOffItem ::
+                      (MonadDOM m) => MediaControlsHost -> m (Maybe TextTrack)
+getCaptionMenuOffItem self
+  = liftDOM ((self ^. js "captionMenuOffItem") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.captionMenuAutomaticItem Mozilla MediaControlsHost.captionMenuAutomaticItem documentation> 
+getCaptionMenuAutomaticItem ::
+                            (MonadDOM m) => MediaControlsHost -> m (Maybe TextTrack)
+getCaptionMenuAutomaticItem self
+  = liftDOM ((self ^. js "captionMenuAutomaticItem") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.captionDisplayMode Mozilla MediaControlsHost.captionDisplayMode documentation> 
+getCaptionDisplayMode ::
+                      (MonadDOM m, FromJSString result) => MediaControlsHost -> m result
+getCaptionDisplayMode self
+  = liftDOM
+      ((self ^. js "captionDisplayMode") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.textTrackContainer Mozilla MediaControlsHost.textTrackContainer documentation> 
+getTextTrackContainer ::
+                      (MonadDOM m) => MediaControlsHost -> m (Maybe HTMLElement)
+getTextTrackContainer self
+  = liftDOM ((self ^. js "textTrackContainer") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.mediaPlaybackAllowsInline Mozilla MediaControlsHost.mediaPlaybackAllowsInline documentation> 
+getMediaPlaybackAllowsInline ::
+                             (MonadDOM m) => MediaControlsHost -> m Bool
+getMediaPlaybackAllowsInline self
+  = liftDOM ((self ^. js "mediaPlaybackAllowsInline") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.supportsFullscreen Mozilla MediaControlsHost.supportsFullscreen documentation> 
+getSupportsFullscreen ::
+                      (MonadDOM m) => MediaControlsHost -> m Bool
+getSupportsFullscreen self
+  = liftDOM ((self ^. js "supportsFullscreen") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.userGestureRequired Mozilla MediaControlsHost.userGestureRequired documentation> 
+getUserGestureRequired ::
+                       (MonadDOM m) => MediaControlsHost -> m Bool
+getUserGestureRequired self
+  = liftDOM ((self ^. js "userGestureRequired") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.externalDeviceDisplayName Mozilla MediaControlsHost.externalDeviceDisplayName documentation> 
+getExternalDeviceDisplayName ::
+                             (MonadDOM m, FromJSString result) => MediaControlsHost -> m result
+getExternalDeviceDisplayName self
+  = liftDOM
+      ((self ^. js "externalDeviceDisplayName") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.externalDeviceType Mozilla MediaControlsHost.externalDeviceType documentation> 
+getExternalDeviceType ::
+                      (MonadDOM m) => MediaControlsHost -> m DeviceType
+getExternalDeviceType self
+  = liftDOM
+      ((self ^. js "externalDeviceType") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.controlsDependOnPageScaleFactor Mozilla MediaControlsHost.controlsDependOnPageScaleFactor documentation> 
+setControlsDependOnPageScaleFactor ::
+                                   (MonadDOM m) => MediaControlsHost -> Bool -> m ()
+setControlsDependOnPageScaleFactor self val
+  = liftDOM
+      (self ^. jss "controlsDependOnPageScaleFactor" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.controlsDependOnPageScaleFactor Mozilla MediaControlsHost.controlsDependOnPageScaleFactor documentation> 
+getControlsDependOnPageScaleFactor ::
+                                   (MonadDOM m) => MediaControlsHost -> m Bool
+getControlsDependOnPageScaleFactor self
+  = liftDOM
+      ((self ^. js "controlsDependOnPageScaleFactor") >>= valToBool)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/MediaElementAudioSourceNode.hs b/src/Language/Javascript/JSaddle/DOM/Generated/MediaElementAudioSourceNode.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/MediaElementAudioSourceNode.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.MediaElementAudioSourceNode
+       (getMediaElement, MediaElementAudioSourceNode,
+        castToMediaElementAudioSourceNode,
+        gTypeMediaElementAudioSourceNode)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaElementAudioSourceNode.mediaElement Mozilla MediaElementAudioSourceNode.mediaElement documentation> 
+getMediaElement ::
+                (MonadDOM m) =>
+                  MediaElementAudioSourceNode -> m (Maybe HTMLMediaElement)
+getMediaElement self
+  = liftDOM ((self ^. js "mediaElement") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/MediaError.hs b/src/Language/Javascript/JSaddle/DOM/Generated/MediaError.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/MediaError.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.MediaError
+       (pattern MEDIA_ERR_ABORTED, pattern MEDIA_ERR_NETWORK,
+        pattern MEDIA_ERR_DECODE, pattern MEDIA_ERR_SRC_NOT_SUPPORTED,
+        pattern MEDIA_ERR_ENCRYPTED, getCode, MediaError, castToMediaError,
+        gTypeMediaError)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+pattern MEDIA_ERR_ABORTED = 1
+pattern MEDIA_ERR_NETWORK = 2
+pattern MEDIA_ERR_DECODE = 3
+pattern MEDIA_ERR_SRC_NOT_SUPPORTED = 4
+pattern MEDIA_ERR_ENCRYPTED = 5
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaError.code Mozilla MediaError.code documentation> 
+getCode :: (MonadDOM m) => MediaError -> m Word
+getCode self
+  = liftDOM (round <$> ((self ^. js "code") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/MediaKeyError.hs b/src/Language/Javascript/JSaddle/DOM/Generated/MediaKeyError.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/MediaKeyError.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.MediaKeyError
+       (pattern MEDIA_KEYERR_UNKNOWN, pattern MEDIA_KEYERR_CLIENT,
+        pattern MEDIA_KEYERR_SERVICE, pattern MEDIA_KEYERR_OUTPUT,
+        pattern MEDIA_KEYERR_HARDWARECHANGE, pattern MEDIA_KEYERR_DOMAIN,
+        getCode, getSystemCode, MediaKeyError, castToMediaKeyError,
+        gTypeMediaKeyError)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+pattern MEDIA_KEYERR_UNKNOWN = 1
+pattern MEDIA_KEYERR_CLIENT = 2
+pattern MEDIA_KEYERR_SERVICE = 3
+pattern MEDIA_KEYERR_OUTPUT = 4
+pattern MEDIA_KEYERR_HARDWARECHANGE = 5
+pattern MEDIA_KEYERR_DOMAIN = 6
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeyError.code Mozilla WebKitMediaKeyError.code documentation> 
+getCode :: (MonadDOM m) => MediaKeyError -> m Word
+getCode self
+  = liftDOM (round <$> ((self ^. js "code") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeyError.systemCode Mozilla WebKitMediaKeyError.systemCode documentation> 
+getSystemCode :: (MonadDOM m) => MediaKeyError -> m Word
+getSystemCode self
+  = liftDOM (round <$> ((self ^. js "systemCode") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/MediaKeyEvent.hs b/src/Language/Javascript/JSaddle/DOM/Generated/MediaKeyEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/MediaKeyEvent.hs
@@ -0,0 +1,55 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.MediaKeyEvent
+       (getKeySystem, getSessionId, getInitData, getMessage,
+        getDefaultURL, getErrorCode, getSystemCode, MediaKeyEvent,
+        castToMediaKeyEvent, gTypeMediaKeyEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeyEvent.keySystem Mozilla MediaKeyEvent.keySystem documentation> 
+getKeySystem ::
+             (MonadDOM m, FromJSString result) => MediaKeyEvent -> m result
+getKeySystem self
+  = liftDOM ((self ^. js "keySystem") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeyEvent.sessionId Mozilla MediaKeyEvent.sessionId documentation> 
+getSessionId ::
+             (MonadDOM m, FromJSString result) => MediaKeyEvent -> m result
+getSessionId self
+  = liftDOM ((self ^. js "sessionId") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeyEvent.initData Mozilla MediaKeyEvent.initData documentation> 
+getInitData ::
+            (MonadDOM m) => MediaKeyEvent -> m (Maybe Uint8Array)
+getInitData self = liftDOM ((self ^. js "initData") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeyEvent.message Mozilla MediaKeyEvent.message documentation> 
+getMessage :: (MonadDOM m) => MediaKeyEvent -> m (Maybe Uint8Array)
+getMessage self = liftDOM ((self ^. js "message") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeyEvent.defaultURL Mozilla MediaKeyEvent.defaultURL documentation> 
+getDefaultURL ::
+              (MonadDOM m, FromJSString result) => MediaKeyEvent -> m result
+getDefaultURL self
+  = liftDOM ((self ^. js "defaultURL") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeyEvent.errorCode Mozilla MediaKeyEvent.errorCode documentation> 
+getErrorCode ::
+             (MonadDOM m) => MediaKeyEvent -> m (Maybe MediaKeyError)
+getErrorCode self
+  = liftDOM ((self ^. js "errorCode") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeyEvent.systemCode Mozilla MediaKeyEvent.systemCode documentation> 
+getSystemCode :: (MonadDOM m) => MediaKeyEvent -> m Word
+getSystemCode self
+  = liftDOM (round <$> ((self ^. js "systemCode") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/MediaKeyMessageEvent.hs b/src/Language/Javascript/JSaddle/DOM/Generated/MediaKeyMessageEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/MediaKeyMessageEvent.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.MediaKeyMessageEvent
+       (getMessage, getDestinationURL, MediaKeyMessageEvent,
+        castToMediaKeyMessageEvent, gTypeMediaKeyMessageEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeyMessageEvent.message Mozilla WebKitMediaKeyMessageEvent.message documentation> 
+getMessage ::
+           (MonadDOM m) => MediaKeyMessageEvent -> m (Maybe Uint8Array)
+getMessage self = liftDOM ((self ^. js "message") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeyMessageEvent.destinationURL Mozilla WebKitMediaKeyMessageEvent.destinationURL documentation> 
+getDestinationURL ::
+                  (MonadDOM m, FromJSString result) =>
+                    MediaKeyMessageEvent -> m result
+getDestinationURL self
+  = liftDOM ((self ^. js "destinationURL") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/MediaKeyNeededEvent.hs b/src/Language/Javascript/JSaddle/DOM/Generated/MediaKeyNeededEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/MediaKeyNeededEvent.hs
@@ -0,0 +1,21 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.MediaKeyNeededEvent
+       (getInitData, MediaKeyNeededEvent, castToMediaKeyNeededEvent,
+        gTypeMediaKeyNeededEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeyNeededEvent.initData Mozilla MediaKeyNeededEvent.initData documentation> 
+getInitData ::
+            (MonadDOM m) => MediaKeyNeededEvent -> m (Maybe Uint8Array)
+getInitData self = liftDOM ((self ^. js "initData") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/MediaKeySession.hs b/src/Language/Javascript/JSaddle/DOM/Generated/MediaKeySession.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/MediaKeySession.hs
@@ -0,0 +1,57 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.MediaKeySession
+       (update, close, getError, getKeySystem, getSessionId,
+        webKitKeyAdded, webKitKeyError, webKitKeyMessage, MediaKeySession,
+        castToMediaKeySession, gTypeMediaKeySession)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.update Mozilla WebKitMediaKeySession.update documentation> 
+update ::
+       (MonadDOM m, IsUint8Array key) =>
+         MediaKeySession -> Maybe key -> m ()
+update self key
+  = liftDOM (void (self ^. jsf "update" [toJSVal key]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.close Mozilla WebKitMediaKeySession.close documentation> 
+close :: (MonadDOM m) => MediaKeySession -> m ()
+close self = liftDOM (void (self ^. js "close"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.error Mozilla WebKitMediaKeySession.error documentation> 
+getError ::
+         (MonadDOM m) => MediaKeySession -> m (Maybe MediaKeyError)
+getError self = liftDOM ((self ^. js "error") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.keySystem Mozilla WebKitMediaKeySession.keySystem documentation> 
+getKeySystem ::
+             (MonadDOM m, FromJSString result) => MediaKeySession -> m result
+getKeySystem self
+  = liftDOM ((self ^. js "keySystem") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.sessionId Mozilla WebKitMediaKeySession.sessionId documentation> 
+getSessionId ::
+             (MonadDOM m, FromJSString result) => MediaKeySession -> m result
+getSessionId self
+  = liftDOM ((self ^. js "sessionId") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.onwebkitkeyadded Mozilla WebKitMediaKeySession.onwebkitkeyadded documentation> 
+webKitKeyAdded :: EventName MediaKeySession Event
+webKitKeyAdded = unsafeEventName (toJSString "webkitkeyadded")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.onwebkitkeyerror Mozilla WebKitMediaKeySession.onwebkitkeyerror documentation> 
+webKitKeyError :: EventName MediaKeySession Event
+webKitKeyError = unsafeEventName (toJSString "webkitkeyerror")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.onwebkitkeymessage Mozilla WebKitMediaKeySession.onwebkitkeymessage documentation> 
+webKitKeyMessage :: EventName MediaKeySession Event
+webKitKeyMessage = unsafeEventName (toJSString "webkitkeymessage")
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/MediaKeys.hs b/src/Language/Javascript/JSaddle/DOM/Generated/MediaKeys.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/MediaKeys.hs
@@ -0,0 +1,46 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.MediaKeys
+       (newMediaKeys, createSession, isTypeSupported, getKeySystem,
+        MediaKeys, castToMediaKeys, gTypeMediaKeys)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeys Mozilla WebKitMediaKeys documentation> 
+newMediaKeys ::
+             (MonadDOM m, ToJSString keySystem) => keySystem -> m MediaKeys
+newMediaKeys keySystem
+  = liftDOM (MediaKeys <$> new (jsg "MediaKeys") [toJSVal keySystem])
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeys.createSession Mozilla WebKitMediaKeys.createSession documentation> 
+createSession ::
+              (MonadDOM m, ToJSString type', IsUint8Array initData) =>
+                MediaKeys -> type' -> Maybe initData -> m (Maybe MediaKeySession)
+createSession self type' initData
+  = liftDOM
+      ((self ^. jsf "createSession" [toJSVal type', toJSVal initData])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeys.isTypeSupported Mozilla WebKitMediaKeys.isTypeSupported documentation> 
+isTypeSupported ::
+                (MonadDOM m, ToJSString keySystem, ToJSString type') =>
+                  MediaKeys -> keySystem -> type' -> m Bool
+isTypeSupported self keySystem type'
+  = liftDOM
+      ((self ^. jsf "isTypeSupported" [toJSVal keySystem, toJSVal type'])
+         >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeys.keySystem Mozilla WebKitMediaKeys.keySystem documentation> 
+getKeySystem ::
+             (MonadDOM m, FromJSString result) => MediaKeys -> m result
+getKeySystem self
+  = liftDOM ((self ^. js "keySystem") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/MediaList.hs b/src/Language/Javascript/JSaddle/DOM/Generated/MediaList.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/MediaList.hs
@@ -0,0 +1,55 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.MediaList
+       (item, deleteMedium, appendMedium, setMediaText, getMediaText,
+        getLength, MediaList, castToMediaList, gTypeMediaList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaList.item Mozilla MediaList.item documentation> 
+item ::
+     (MonadDOM m, FromJSString result) =>
+       MediaList -> Word -> m (Maybe result)
+item self index
+  = liftDOM
+      ((self ^. jsf "item" [toJSVal index]) >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaList.deleteMedium Mozilla MediaList.deleteMedium documentation> 
+deleteMedium ::
+             (MonadDOM m, ToJSString oldMedium) =>
+               MediaList -> oldMedium -> m ()
+deleteMedium self oldMedium
+  = liftDOM (void (self ^. jsf "deleteMedium" [toJSVal oldMedium]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaList.appendMedium Mozilla MediaList.appendMedium documentation> 
+appendMedium ::
+             (MonadDOM m, ToJSString newMedium) =>
+               MediaList -> newMedium -> m ()
+appendMedium self newMedium
+  = liftDOM (void (self ^. jsf "appendMedium" [toJSVal newMedium]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaList.mediaText Mozilla MediaList.mediaText documentation> 
+setMediaText ::
+             (MonadDOM m, ToJSString val) => MediaList -> Maybe val -> m ()
+setMediaText self val
+  = liftDOM (self ^. jss "mediaText" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaList.mediaText Mozilla MediaList.mediaText documentation> 
+getMediaText ::
+             (MonadDOM m, FromJSString result) => MediaList -> m (Maybe result)
+getMediaText self
+  = liftDOM ((self ^. js "mediaText") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaList.length Mozilla MediaList.length documentation> 
+getLength :: (MonadDOM m) => MediaList -> m Word
+getLength self
+  = liftDOM (round <$> ((self ^. js "length") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/MediaQueryList.hs b/src/Language/Javascript/JSaddle/DOM/Generated/MediaQueryList.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/MediaQueryList.hs
@@ -0,0 +1,40 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.MediaQueryList
+       (addListener, removeListener, getMedia, getMatches, MediaQueryList,
+        castToMediaQueryList, gTypeMediaQueryList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaQueryList.addListener Mozilla MediaQueryList.addListener documentation> 
+addListener ::
+            (MonadDOM m) =>
+              MediaQueryList -> Maybe MediaQueryListListener -> m ()
+addListener self listener
+  = liftDOM (void (self ^. jsf "addListener" [toJSVal listener]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaQueryList.removeListener Mozilla MediaQueryList.removeListener documentation> 
+removeListener ::
+               (MonadDOM m) =>
+                 MediaQueryList -> Maybe MediaQueryListListener -> m ()
+removeListener self listener
+  = liftDOM (void (self ^. jsf "removeListener" [toJSVal listener]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaQueryList.media Mozilla MediaQueryList.media documentation> 
+getMedia ::
+         (MonadDOM m, FromJSString result) => MediaQueryList -> m result
+getMedia self
+  = liftDOM ((self ^. js "media") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaQueryList.matches Mozilla MediaQueryList.matches documentation> 
+getMatches :: (MonadDOM m) => MediaQueryList -> m Bool
+getMatches self = liftDOM ((self ^. js "matches") >>= valToBool)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/MediaQueryListListener.hs b/src/Language/Javascript/JSaddle/DOM/Generated/MediaQueryListListener.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/MediaQueryListListener.hs
@@ -0,0 +1,46 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.MediaQueryListListener
+       (newMediaQueryListListener, newMediaQueryListListenerSync,
+        newMediaQueryListListenerAsync, MediaQueryListListener)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaQueryListListener Mozilla MediaQueryListListener documentation> 
+newMediaQueryListListener ::
+                          (MonadDOM m) =>
+                            (Maybe MediaQueryList -> JSM ()) -> m MediaQueryListListener
+newMediaQueryListListener callback
+  = liftDOM
+      (MediaQueryListListener . Callback <$>
+         function ""
+           (\ _ _ [list] -> fromJSVal list >>= \ list' -> callback list'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaQueryListListener Mozilla MediaQueryListListener documentation> 
+newMediaQueryListListenerSync ::
+                              (MonadDOM m) =>
+                                (Maybe MediaQueryList -> JSM ()) -> m MediaQueryListListener
+newMediaQueryListListenerSync callback
+  = liftDOM
+      (MediaQueryListListener . Callback <$>
+         function ""
+           (\ _ _ [list] -> fromJSVal list >>= \ list' -> callback list'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaQueryListListener Mozilla MediaQueryListListener documentation> 
+newMediaQueryListListenerAsync ::
+                               (MonadDOM m) =>
+                                 (Maybe MediaQueryList -> JSM ()) -> m MediaQueryListListener
+newMediaQueryListListenerAsync callback
+  = liftDOM
+      (MediaQueryListListener . Callback <$>
+         function ""
+           (\ _ _ [list] -> fromJSVal list >>= \ list' -> callback list'))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/MediaSource.hs b/src/Language/Javascript/JSaddle/DOM/Generated/MediaSource.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/MediaSource.hs
@@ -0,0 +1,79 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.MediaSource
+       (newMediaSource, addSourceBuffer, removeSourceBuffer, endOfStream,
+        isTypeSupported, getSourceBuffers, getActiveSourceBuffers,
+        setDuration, getDuration, getReadyState, MediaSource,
+        castToMediaSource, gTypeMediaSource)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource Mozilla MediaSource documentation> 
+newMediaSource :: (MonadDOM m) => m MediaSource
+newMediaSource
+  = liftDOM (MediaSource <$> new (jsg "MediaSource") ())
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.addSourceBuffer Mozilla MediaSource.addSourceBuffer documentation> 
+addSourceBuffer ::
+                (MonadDOM m, ToJSString type') =>
+                  MediaSource -> type' -> m (Maybe SourceBuffer)
+addSourceBuffer self type'
+  = liftDOM
+      ((self ^. jsf "addSourceBuffer" [toJSVal type']) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.removeSourceBuffer Mozilla MediaSource.removeSourceBuffer documentation> 
+removeSourceBuffer ::
+                   (MonadDOM m) => MediaSource -> Maybe SourceBuffer -> m ()
+removeSourceBuffer self buffer
+  = liftDOM
+      (void (self ^. jsf "removeSourceBuffer" [toJSVal buffer]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.endOfStream Mozilla MediaSource.endOfStream documentation> 
+endOfStream ::
+            (MonadDOM m) => MediaSource -> EndOfStreamError -> m ()
+endOfStream self error
+  = liftDOM (void (self ^. jsf "endOfStream" [toJSVal error]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.isTypeSupported Mozilla MediaSource.isTypeSupported documentation> 
+isTypeSupported ::
+                (MonadDOM m, ToJSString type') => MediaSource -> type' -> m Bool
+isTypeSupported self type'
+  = liftDOM
+      ((self ^. jsf "isTypeSupported" [toJSVal type']) >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.sourceBuffers Mozilla MediaSource.sourceBuffers documentation> 
+getSourceBuffers ::
+                 (MonadDOM m) => MediaSource -> m (Maybe SourceBufferList)
+getSourceBuffers self
+  = liftDOM ((self ^. js "sourceBuffers") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.activeSourceBuffers Mozilla MediaSource.activeSourceBuffers documentation> 
+getActiveSourceBuffers ::
+                       (MonadDOM m) => MediaSource -> m (Maybe SourceBufferList)
+getActiveSourceBuffers self
+  = liftDOM ((self ^. js "activeSourceBuffers") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.duration Mozilla MediaSource.duration documentation> 
+setDuration :: (MonadDOM m) => MediaSource -> Double -> m ()
+setDuration self val
+  = liftDOM (self ^. jss "duration" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.duration Mozilla MediaSource.duration documentation> 
+getDuration :: (MonadDOM m) => MediaSource -> m Double
+getDuration self
+  = liftDOM ((self ^. js "duration") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.readyState Mozilla MediaSource.readyState documentation> 
+getReadyState ::
+              (MonadDOM m, FromJSString result) => MediaSource -> m result
+getReadyState self
+  = liftDOM ((self ^. js "readyState") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/MediaSourceStates.hs b/src/Language/Javascript/JSaddle/DOM/Generated/MediaSourceStates.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/MediaSourceStates.hs
@@ -0,0 +1,59 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.MediaSourceStates
+       (getSourceType, getSourceId, getWidth, getHeight, getFrameRate,
+        getAspectRatio, getFacingMode, getVolume, MediaSourceStates,
+        castToMediaSourceStates, gTypeMediaSourceStates)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSourceStates.sourceType Mozilla MediaSourceStates.sourceType documentation> 
+getSourceType ::
+              (MonadDOM m) => MediaSourceStates -> m SourceTypeEnum
+getSourceType self
+  = liftDOM ((self ^. js "sourceType") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSourceStates.sourceId Mozilla MediaSourceStates.sourceId documentation> 
+getSourceId ::
+            (MonadDOM m, FromJSString result) => MediaSourceStates -> m result
+getSourceId self
+  = liftDOM ((self ^. js "sourceId") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSourceStates.width Mozilla MediaSourceStates.width documentation> 
+getWidth :: (MonadDOM m) => MediaSourceStates -> m (Maybe Word)
+getWidth self = liftDOM ((self ^. js "width") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSourceStates.height Mozilla MediaSourceStates.height documentation> 
+getHeight :: (MonadDOM m) => MediaSourceStates -> m (Maybe Word)
+getHeight self = liftDOM ((self ^. js "height") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSourceStates.frameRate Mozilla MediaSourceStates.frameRate documentation> 
+getFrameRate ::
+             (MonadDOM m) => MediaSourceStates -> m (Maybe Float)
+getFrameRate self
+  = liftDOM ((self ^. js "frameRate") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSourceStates.aspectRatio Mozilla MediaSourceStates.aspectRatio documentation> 
+getAspectRatio ::
+               (MonadDOM m) => MediaSourceStates -> m (Maybe Float)
+getAspectRatio self
+  = liftDOM ((self ^. js "aspectRatio") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSourceStates.facingMode Mozilla MediaSourceStates.facingMode documentation> 
+getFacingMode ::
+              (MonadDOM m) => MediaSourceStates -> m (Maybe VideoFacingModeEnum)
+getFacingMode self
+  = liftDOM ((self ^. js "facingMode") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSourceStates.volume Mozilla MediaSourceStates.volume documentation> 
+getVolume :: (MonadDOM m) => MediaSourceStates -> m (Maybe Word)
+getVolume self = liftDOM ((self ^. js "volume") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/MediaStream.hs b/src/Language/Javascript/JSaddle/DOM/Generated/MediaStream.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/MediaStream.hs
@@ -0,0 +1,106 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.MediaStream
+       (newMediaStream, newMediaStream', newMediaStream'', getAudioTracks,
+        getVideoTracks, getTracks, addTrack, removeTrack, getTrackById,
+        clone, getId, getActive, active, inactive, addTrackEvent,
+        removeTrackEvent, MediaStream, castToMediaStream, gTypeMediaStream)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream Mozilla webkitMediaStream documentation> 
+newMediaStream :: (MonadDOM m) => m MediaStream
+newMediaStream
+  = liftDOM (MediaStream <$> new (jsg "MediaStream") ())
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream Mozilla webkitMediaStream documentation> 
+newMediaStream' ::
+                (MonadDOM m) => Maybe MediaStream -> m MediaStream
+newMediaStream' stream
+  = liftDOM
+      (MediaStream <$> new (jsg "MediaStream") [toJSVal stream])
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream Mozilla webkitMediaStream documentation> 
+newMediaStream'' ::
+                 (MonadDOM m, IsMediaStreamTrack tracks) =>
+                   [Maybe tracks] -> m MediaStream
+newMediaStream'' tracks
+  = liftDOM
+      (MediaStream <$> new (jsg "MediaStream") [toJSVal (array tracks)])
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.getAudioTracks Mozilla webkitMediaStream.getAudioTracks documentation> 
+getAudioTracks ::
+               (MonadDOM m) => MediaStream -> m [Maybe MediaStreamTrack]
+getAudioTracks self
+  = liftDOM ((self ^. js "getAudioTracks") >>= fromJSArray)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.getVideoTracks Mozilla webkitMediaStream.getVideoTracks documentation> 
+getVideoTracks ::
+               (MonadDOM m) => MediaStream -> m [Maybe MediaStreamTrack]
+getVideoTracks self
+  = liftDOM ((self ^. js "getVideoTracks") >>= fromJSArray)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.getTracks Mozilla webkitMediaStream.getTracks documentation> 
+getTracks ::
+          (MonadDOM m) => MediaStream -> m [Maybe MediaStreamTrack]
+getTracks self = liftDOM ((self ^. js "getTracks") >>= fromJSArray)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.addTrack Mozilla webkitMediaStream.addTrack documentation> 
+addTrack ::
+         (MonadDOM m, IsMediaStreamTrack track) =>
+           MediaStream -> Maybe track -> m ()
+addTrack self track
+  = liftDOM (void (self ^. jsf "addTrack" [toJSVal track]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.removeTrack Mozilla webkitMediaStream.removeTrack documentation> 
+removeTrack ::
+            (MonadDOM m, IsMediaStreamTrack track) =>
+              MediaStream -> Maybe track -> m ()
+removeTrack self track
+  = liftDOM (void (self ^. jsf "removeTrack" [toJSVal track]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.getTrackById Mozilla webkitMediaStream.getTrackById documentation> 
+getTrackById ::
+             (MonadDOM m, ToJSString trackId) =>
+               MediaStream -> trackId -> m (Maybe MediaStreamTrack)
+getTrackById self trackId
+  = liftDOM
+      ((self ^. jsf "getTrackById" [toJSVal trackId]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.clone Mozilla webkitMediaStream.clone documentation> 
+clone :: (MonadDOM m) => MediaStream -> m (Maybe MediaStream)
+clone self = liftDOM ((self ^. js "clone") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.id Mozilla webkitMediaStream.id documentation> 
+getId ::
+      (MonadDOM m, FromJSString result) => MediaStream -> m result
+getId self = liftDOM ((self ^. js "id") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.active Mozilla webkitMediaStream.active documentation> 
+getActive :: (MonadDOM m) => MediaStream -> m Bool
+getActive self = liftDOM ((self ^. js "active") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.onactive Mozilla webkitMediaStream.onactive documentation> 
+active :: EventName MediaStream Event
+active = unsafeEventName (toJSString "active")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.oninactive Mozilla webkitMediaStream.oninactive documentation> 
+inactive :: EventName MediaStream Event
+inactive = unsafeEventName (toJSString "inactive")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.onaddtrack Mozilla webkitMediaStream.onaddtrack documentation> 
+addTrackEvent :: EventName MediaStream Event
+addTrackEvent = unsafeEventName (toJSString "addtrack")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.onremovetrack Mozilla webkitMediaStream.onremovetrack documentation> 
+removeTrackEvent :: EventName MediaStream Event
+removeTrackEvent = unsafeEventName (toJSString "removetrack")
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/MediaStreamAudioDestinationNode.hs b/src/Language/Javascript/JSaddle/DOM/Generated/MediaStreamAudioDestinationNode.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/MediaStreamAudioDestinationNode.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.MediaStreamAudioDestinationNode
+       (getStream, MediaStreamAudioDestinationNode,
+        castToMediaStreamAudioDestinationNode,
+        gTypeMediaStreamAudioDestinationNode)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamAudioDestinationNode.stream Mozilla MediaStreamAudioDestinationNode.stream documentation> 
+getStream ::
+          (MonadDOM m) =>
+            MediaStreamAudioDestinationNode -> m (Maybe MediaStream)
+getStream self = liftDOM ((self ^. js "stream") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/MediaStreamAudioSourceNode.hs b/src/Language/Javascript/JSaddle/DOM/Generated/MediaStreamAudioSourceNode.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/MediaStreamAudioSourceNode.hs
@@ -0,0 +1,22 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.MediaStreamAudioSourceNode
+       (getMediaStream, MediaStreamAudioSourceNode,
+        castToMediaStreamAudioSourceNode, gTypeMediaStreamAudioSourceNode)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamAudioSourceNode.mediaStream Mozilla MediaStreamAudioSourceNode.mediaStream documentation> 
+getMediaStream ::
+               (MonadDOM m) => MediaStreamAudioSourceNode -> m (Maybe MediaStream)
+getMediaStream self
+  = liftDOM ((self ^. js "mediaStream") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/MediaStreamEvent.hs b/src/Language/Javascript/JSaddle/DOM/Generated/MediaStreamEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/MediaStreamEvent.hs
@@ -0,0 +1,21 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.MediaStreamEvent
+       (getStream, MediaStreamEvent, castToMediaStreamEvent,
+        gTypeMediaStreamEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamEvent.stream Mozilla MediaStreamEvent.stream documentation> 
+getStream ::
+          (MonadDOM m) => MediaStreamEvent -> m (Maybe MediaStream)
+getStream self = liftDOM ((self ^. js "stream") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/MediaStreamTrack.hs b/src/Language/Javascript/JSaddle/DOM/Generated/MediaStreamTrack.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/MediaStreamTrack.hs
@@ -0,0 +1,170 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.MediaStreamTrack
+       (getSources, getConstraints, states, getCapabilities,
+        applyConstraints, clone, stop, getKind, getId, getLabel,
+        setEnabled, getEnabled, getMuted, mute, unmute, get_readonly,
+        getRemote, getReadyState, started, ended, overConstrained,
+        MediaStreamTrack, castToMediaStreamTrack, gTypeMediaStreamTrack,
+        IsMediaStreamTrack, toMediaStreamTrack)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.getSources Mozilla MediaStreamTrack.getSources documentation> 
+getSources ::
+           (MonadDOM m, IsMediaStreamTrack self) =>
+             self -> Maybe MediaStreamTrackSourcesCallback -> m ()
+getSources self callback
+  = liftDOM
+      (void
+         ((toMediaStreamTrack self) ^. jsf "getSources" [toJSVal callback]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.getConstraints Mozilla MediaStreamTrack.getConstraints documentation> 
+getConstraints ::
+               (MonadDOM m, IsMediaStreamTrack self) =>
+                 self -> m (Maybe MediaTrackConstraints)
+getConstraints self
+  = liftDOM
+      (((toMediaStreamTrack self) ^. js "getConstraints") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.states Mozilla MediaStreamTrack.states documentation> 
+states ::
+       (MonadDOM m, IsMediaStreamTrack self) =>
+         self -> m (Maybe MediaSourceStates)
+states self
+  = liftDOM
+      (((toMediaStreamTrack self) ^. js "states") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.getCapabilities Mozilla MediaStreamTrack.getCapabilities documentation> 
+getCapabilities ::
+                (MonadDOM m, IsMediaStreamTrack self) =>
+                  self -> m (Maybe MediaStreamCapabilities)
+getCapabilities self
+  = liftDOM
+      (((toMediaStreamTrack self) ^. js "getCapabilities") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.applyConstraints Mozilla MediaStreamTrack.applyConstraints documentation> 
+applyConstraints ::
+                 (MonadDOM m, IsMediaStreamTrack self, IsDictionary constraints) =>
+                   self -> Maybe constraints -> m ()
+applyConstraints self constraints
+  = liftDOM
+      (void
+         ((toMediaStreamTrack self) ^. jsf "applyConstraints"
+            [toJSVal constraints]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.clone Mozilla MediaStreamTrack.clone documentation> 
+clone ::
+      (MonadDOM m, IsMediaStreamTrack self) =>
+        self -> m (Maybe MediaStreamTrack)
+clone self
+  = liftDOM (((toMediaStreamTrack self) ^. js "clone") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.stop Mozilla MediaStreamTrack.stop documentation> 
+stop :: (MonadDOM m, IsMediaStreamTrack self) => self -> m ()
+stop self = liftDOM (void ((toMediaStreamTrack self) ^. js "stop"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.kind Mozilla MediaStreamTrack.kind documentation> 
+getKind ::
+        (MonadDOM m, IsMediaStreamTrack self, FromJSString result) =>
+          self -> m result
+getKind self
+  = liftDOM
+      (((toMediaStreamTrack self) ^. js "kind") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.id Mozilla MediaStreamTrack.id documentation> 
+getId ::
+      (MonadDOM m, IsMediaStreamTrack self, FromJSString result) =>
+        self -> m result
+getId self
+  = liftDOM
+      (((toMediaStreamTrack self) ^. js "id") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.label Mozilla MediaStreamTrack.label documentation> 
+getLabel ::
+         (MonadDOM m, IsMediaStreamTrack self, FromJSString result) =>
+           self -> m result
+getLabel self
+  = liftDOM
+      (((toMediaStreamTrack self) ^. js "label") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.enabled Mozilla MediaStreamTrack.enabled documentation> 
+setEnabled ::
+           (MonadDOM m, IsMediaStreamTrack self) => self -> Bool -> m ()
+setEnabled self val
+  = liftDOM
+      ((toMediaStreamTrack self) ^. jss "enabled" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.enabled Mozilla MediaStreamTrack.enabled documentation> 
+getEnabled ::
+           (MonadDOM m, IsMediaStreamTrack self) => self -> m Bool
+getEnabled self
+  = liftDOM
+      (((toMediaStreamTrack self) ^. js "enabled") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.muted Mozilla MediaStreamTrack.muted documentation> 
+getMuted :: (MonadDOM m, IsMediaStreamTrack self) => self -> m Bool
+getMuted self
+  = liftDOM (((toMediaStreamTrack self) ^. js "muted") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.onmute Mozilla MediaStreamTrack.onmute documentation> 
+mute ::
+     (IsMediaStreamTrack self, IsEventTarget self) =>
+       EventName self Event
+mute = unsafeEventName (toJSString "mute")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.onunmute Mozilla MediaStreamTrack.onunmute documentation> 
+unmute ::
+       (IsMediaStreamTrack self, IsEventTarget self) =>
+         EventName self Event
+unmute = unsafeEventName (toJSString "unmute")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack._readonly Mozilla MediaStreamTrack._readonly documentation> 
+get_readonly ::
+             (MonadDOM m, IsMediaStreamTrack self) => self -> m Bool
+get_readonly self
+  = liftDOM
+      (((toMediaStreamTrack self) ^. js "_readonly") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.remote Mozilla MediaStreamTrack.remote documentation> 
+getRemote ::
+          (MonadDOM m, IsMediaStreamTrack self) => self -> m Bool
+getRemote self
+  = liftDOM
+      (((toMediaStreamTrack self) ^. js "remote") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.readyState Mozilla MediaStreamTrack.readyState documentation> 
+getReadyState ::
+              (MonadDOM m, IsMediaStreamTrack self) =>
+                self -> m MediaStreamTrackState
+getReadyState self
+  = liftDOM
+      (((toMediaStreamTrack self) ^. js "readyState") >>=
+         fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.onstarted Mozilla MediaStreamTrack.onstarted documentation> 
+started ::
+        (IsMediaStreamTrack self, IsEventTarget self) =>
+          EventName self Event
+started = unsafeEventName (toJSString "started")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.onended Mozilla MediaStreamTrack.onended documentation> 
+ended ::
+      (IsMediaStreamTrack self, IsEventTarget self) =>
+        EventName self Event
+ended = unsafeEventName (toJSString "ended")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.onoverconstrained Mozilla MediaStreamTrack.onoverconstrained documentation> 
+overConstrained ::
+                (IsMediaStreamTrack self, IsEventTarget self) =>
+                  EventName self Event
+overConstrained = unsafeEventName (toJSString "overconstrained")
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/MediaStreamTrackEvent.hs b/src/Language/Javascript/JSaddle/DOM/Generated/MediaStreamTrackEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/MediaStreamTrackEvent.hs
@@ -0,0 +1,21 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.MediaStreamTrackEvent
+       (getTrack, MediaStreamTrackEvent, castToMediaStreamTrackEvent,
+        gTypeMediaStreamTrackEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrackEvent.track Mozilla MediaStreamTrackEvent.track documentation> 
+getTrack ::
+         (MonadDOM m) => MediaStreamTrackEvent -> m (Maybe MediaStreamTrack)
+getTrack self = liftDOM ((self ^. js "track") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/MediaStreamTrackSourcesCallback.hs b/src/Language/Javascript/JSaddle/DOM/Generated/MediaStreamTrackSourcesCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/MediaStreamTrackSourcesCallback.hs
@@ -0,0 +1,54 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.MediaStreamTrackSourcesCallback
+       (newMediaStreamTrackSourcesCallback,
+        newMediaStreamTrackSourcesCallbackSync,
+        newMediaStreamTrackSourcesCallbackAsync,
+        MediaStreamTrackSourcesCallback)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrackSourcesCallback Mozilla MediaStreamTrackSourcesCallback documentation> 
+newMediaStreamTrackSourcesCallback ::
+                                   (MonadDOM m) =>
+                                     ([Maybe SourceInfo] -> JSM ()) ->
+                                       m MediaStreamTrackSourcesCallback
+newMediaStreamTrackSourcesCallback callback
+  = liftDOM
+      (MediaStreamTrackSourcesCallback . Callback <$>
+         function ""
+           (\ _ _ [sources] ->
+              fromJSArray sources >>= \ sources' -> callback sources'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrackSourcesCallback Mozilla MediaStreamTrackSourcesCallback documentation> 
+newMediaStreamTrackSourcesCallbackSync ::
+                                       (MonadDOM m) =>
+                                         ([Maybe SourceInfo] -> JSM ()) ->
+                                           m MediaStreamTrackSourcesCallback
+newMediaStreamTrackSourcesCallbackSync callback
+  = liftDOM
+      (MediaStreamTrackSourcesCallback . Callback <$>
+         function ""
+           (\ _ _ [sources] ->
+              fromJSArray sources >>= \ sources' -> callback sources'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrackSourcesCallback Mozilla MediaStreamTrackSourcesCallback documentation> 
+newMediaStreamTrackSourcesCallbackAsync ::
+                                        (MonadDOM m) =>
+                                          ([Maybe SourceInfo] -> JSM ()) ->
+                                            m MediaStreamTrackSourcesCallback
+newMediaStreamTrackSourcesCallbackAsync callback
+  = liftDOM
+      (MediaStreamTrackSourcesCallback . Callback <$>
+         function ""
+           (\ _ _ [sources] ->
+              fromJSArray sources >>= \ sources' -> callback sources'))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/MediaTrackConstraints.hs b/src/Language/Javascript/JSaddle/DOM/Generated/MediaTrackConstraints.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/MediaTrackConstraints.hs
@@ -0,0 +1,31 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.MediaTrackConstraints
+       (getMandatory, getOptional, MediaTrackConstraints,
+        castToMediaTrackConstraints, gTypeMediaTrackConstraints)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackConstraints.mandatory Mozilla MediaTrackConstraints.mandatory documentation> 
+getMandatory ::
+             (MonadDOM m) =>
+               MediaTrackConstraints -> m (Maybe MediaTrackConstraintSet)
+getMandatory self
+  = liftDOM ((self ^. js "mandatory") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackConstraints.optional Mozilla MediaTrackConstraints.optional documentation> 
+getOptional ::
+            (MonadDOM m) =>
+              MediaTrackConstraints -> m (Maybe [Maybe MediaTrackConstraint])
+getOptional self
+  = liftDOM
+      ((self ^. js "optional") >>= maybeNullOrUndefined' fromJSArray)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/MemoryInfo.hs b/src/Language/Javascript/JSaddle/DOM/Generated/MemoryInfo.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/MemoryInfo.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.MemoryInfo
+       (getUsedJSHeapSize, getTotalJSHeapSize, MemoryInfo,
+        castToMemoryInfo, gTypeMemoryInfo)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MemoryInfo.usedJSHeapSize Mozilla MemoryInfo.usedJSHeapSize documentation> 
+getUsedJSHeapSize :: (MonadDOM m) => MemoryInfo -> m Word
+getUsedJSHeapSize self
+  = liftDOM
+      (round <$> ((self ^. js "usedJSHeapSize") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MemoryInfo.totalJSHeapSize Mozilla MemoryInfo.totalJSHeapSize documentation> 
+getTotalJSHeapSize :: (MonadDOM m) => MemoryInfo -> m Word
+getTotalJSHeapSize self
+  = liftDOM
+      (round <$> ((self ^. js "totalJSHeapSize") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/MessageChannel.hs b/src/Language/Javascript/JSaddle/DOM/Generated/MessageChannel.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/MessageChannel.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.MessageChannel
+       (newMessageChannel, getPort1, getPort2, MessageChannel,
+        castToMessageChannel, gTypeMessageChannel)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MessageChannel Mozilla MessageChannel documentation> 
+newMessageChannel :: (MonadDOM m) => m MessageChannel
+newMessageChannel
+  = liftDOM (MessageChannel <$> new (jsg "MessageChannel") ())
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MessageChannel.port1 Mozilla MessageChannel.port1 documentation> 
+getPort1 :: (MonadDOM m) => MessageChannel -> m (Maybe MessagePort)
+getPort1 self = liftDOM ((self ^. js "port1") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MessageChannel.port2 Mozilla MessageChannel.port2 documentation> 
+getPort2 :: (MonadDOM m) => MessageChannel -> m (Maybe MessagePort)
+getPort2 self = liftDOM ((self ^. js "port2") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/MessageEvent.hs b/src/Language/Javascript/JSaddle/DOM/Generated/MessageEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/MessageEvent.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.MessageEvent
+       (initMessageEvent, webkitInitMessageEvent, getOrigin,
+        getLastEventId, getSource, getData, getPorts, MessageEvent,
+        castToMessageEvent, gTypeMessageEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent.initMessageEvent Mozilla MessageEvent.initMessageEvent documentation> 
+initMessageEvent ::
+                 (MonadDOM m, ToJSString typeArg, ToJSString originArg,
+                  ToJSString lastEventIdArg, IsArray messagePorts) =>
+                   MessageEvent ->
+                     typeArg ->
+                       Bool ->
+                         Bool ->
+                           JSVal ->
+                             originArg ->
+                               lastEventIdArg -> Maybe Window -> Maybe messagePorts -> m ()
+initMessageEvent self typeArg canBubbleArg cancelableArg dataArg
+  originArg lastEventIdArg sourceArg messagePorts
+  = liftDOM
+      (void
+         (self ^. jsf "initMessageEvent"
+            [toJSVal typeArg, toJSVal canBubbleArg, toJSVal cancelableArg,
+             toJSVal dataArg, toJSVal originArg, toJSVal lastEventIdArg,
+             toJSVal sourceArg, toJSVal messagePorts]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent.webkitInitMessageEvent Mozilla MessageEvent.webkitInitMessageEvent documentation> 
+webkitInitMessageEvent ::
+                       (MonadDOM m, ToJSString typeArg, ToJSString originArg,
+                        ToJSString lastEventIdArg, IsArray transferables) =>
+                         MessageEvent ->
+                           typeArg ->
+                             Bool ->
+                               Bool ->
+                                 JSVal ->
+                                   originArg ->
+                                     lastEventIdArg -> Maybe Window -> Maybe transferables -> m ()
+webkitInitMessageEvent self typeArg canBubbleArg cancelableArg
+  dataArg originArg lastEventIdArg sourceArg transferables
+  = liftDOM
+      (void
+         (self ^. jsf "webkitInitMessageEvent"
+            [toJSVal typeArg, toJSVal canBubbleArg, toJSVal cancelableArg,
+             toJSVal dataArg, toJSVal originArg, toJSVal lastEventIdArg,
+             toJSVal sourceArg, toJSVal transferables]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent.origin Mozilla MessageEvent.origin documentation> 
+getOrigin ::
+          (MonadDOM m, FromJSString result) => MessageEvent -> m result
+getOrigin self
+  = liftDOM ((self ^. js "origin") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent.lastEventId Mozilla MessageEvent.lastEventId documentation> 
+getLastEventId ::
+               (MonadDOM m, FromJSString result) => MessageEvent -> m result
+getLastEventId self
+  = liftDOM ((self ^. js "lastEventId") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent.source Mozilla MessageEvent.source documentation> 
+getSource :: (MonadDOM m) => MessageEvent -> m (Maybe EventTarget)
+getSource self = liftDOM ((self ^. js "source") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent.data Mozilla MessageEvent.data documentation> 
+getData :: (MonadDOM m) => MessageEvent -> m JSVal
+getData self = liftDOM ((self ^. js "data") >>= toJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent.ports Mozilla MessageEvent.ports documentation> 
+getPorts :: (MonadDOM m) => MessageEvent -> m [Maybe MessagePort]
+getPorts self = liftDOM ((self ^. js "ports") >>= fromJSArray)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/MessagePort.hs b/src/Language/Javascript/JSaddle/DOM/Generated/MessagePort.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/MessagePort.hs
@@ -0,0 +1,38 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.MessagePort
+       (postMessage, start, close, message, MessagePort,
+        castToMessagePort, gTypeMessagePort)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MessagePort.postMessage Mozilla MessagePort.postMessage documentation> 
+postMessage ::
+            (MonadDOM m, IsArray messagePorts) =>
+              MessagePort -> JSVal -> Maybe messagePorts -> m ()
+postMessage self message messagePorts
+  = liftDOM
+      (void
+         (self ^. jsf "postMessage"
+            [toJSVal message, toJSVal messagePorts]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MessagePort.start Mozilla MessagePort.start documentation> 
+start :: (MonadDOM m) => MessagePort -> m ()
+start self = liftDOM (void (self ^. js "start"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MessagePort.close Mozilla MessagePort.close documentation> 
+close :: (MonadDOM m) => MessagePort -> m ()
+close self = liftDOM (void (self ^. js "close"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MessagePort.onmessage Mozilla MessagePort.onmessage documentation> 
+message :: EventName MessagePort MessageEvent
+message = unsafeEventName (toJSString "message")
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/MimeType.hs b/src/Language/Javascript/JSaddle/DOM/Generated/MimeType.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/MimeType.hs
@@ -0,0 +1,38 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.MimeType
+       (getType, getSuffixes, getDescription, getEnabledPlugin, MimeType,
+        castToMimeType, gTypeMimeType)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MimeType.type Mozilla MimeType.type documentation> 
+getType ::
+        (MonadDOM m, FromJSString result) => MimeType -> m result
+getType self = liftDOM ((self ^. js "type") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MimeType.suffixes Mozilla MimeType.suffixes documentation> 
+getSuffixes ::
+            (MonadDOM m, FromJSString result) => MimeType -> m result
+getSuffixes self
+  = liftDOM ((self ^. js "suffixes") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MimeType.description Mozilla MimeType.description documentation> 
+getDescription ::
+               (MonadDOM m, FromJSString result) => MimeType -> m result
+getDescription self
+  = liftDOM ((self ^. js "description") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MimeType.enabledPlugin Mozilla MimeType.enabledPlugin documentation> 
+getEnabledPlugin :: (MonadDOM m) => MimeType -> m (Maybe Plugin)
+getEnabledPlugin self
+  = liftDOM ((self ^. js "enabledPlugin") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/MimeTypeArray.hs b/src/Language/Javascript/JSaddle/DOM/Generated/MimeTypeArray.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/MimeTypeArray.hs
@@ -0,0 +1,33 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.MimeTypeArray
+       (item, namedItem, getLength, MimeTypeArray, castToMimeTypeArray,
+        gTypeMimeTypeArray)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MimeTypeArray.item Mozilla MimeTypeArray.item documentation> 
+item :: (MonadDOM m) => MimeTypeArray -> Word -> m (Maybe MimeType)
+item self index
+  = liftDOM ((self ^. jsf "item" [toJSVal index]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MimeTypeArray.namedItem Mozilla MimeTypeArray.namedItem documentation> 
+namedItem ::
+          (MonadDOM m, ToJSString name) =>
+            MimeTypeArray -> name -> m (Maybe MimeType)
+namedItem self name
+  = liftDOM ((self ^. jsf "namedItem" [toJSVal name]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MimeTypeArray.length Mozilla MimeTypeArray.length documentation> 
+getLength :: (MonadDOM m) => MimeTypeArray -> m Word
+getLength self
+  = liftDOM (round <$> ((self ^. js "length") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/MouseEvent.hs b/src/Language/Javascript/JSaddle/DOM/Generated/MouseEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/MouseEvent.hs
@@ -0,0 +1,161 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.MouseEvent
+       (initMouseEvent, getScreenX, getScreenY, getClientX, getClientY,
+        getCtrlKey, getShiftKey, getAltKey, getMetaKey, getButton,
+        getRelatedTarget, getMovementX, getMovementY, getOffsetX,
+        getOffsetY, getX, getY, getFromElement, getToElement,
+        getDataTransfer, MouseEvent, castToMouseEvent, gTypeMouseEvent,
+        IsMouseEvent, toMouseEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.initMouseEvent Mozilla MouseEvent.initMouseEvent documentation> 
+initMouseEvent ::
+               (MonadDOM m, IsMouseEvent self, ToJSString type',
+                IsEventTarget relatedTarget) =>
+                 self ->
+                   type' ->
+                     Bool ->
+                       Bool ->
+                         Maybe Window ->
+                           Int ->
+                             Int ->
+                               Int ->
+                                 Int ->
+                                   Int ->
+                                     Bool ->
+                                       Bool -> Bool -> Bool -> Word -> Maybe relatedTarget -> m ()
+initMouseEvent self type' canBubble cancelable view detail screenX
+  screenY clientX clientY ctrlKey altKey shiftKey metaKey button
+  relatedTarget
+  = liftDOM
+      (void
+         ((toMouseEvent self) ^. jsf "initMouseEvent"
+            [toJSVal type', toJSVal canBubble, toJSVal cancelable,
+             toJSVal view, toJSVal detail, toJSVal screenX, toJSVal screenY,
+             toJSVal clientX, toJSVal clientY, toJSVal ctrlKey, toJSVal altKey,
+             toJSVal shiftKey, toJSVal metaKey, toJSVal button,
+             toJSVal relatedTarget]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.screenX Mozilla MouseEvent.screenX documentation> 
+getScreenX :: (MonadDOM m, IsMouseEvent self) => self -> m Int
+getScreenX self
+  = liftDOM
+      (round <$> (((toMouseEvent self) ^. js "screenX") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.screenY Mozilla MouseEvent.screenY documentation> 
+getScreenY :: (MonadDOM m, IsMouseEvent self) => self -> m Int
+getScreenY self
+  = liftDOM
+      (round <$> (((toMouseEvent self) ^. js "screenY") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.clientX Mozilla MouseEvent.clientX documentation> 
+getClientX :: (MonadDOM m, IsMouseEvent self) => self -> m Int
+getClientX self
+  = liftDOM
+      (round <$> (((toMouseEvent self) ^. js "clientX") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.clientY Mozilla MouseEvent.clientY documentation> 
+getClientY :: (MonadDOM m, IsMouseEvent self) => self -> m Int
+getClientY self
+  = liftDOM
+      (round <$> (((toMouseEvent self) ^. js "clientY") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.ctrlKey Mozilla MouseEvent.ctrlKey documentation> 
+getCtrlKey :: (MonadDOM m, IsMouseEvent self) => self -> m Bool
+getCtrlKey self
+  = liftDOM (((toMouseEvent self) ^. js "ctrlKey") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.shiftKey Mozilla MouseEvent.shiftKey documentation> 
+getShiftKey :: (MonadDOM m, IsMouseEvent self) => self -> m Bool
+getShiftKey self
+  = liftDOM (((toMouseEvent self) ^. js "shiftKey") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.altKey Mozilla MouseEvent.altKey documentation> 
+getAltKey :: (MonadDOM m, IsMouseEvent self) => self -> m Bool
+getAltKey self
+  = liftDOM (((toMouseEvent self) ^. js "altKey") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.metaKey Mozilla MouseEvent.metaKey documentation> 
+getMetaKey :: (MonadDOM m, IsMouseEvent self) => self -> m Bool
+getMetaKey self
+  = liftDOM (((toMouseEvent self) ^. js "metaKey") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.button Mozilla MouseEvent.button documentation> 
+getButton :: (MonadDOM m, IsMouseEvent self) => self -> m Word
+getButton self
+  = liftDOM
+      (round <$> (((toMouseEvent self) ^. js "button") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.relatedTarget Mozilla MouseEvent.relatedTarget documentation> 
+getRelatedTarget ::
+                 (MonadDOM m, IsMouseEvent self) => self -> m (Maybe EventTarget)
+getRelatedTarget self
+  = liftDOM
+      (((toMouseEvent self) ^. js "relatedTarget") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.movementX Mozilla MouseEvent.movementX documentation> 
+getMovementX :: (MonadDOM m, IsMouseEvent self) => self -> m Int
+getMovementX self
+  = liftDOM
+      (round <$>
+         (((toMouseEvent self) ^. js "movementX") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.movementY Mozilla MouseEvent.movementY documentation> 
+getMovementY :: (MonadDOM m, IsMouseEvent self) => self -> m Int
+getMovementY self
+  = liftDOM
+      (round <$>
+         (((toMouseEvent self) ^. js "movementY") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.offsetX Mozilla MouseEvent.offsetX documentation> 
+getOffsetX :: (MonadDOM m, IsMouseEvent self) => self -> m Int
+getOffsetX self
+  = liftDOM
+      (round <$> (((toMouseEvent self) ^. js "offsetX") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.offsetY Mozilla MouseEvent.offsetY documentation> 
+getOffsetY :: (MonadDOM m, IsMouseEvent self) => self -> m Int
+getOffsetY self
+  = liftDOM
+      (round <$> (((toMouseEvent self) ^. js "offsetY") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.x Mozilla MouseEvent.x documentation> 
+getX :: (MonadDOM m, IsMouseEvent self) => self -> m Int
+getX self
+  = liftDOM
+      (round <$> (((toMouseEvent self) ^. js "x") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.y Mozilla MouseEvent.y documentation> 
+getY :: (MonadDOM m, IsMouseEvent self) => self -> m Int
+getY self
+  = liftDOM
+      (round <$> (((toMouseEvent self) ^. js "y") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.fromElement Mozilla MouseEvent.fromElement documentation> 
+getFromElement ::
+               (MonadDOM m, IsMouseEvent self) => self -> m (Maybe Node)
+getFromElement self
+  = liftDOM (((toMouseEvent self) ^. js "fromElement") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.toElement Mozilla MouseEvent.toElement documentation> 
+getToElement ::
+             (MonadDOM m, IsMouseEvent self) => self -> m (Maybe Node)
+getToElement self
+  = liftDOM (((toMouseEvent self) ^. js "toElement") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.dataTransfer Mozilla MouseEvent.dataTransfer documentation> 
+getDataTransfer ::
+                (MonadDOM m, IsMouseEvent self) => self -> m (Maybe DataTransfer)
+getDataTransfer self
+  = liftDOM
+      (((toMouseEvent self) ^. js "dataTransfer") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/MutationEvent.hs b/src/Language/Javascript/JSaddle/DOM/Generated/MutationEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/MutationEvent.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.MutationEvent
+       (initMutationEvent, pattern MODIFICATION, pattern ADDITION,
+        pattern REMOVAL, getRelatedNode, getPrevValue, getNewValue,
+        getAttrName, getAttrChange, MutationEvent, castToMutationEvent,
+        gTypeMutationEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationEvent.initMutationEvent Mozilla MutationEvent.initMutationEvent documentation> 
+initMutationEvent ::
+                  (MonadDOM m, ToJSString type', IsNode relatedNode,
+                   ToJSString prevValue, ToJSString newValue, ToJSString attrName) =>
+                    MutationEvent ->
+                      type' ->
+                        Bool ->
+                          Bool ->
+                            Maybe relatedNode ->
+                              prevValue -> newValue -> attrName -> Word -> m ()
+initMutationEvent self type' canBubble cancelable relatedNode
+  prevValue newValue attrName attrChange
+  = liftDOM
+      (void
+         (self ^. jsf "initMutationEvent"
+            [toJSVal type', toJSVal canBubble, toJSVal cancelable,
+             toJSVal relatedNode, toJSVal prevValue, toJSVal newValue,
+             toJSVal attrName, toJSVal attrChange]))
+pattern MODIFICATION = 1
+pattern ADDITION = 2
+pattern REMOVAL = 3
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationEvent.relatedNode Mozilla MutationEvent.relatedNode documentation> 
+getRelatedNode :: (MonadDOM m) => MutationEvent -> m (Maybe Node)
+getRelatedNode self
+  = liftDOM ((self ^. js "relatedNode") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationEvent.prevValue Mozilla MutationEvent.prevValue documentation> 
+getPrevValue ::
+             (MonadDOM m, FromJSString result) => MutationEvent -> m result
+getPrevValue self
+  = liftDOM ((self ^. js "prevValue") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationEvent.newValue Mozilla MutationEvent.newValue documentation> 
+getNewValue ::
+            (MonadDOM m, FromJSString result) => MutationEvent -> m result
+getNewValue self
+  = liftDOM ((self ^. js "newValue") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationEvent.attrName Mozilla MutationEvent.attrName documentation> 
+getAttrName ::
+            (MonadDOM m, FromJSString result) => MutationEvent -> m result
+getAttrName self
+  = liftDOM ((self ^. js "attrName") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationEvent.attrChange Mozilla MutationEvent.attrChange documentation> 
+getAttrChange :: (MonadDOM m) => MutationEvent -> m Word
+getAttrChange self
+  = liftDOM (round <$> ((self ^. js "attrChange") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/MutationObserver.hs b/src/Language/Javascript/JSaddle/DOM/Generated/MutationObserver.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/MutationObserver.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.MutationObserver
+       (newMutationObserver, observe, takeRecords, disconnect,
+        MutationObserver, castToMutationObserver, gTypeMutationObserver)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver Mozilla MutationObserver documentation> 
+newMutationObserver ::
+                    (MonadDOM m, IsMutationCallback callback) =>
+                      Maybe callback -> m MutationObserver
+newMutationObserver callback
+  = liftDOM
+      (MutationObserver <$>
+         new (jsg "MutationObserver") [toJSVal callback])
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver.observe Mozilla MutationObserver.observe documentation> 
+observe ::
+        (MonadDOM m, IsNode target, IsDictionary options) =>
+          MutationObserver -> Maybe target -> Maybe options -> m ()
+observe self target options
+  = liftDOM
+      (void (self ^. jsf "observe" [toJSVal target, toJSVal options]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver.takeRecords Mozilla MutationObserver.takeRecords documentation> 
+takeRecords ::
+            (MonadDOM m) => MutationObserver -> m [Maybe MutationRecord]
+takeRecords self
+  = liftDOM ((self ^. js "takeRecords") >>= fromJSArray)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver.disconnect Mozilla MutationObserver.disconnect documentation> 
+disconnect :: (MonadDOM m) => MutationObserver -> m ()
+disconnect self = liftDOM (void (self ^. js "disconnect"))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/MutationRecord.hs b/src/Language/Javascript/JSaddle/DOM/Generated/MutationRecord.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/MutationRecord.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.MutationRecord
+       (getType, getTarget, getAddedNodes, getRemovedNodes,
+        getPreviousSibling, getNextSibling, getAttributeName,
+        getAttributeNamespace, getOldValue, MutationRecord,
+        castToMutationRecord, gTypeMutationRecord)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.type Mozilla MutationRecord.type documentation> 
+getType ::
+        (MonadDOM m, FromJSString result) => MutationRecord -> m result
+getType self = liftDOM ((self ^. js "type") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.target Mozilla MutationRecord.target documentation> 
+getTarget :: (MonadDOM m) => MutationRecord -> m (Maybe Node)
+getTarget self = liftDOM ((self ^. js "target") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.addedNodes Mozilla MutationRecord.addedNodes documentation> 
+getAddedNodes ::
+              (MonadDOM m) => MutationRecord -> m (Maybe NodeList)
+getAddedNodes self
+  = liftDOM ((self ^. js "addedNodes") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.removedNodes Mozilla MutationRecord.removedNodes documentation> 
+getRemovedNodes ::
+                (MonadDOM m) => MutationRecord -> m (Maybe NodeList)
+getRemovedNodes self
+  = liftDOM ((self ^. js "removedNodes") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.previousSibling Mozilla MutationRecord.previousSibling documentation> 
+getPreviousSibling ::
+                   (MonadDOM m) => MutationRecord -> m (Maybe Node)
+getPreviousSibling self
+  = liftDOM ((self ^. js "previousSibling") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.nextSibling Mozilla MutationRecord.nextSibling documentation> 
+getNextSibling :: (MonadDOM m) => MutationRecord -> m (Maybe Node)
+getNextSibling self
+  = liftDOM ((self ^. js "nextSibling") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.attributeName Mozilla MutationRecord.attributeName documentation> 
+getAttributeName ::
+                 (MonadDOM m, FromJSString result) =>
+                   MutationRecord -> m (Maybe result)
+getAttributeName self
+  = liftDOM ((self ^. js "attributeName") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.attributeNamespace Mozilla MutationRecord.attributeNamespace documentation> 
+getAttributeNamespace ::
+                      (MonadDOM m, FromJSString result) =>
+                        MutationRecord -> m (Maybe result)
+getAttributeNamespace self
+  = liftDOM ((self ^. js "attributeNamespace") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.oldValue Mozilla MutationRecord.oldValue documentation> 
+getOldValue ::
+            (MonadDOM m, FromJSString result) =>
+              MutationRecord -> m (Maybe result)
+getOldValue self
+  = liftDOM ((self ^. js "oldValue") >>= fromMaybeJSString)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/NamedNodeMap.hs b/src/Language/Javascript/JSaddle/DOM/Generated/NamedNodeMap.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/NamedNodeMap.hs
@@ -0,0 +1,79 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.NamedNodeMap
+       (getNamedItem, setNamedItem, removeNamedItem, item, getNamedItemNS,
+        setNamedItemNS, removeNamedItemNS, getLength, NamedNodeMap,
+        castToNamedNodeMap, gTypeNamedNodeMap)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.getNamedItem Mozilla NamedNodeMap.getNamedItem documentation> 
+getNamedItem ::
+             (MonadDOM m, ToJSString name) =>
+               NamedNodeMap -> name -> m (Maybe Node)
+getNamedItem self name
+  = liftDOM
+      ((self ^. jsf "getNamedItem" [toJSVal name]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.setNamedItem Mozilla NamedNodeMap.setNamedItem documentation> 
+setNamedItem ::
+             (MonadDOM m, IsNode node) =>
+               NamedNodeMap -> Maybe node -> m (Maybe Node)
+setNamedItem self node
+  = liftDOM
+      ((self ^. jsf "setNamedItem" [toJSVal node]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.removeNamedItem Mozilla NamedNodeMap.removeNamedItem documentation> 
+removeNamedItem ::
+                (MonadDOM m, ToJSString name) =>
+                  NamedNodeMap -> name -> m (Maybe Node)
+removeNamedItem self name
+  = liftDOM
+      ((self ^. jsf "removeNamedItem" [toJSVal name]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.item Mozilla NamedNodeMap.item documentation> 
+item :: (MonadDOM m) => NamedNodeMap -> Word -> m (Maybe Node)
+item self index
+  = liftDOM ((self ^. jsf "item" [toJSVal index]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.getNamedItemNS Mozilla NamedNodeMap.getNamedItemNS documentation> 
+getNamedItemNS ::
+               (MonadDOM m, ToJSString namespaceURI, ToJSString localName) =>
+                 NamedNodeMap -> Maybe namespaceURI -> localName -> m (Maybe Node)
+getNamedItemNS self namespaceURI localName
+  = liftDOM
+      ((self ^. jsf "getNamedItemNS"
+          [toJSVal namespaceURI, toJSVal localName])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.setNamedItemNS Mozilla NamedNodeMap.setNamedItemNS documentation> 
+setNamedItemNS ::
+               (MonadDOM m, IsNode node) =>
+                 NamedNodeMap -> Maybe node -> m (Maybe Node)
+setNamedItemNS self node
+  = liftDOM
+      ((self ^. jsf "setNamedItemNS" [toJSVal node]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.removeNamedItemNS Mozilla NamedNodeMap.removeNamedItemNS documentation> 
+removeNamedItemNS ::
+                  (MonadDOM m, ToJSString namespaceURI, ToJSString localName) =>
+                    NamedNodeMap -> Maybe namespaceURI -> localName -> m (Maybe Node)
+removeNamedItemNS self namespaceURI localName
+  = liftDOM
+      ((self ^. jsf "removeNamedItemNS"
+          [toJSVal namespaceURI, toJSVal localName])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.length Mozilla NamedNodeMap.length documentation> 
+getLength :: (MonadDOM m) => NamedNodeMap -> m Word
+getLength self
+  = liftDOM (round <$> ((self ^. js "length") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/Navigator.hs b/src/Language/Javascript/JSaddle/DOM/Generated/Navigator.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/Navigator.hs
@@ -0,0 +1,203 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.Navigator
+       (getGamepads, webkitGetUserMedia, registerProtocolHandler,
+        isProtocolHandlerRegistered, unregisterProtocolHandler,
+        vibratePattern, vibrate, javaEnabled, getStorageUpdates,
+        getWebkitBattery, getGeolocation, getWebkitTemporaryStorage,
+        getWebkitPersistentStorage, getAppCodeName, getAppName,
+        getAppVersion, getLanguage, getUserAgent, getPlatform, getPlugins,
+        getMimeTypes, getProduct, getProductSub, getVendor, getVendorSub,
+        getCookieEnabled, getOnLine, getHardwareConcurrency, Navigator,
+        castToNavigator, gTypeNavigator)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.getGamepads Mozilla Navigator.getGamepads documentation> 
+getGamepads :: (MonadDOM m) => Navigator -> m [Maybe Gamepad]
+getGamepads self
+  = liftDOM ((self ^. js "getGamepads") >>= fromJSArray)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.webkitGetUserMedia Mozilla Navigator.webkitGetUserMedia documentation> 
+webkitGetUserMedia ::
+                   (MonadDOM m, IsDictionary options) =>
+                     Navigator ->
+                       Maybe options ->
+                         Maybe NavigatorUserMediaSuccessCallback ->
+                           Maybe NavigatorUserMediaErrorCallback -> m ()
+webkitGetUserMedia self options successCallback errorCallback
+  = liftDOM
+      (void
+         (self ^. jsf "webkitGetUserMedia"
+            [toJSVal options, toJSVal successCallback, toJSVal errorCallback]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.registerProtocolHandler Mozilla Navigator.registerProtocolHandler documentation> 
+registerProtocolHandler ::
+                        (MonadDOM m, ToJSString scheme, ToJSString url,
+                         ToJSString title) =>
+                          Navigator -> scheme -> url -> title -> m ()
+registerProtocolHandler self scheme url title
+  = liftDOM
+      (void
+         (self ^. jsf "registerProtocolHandler"
+            [toJSVal scheme, toJSVal url, toJSVal title]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.isProtocolHandlerRegistered Mozilla Navigator.isProtocolHandlerRegistered documentation> 
+isProtocolHandlerRegistered ::
+                            (MonadDOM m, ToJSString scheme, ToJSString url,
+                             FromJSString result) =>
+                              Navigator -> scheme -> url -> m result
+isProtocolHandlerRegistered self scheme url
+  = liftDOM
+      ((self ^. jsf "isProtocolHandlerRegistered"
+          [toJSVal scheme, toJSVal url])
+         >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.unregisterProtocolHandler Mozilla Navigator.unregisterProtocolHandler documentation> 
+unregisterProtocolHandler ::
+                          (MonadDOM m, ToJSString scheme, ToJSString url) =>
+                            Navigator -> scheme -> url -> m ()
+unregisterProtocolHandler self scheme url
+  = liftDOM
+      (void
+         (self ^. jsf "unregisterProtocolHandler"
+            [toJSVal scheme, toJSVal url]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.vibrate Mozilla Navigator.vibrate documentation> 
+vibratePattern :: (MonadDOM m) => Navigator -> [Word] -> m Bool
+vibratePattern self pattern'
+  = liftDOM
+      ((self ^. jsf "vibrate" [toJSVal (array pattern')]) >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.vibrate Mozilla Navigator.vibrate documentation> 
+vibrate :: (MonadDOM m) => Navigator -> Word -> m Bool
+vibrate self time
+  = liftDOM ((self ^. jsf "vibrate" [toJSVal time]) >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.javaEnabled Mozilla Navigator.javaEnabled documentation> 
+javaEnabled :: (MonadDOM m) => Navigator -> m Bool
+javaEnabled self
+  = liftDOM ((self ^. js "javaEnabled") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.getStorageUpdates Mozilla Navigator.getStorageUpdates documentation> 
+getStorageUpdates :: (MonadDOM m) => Navigator -> m ()
+getStorageUpdates self
+  = liftDOM (void (self ^. js "getStorageUpdates"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.webkitBattery Mozilla Navigator.webkitBattery documentation> 
+getWebkitBattery ::
+                 (MonadDOM m) => Navigator -> m (Maybe BatteryManager)
+getWebkitBattery self
+  = liftDOM ((self ^. js "webkitBattery") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.geolocation Mozilla Navigator.geolocation documentation> 
+getGeolocation ::
+               (MonadDOM m) => Navigator -> m (Maybe Geolocation)
+getGeolocation self
+  = liftDOM ((self ^. js "geolocation") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.webkitTemporaryStorage Mozilla Navigator.webkitTemporaryStorage documentation> 
+getWebkitTemporaryStorage ::
+                          (MonadDOM m) => Navigator -> m (Maybe StorageQuota)
+getWebkitTemporaryStorage self
+  = liftDOM ((self ^. js "webkitTemporaryStorage") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.webkitPersistentStorage Mozilla Navigator.webkitPersistentStorage documentation> 
+getWebkitPersistentStorage ::
+                           (MonadDOM m) => Navigator -> m (Maybe StorageQuota)
+getWebkitPersistentStorage self
+  = liftDOM ((self ^. js "webkitPersistentStorage") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.appCodeName Mozilla Navigator.appCodeName documentation> 
+getAppCodeName ::
+               (MonadDOM m, FromJSString result) => Navigator -> m result
+getAppCodeName self
+  = liftDOM ((self ^. js "appCodeName") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.appName Mozilla Navigator.appName documentation> 
+getAppName ::
+           (MonadDOM m, FromJSString result) => Navigator -> m result
+getAppName self
+  = liftDOM ((self ^. js "appName") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.appVersion Mozilla Navigator.appVersion documentation> 
+getAppVersion ::
+              (MonadDOM m, FromJSString result) => Navigator -> m result
+getAppVersion self
+  = liftDOM ((self ^. js "appVersion") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.language Mozilla Navigator.language documentation> 
+getLanguage ::
+            (MonadDOM m, FromJSString result) => Navigator -> m result
+getLanguage self
+  = liftDOM ((self ^. js "language") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.userAgent Mozilla Navigator.userAgent documentation> 
+getUserAgent ::
+             (MonadDOM m, FromJSString result) => Navigator -> m result
+getUserAgent self
+  = liftDOM ((self ^. js "userAgent") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.platform Mozilla Navigator.platform documentation> 
+getPlatform ::
+            (MonadDOM m, FromJSString result) => Navigator -> m result
+getPlatform self
+  = liftDOM ((self ^. js "platform") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.plugins Mozilla Navigator.plugins documentation> 
+getPlugins :: (MonadDOM m) => Navigator -> m (Maybe PluginArray)
+getPlugins self = liftDOM ((self ^. js "plugins") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.mimeTypes Mozilla Navigator.mimeTypes documentation> 
+getMimeTypes ::
+             (MonadDOM m) => Navigator -> m (Maybe MimeTypeArray)
+getMimeTypes self
+  = liftDOM ((self ^. js "mimeTypes") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.product Mozilla Navigator.product documentation> 
+getProduct ::
+           (MonadDOM m, FromJSString result) => Navigator -> m result
+getProduct self
+  = liftDOM ((self ^. js "product") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.productSub Mozilla Navigator.productSub documentation> 
+getProductSub ::
+              (MonadDOM m, FromJSString result) => Navigator -> m result
+getProductSub self
+  = liftDOM ((self ^. js "productSub") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.vendor Mozilla Navigator.vendor documentation> 
+getVendor ::
+          (MonadDOM m, FromJSString result) => Navigator -> m result
+getVendor self
+  = liftDOM ((self ^. js "vendor") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.vendorSub Mozilla Navigator.vendorSub documentation> 
+getVendorSub ::
+             (MonadDOM m, FromJSString result) => Navigator -> m result
+getVendorSub self
+  = liftDOM ((self ^. js "vendorSub") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.cookieEnabled Mozilla Navigator.cookieEnabled documentation> 
+getCookieEnabled :: (MonadDOM m) => Navigator -> m Bool
+getCookieEnabled self
+  = liftDOM ((self ^. js "cookieEnabled") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.onLine Mozilla Navigator.onLine documentation> 
+getOnLine :: (MonadDOM m) => Navigator -> m Bool
+getOnLine self = liftDOM ((self ^. js "onLine") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.hardwareConcurrency Mozilla Navigator.hardwareConcurrency documentation> 
+getHardwareConcurrency :: (MonadDOM m) => Navigator -> m Int
+getHardwareConcurrency self
+  = liftDOM
+      (round <$> ((self ^. js "hardwareConcurrency") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/NavigatorUserMediaError.hs b/src/Language/Javascript/JSaddle/DOM/Generated/NavigatorUserMediaError.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/NavigatorUserMediaError.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.NavigatorUserMediaError
+       (getConstraintName, NavigatorUserMediaError,
+        castToNavigatorUserMediaError, gTypeNavigatorUserMediaError)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorUserMediaError.constraintName Mozilla NavigatorUserMediaError.constraintName documentation> 
+getConstraintName ::
+                  (MonadDOM m, FromJSString result) =>
+                    NavigatorUserMediaError -> m result
+getConstraintName self
+  = liftDOM ((self ^. js "constraintName") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/NavigatorUserMediaErrorCallback.hs b/src/Language/Javascript/JSaddle/DOM/Generated/NavigatorUserMediaErrorCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/NavigatorUserMediaErrorCallback.hs
@@ -0,0 +1,51 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.NavigatorUserMediaErrorCallback
+       (newNavigatorUserMediaErrorCallback,
+        newNavigatorUserMediaErrorCallbackSync,
+        newNavigatorUserMediaErrorCallbackAsync,
+        NavigatorUserMediaErrorCallback)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorUserMediaErrorCallback Mozilla NavigatorUserMediaErrorCallback documentation> 
+newNavigatorUserMediaErrorCallback ::
+                                   (MonadDOM m) =>
+                                     (Maybe NavigatorUserMediaError -> JSM ()) ->
+                                       m NavigatorUserMediaErrorCallback
+newNavigatorUserMediaErrorCallback callback
+  = liftDOM
+      (NavigatorUserMediaErrorCallback . Callback <$>
+         function ""
+           (\ _ _ [error] -> fromJSVal error >>= \ error' -> callback error'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorUserMediaErrorCallback Mozilla NavigatorUserMediaErrorCallback documentation> 
+newNavigatorUserMediaErrorCallbackSync ::
+                                       (MonadDOM m) =>
+                                         (Maybe NavigatorUserMediaError -> JSM ()) ->
+                                           m NavigatorUserMediaErrorCallback
+newNavigatorUserMediaErrorCallbackSync callback
+  = liftDOM
+      (NavigatorUserMediaErrorCallback . Callback <$>
+         function ""
+           (\ _ _ [error] -> fromJSVal error >>= \ error' -> callback error'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorUserMediaErrorCallback Mozilla NavigatorUserMediaErrorCallback documentation> 
+newNavigatorUserMediaErrorCallbackAsync ::
+                                        (MonadDOM m) =>
+                                          (Maybe NavigatorUserMediaError -> JSM ()) ->
+                                            m NavigatorUserMediaErrorCallback
+newNavigatorUserMediaErrorCallbackAsync callback
+  = liftDOM
+      (NavigatorUserMediaErrorCallback . Callback <$>
+         function ""
+           (\ _ _ [error] -> fromJSVal error >>= \ error' -> callback error'))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/NavigatorUserMediaSuccessCallback.hs b/src/Language/Javascript/JSaddle/DOM/Generated/NavigatorUserMediaSuccessCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/NavigatorUserMediaSuccessCallback.hs
@@ -0,0 +1,54 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.NavigatorUserMediaSuccessCallback
+       (newNavigatorUserMediaSuccessCallback,
+        newNavigatorUserMediaSuccessCallbackSync,
+        newNavigatorUserMediaSuccessCallbackAsync,
+        NavigatorUserMediaSuccessCallback)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorUserMediaSuccessCallback Mozilla NavigatorUserMediaSuccessCallback documentation> 
+newNavigatorUserMediaSuccessCallback ::
+                                     (MonadDOM m) =>
+                                       (Maybe MediaStream -> JSM ()) ->
+                                         m NavigatorUserMediaSuccessCallback
+newNavigatorUserMediaSuccessCallback callback
+  = liftDOM
+      (NavigatorUserMediaSuccessCallback . Callback <$>
+         function ""
+           (\ _ _ [stream] ->
+              fromJSVal stream >>= \ stream' -> callback stream'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorUserMediaSuccessCallback Mozilla NavigatorUserMediaSuccessCallback documentation> 
+newNavigatorUserMediaSuccessCallbackSync ::
+                                         (MonadDOM m) =>
+                                           (Maybe MediaStream -> JSM ()) ->
+                                             m NavigatorUserMediaSuccessCallback
+newNavigatorUserMediaSuccessCallbackSync callback
+  = liftDOM
+      (NavigatorUserMediaSuccessCallback . Callback <$>
+         function ""
+           (\ _ _ [stream] ->
+              fromJSVal stream >>= \ stream' -> callback stream'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorUserMediaSuccessCallback Mozilla NavigatorUserMediaSuccessCallback documentation> 
+newNavigatorUserMediaSuccessCallbackAsync ::
+                                          (MonadDOM m) =>
+                                            (Maybe MediaStream -> JSM ()) ->
+                                              m NavigatorUserMediaSuccessCallback
+newNavigatorUserMediaSuccessCallbackAsync callback
+  = liftDOM
+      (NavigatorUserMediaSuccessCallback . Callback <$>
+         function ""
+           (\ _ _ [stream] ->
+              fromJSVal stream >>= \ stream' -> callback stream'))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/Node.hs b/src/Language/Javascript/JSaddle/DOM/Generated/Node.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/Node.hs
@@ -0,0 +1,307 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.Node
+       (insertBefore, replaceChild, removeChild, appendChild,
+        hasChildNodes, cloneNode, normalize, isSupported, isSameNode,
+        isEqualNode, lookupPrefix, isDefaultNamespace, lookupNamespaceURI,
+        compareDocumentPosition, contains, pattern ELEMENT_NODE,
+        pattern ATTRIBUTE_NODE, pattern TEXT_NODE,
+        pattern CDATA_SECTION_NODE, pattern ENTITY_REFERENCE_NODE,
+        pattern ENTITY_NODE, pattern PROCESSING_INSTRUCTION_NODE,
+        pattern COMMENT_NODE, pattern DOCUMENT_NODE,
+        pattern DOCUMENT_TYPE_NODE, pattern DOCUMENT_FRAGMENT_NODE,
+        pattern NOTATION_NODE, pattern DOCUMENT_POSITION_DISCONNECTED,
+        pattern DOCUMENT_POSITION_PRECEDING,
+        pattern DOCUMENT_POSITION_FOLLOWING,
+        pattern DOCUMENT_POSITION_CONTAINS,
+        pattern DOCUMENT_POSITION_CONTAINED_BY,
+        pattern DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC, getNodeName,
+        setNodeValue, getNodeValue, getNodeType, getParentNode,
+        getChildNodes, getFirstChild, getLastChild, getPreviousSibling,
+        getNextSibling, getOwnerDocument, getNamespaceURI, setPrefix,
+        getPrefix, getLocalName, getBaseURI, setTextContent,
+        getTextContent, getParentElement, Node, castToNode, gTypeNode,
+        IsNode, toNode)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.insertBefore Mozilla Node.insertBefore documentation> 
+insertBefore ::
+             (MonadDOM m, IsNode self, IsNode newChild, IsNode refChild) =>
+               self -> Maybe newChild -> Maybe refChild -> m (Maybe Node)
+insertBefore self newChild refChild
+  = liftDOM
+      (((toNode self) ^. jsf "insertBefore"
+          [toJSVal newChild, toJSVal refChild])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.replaceChild Mozilla Node.replaceChild documentation> 
+replaceChild ::
+             (MonadDOM m, IsNode self, IsNode newChild, IsNode oldChild) =>
+               self -> Maybe newChild -> Maybe oldChild -> m (Maybe Node)
+replaceChild self newChild oldChild
+  = liftDOM
+      (((toNode self) ^. jsf "replaceChild"
+          [toJSVal newChild, toJSVal oldChild])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.removeChild Mozilla Node.removeChild documentation> 
+removeChild ::
+            (MonadDOM m, IsNode self, IsNode oldChild) =>
+              self -> Maybe oldChild -> m (Maybe Node)
+removeChild self oldChild
+  = liftDOM
+      (((toNode self) ^. jsf "removeChild" [toJSVal oldChild]) >>=
+         fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.appendChild Mozilla Node.appendChild documentation> 
+appendChild ::
+            (MonadDOM m, IsNode self, IsNode newChild) =>
+              self -> Maybe newChild -> m (Maybe Node)
+appendChild self newChild
+  = liftDOM
+      (((toNode self) ^. jsf "appendChild" [toJSVal newChild]) >>=
+         fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.hasChildNodes Mozilla Node.hasChildNodes documentation> 
+hasChildNodes :: (MonadDOM m, IsNode self) => self -> m Bool
+hasChildNodes self
+  = liftDOM (((toNode self) ^. js "hasChildNodes") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.cloneNode Mozilla Node.cloneNode documentation> 
+cloneNode ::
+          (MonadDOM m, IsNode self) => self -> Bool -> m (Maybe Node)
+cloneNode self deep
+  = liftDOM
+      (((toNode self) ^. jsf "cloneNode" [toJSVal deep]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.normalize Mozilla Node.normalize documentation> 
+normalize :: (MonadDOM m, IsNode self) => self -> m ()
+normalize self = liftDOM (void ((toNode self) ^. js "normalize"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.isSupported Mozilla Node.isSupported documentation> 
+isSupported ::
+            (MonadDOM m, IsNode self, ToJSString feature,
+             ToJSString version) =>
+              self -> feature -> Maybe version -> m Bool
+isSupported self feature version
+  = liftDOM
+      (((toNode self) ^. jsf "isSupported"
+          [toJSVal feature, toJSVal version])
+         >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.isSameNode Mozilla Node.isSameNode documentation> 
+isSameNode ::
+           (MonadDOM m, IsNode self, IsNode other) =>
+             self -> Maybe other -> m Bool
+isSameNode self other
+  = liftDOM
+      (((toNode self) ^. jsf "isSameNode" [toJSVal other]) >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.isEqualNode Mozilla Node.isEqualNode documentation> 
+isEqualNode ::
+            (MonadDOM m, IsNode self, IsNode other) =>
+              self -> Maybe other -> m Bool
+isEqualNode self other
+  = liftDOM
+      (((toNode self) ^. jsf "isEqualNode" [toJSVal other]) >>=
+         valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.lookupPrefix Mozilla Node.lookupPrefix documentation> 
+lookupPrefix ::
+             (MonadDOM m, IsNode self, ToJSString namespaceURI,
+              FromJSString result) =>
+               self -> Maybe namespaceURI -> m (Maybe result)
+lookupPrefix self namespaceURI
+  = liftDOM
+      (((toNode self) ^. jsf "lookupPrefix" [toJSVal namespaceURI]) >>=
+         fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.isDefaultNamespace Mozilla Node.isDefaultNamespace documentation> 
+isDefaultNamespace ::
+                   (MonadDOM m, IsNode self, ToJSString namespaceURI) =>
+                     self -> Maybe namespaceURI -> m Bool
+isDefaultNamespace self namespaceURI
+  = liftDOM
+      (((toNode self) ^. jsf "isDefaultNamespace" [toJSVal namespaceURI])
+         >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.lookupNamespaceURI Mozilla Node.lookupNamespaceURI documentation> 
+lookupNamespaceURI ::
+                   (MonadDOM m, IsNode self, ToJSString prefix,
+                    FromJSString result) =>
+                     self -> Maybe prefix -> m (Maybe result)
+lookupNamespaceURI self prefix
+  = liftDOM
+      (((toNode self) ^. jsf "lookupNamespaceURI" [toJSVal prefix]) >>=
+         fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.compareDocumentPosition Mozilla Node.compareDocumentPosition documentation> 
+compareDocumentPosition ::
+                        (MonadDOM m, IsNode self, IsNode other) =>
+                          self -> Maybe other -> m Word
+compareDocumentPosition self other
+  = liftDOM
+      (round <$>
+         (((toNode self) ^. jsf "compareDocumentPosition" [toJSVal other])
+            >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.contains Mozilla Node.contains documentation> 
+contains ::
+         (MonadDOM m, IsNode self, IsNode other) =>
+           self -> Maybe other -> m Bool
+contains self other
+  = liftDOM
+      (((toNode self) ^. jsf "contains" [toJSVal other]) >>= valToBool)
+pattern ELEMENT_NODE = 1
+pattern ATTRIBUTE_NODE = 2
+pattern TEXT_NODE = 3
+pattern CDATA_SECTION_NODE = 4
+pattern ENTITY_REFERENCE_NODE = 5
+pattern ENTITY_NODE = 6
+pattern PROCESSING_INSTRUCTION_NODE = 7
+pattern COMMENT_NODE = 8
+pattern DOCUMENT_NODE = 9
+pattern DOCUMENT_TYPE_NODE = 10
+pattern DOCUMENT_FRAGMENT_NODE = 11
+pattern NOTATION_NODE = 12
+pattern DOCUMENT_POSITION_DISCONNECTED = 1
+pattern DOCUMENT_POSITION_PRECEDING = 2
+pattern DOCUMENT_POSITION_FOLLOWING = 4
+pattern DOCUMENT_POSITION_CONTAINS = 8
+pattern DOCUMENT_POSITION_CONTAINED_BY = 16
+pattern DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = 32
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.nodeName Mozilla Node.nodeName documentation> 
+getNodeName ::
+            (MonadDOM m, IsNode self, FromJSString result) =>
+              self -> m (Maybe result)
+getNodeName self
+  = liftDOM (((toNode self) ^. js "nodeName") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.nodeValue Mozilla Node.nodeValue documentation> 
+setNodeValue ::
+             (MonadDOM m, IsNode self, ToJSString val) =>
+               self -> Maybe val -> m ()
+setNodeValue self val
+  = liftDOM ((toNode self) ^. jss "nodeValue" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.nodeValue Mozilla Node.nodeValue documentation> 
+getNodeValue ::
+             (MonadDOM m, IsNode self, FromJSString result) =>
+               self -> m (Maybe result)
+getNodeValue self
+  = liftDOM (((toNode self) ^. js "nodeValue") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.nodeType Mozilla Node.nodeType documentation> 
+getNodeType :: (MonadDOM m, IsNode self) => self -> m Word
+getNodeType self
+  = liftDOM
+      (round <$> (((toNode self) ^. js "nodeType") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.parentNode Mozilla Node.parentNode documentation> 
+getParentNode ::
+              (MonadDOM m, IsNode self) => self -> m (Maybe Node)
+getParentNode self
+  = liftDOM (((toNode self) ^. js "parentNode") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.childNodes Mozilla Node.childNodes documentation> 
+getChildNodes ::
+              (MonadDOM m, IsNode self) => self -> m (Maybe NodeList)
+getChildNodes self
+  = liftDOM (((toNode self) ^. js "childNodes") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.firstChild Mozilla Node.firstChild documentation> 
+getFirstChild ::
+              (MonadDOM m, IsNode self) => self -> m (Maybe Node)
+getFirstChild self
+  = liftDOM (((toNode self) ^. js "firstChild") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.lastChild Mozilla Node.lastChild documentation> 
+getLastChild :: (MonadDOM m, IsNode self) => self -> m (Maybe Node)
+getLastChild self
+  = liftDOM (((toNode self) ^. js "lastChild") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.previousSibling Mozilla Node.previousSibling documentation> 
+getPreviousSibling ::
+                   (MonadDOM m, IsNode self) => self -> m (Maybe Node)
+getPreviousSibling self
+  = liftDOM (((toNode self) ^. js "previousSibling") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.nextSibling Mozilla Node.nextSibling documentation> 
+getNextSibling ::
+               (MonadDOM m, IsNode self) => self -> m (Maybe Node)
+getNextSibling self
+  = liftDOM (((toNode self) ^. js "nextSibling") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.ownerDocument Mozilla Node.ownerDocument documentation> 
+getOwnerDocument ::
+                 (MonadDOM m, IsNode self) => self -> m (Maybe Document)
+getOwnerDocument self
+  = liftDOM (((toNode self) ^. js "ownerDocument") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.namespaceURI Mozilla Node.namespaceURI documentation> 
+getNamespaceURI ::
+                (MonadDOM m, IsNode self, FromJSString result) =>
+                  self -> m (Maybe result)
+getNamespaceURI self
+  = liftDOM
+      (((toNode self) ^. js "namespaceURI") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.prefix Mozilla Node.prefix documentation> 
+setPrefix ::
+          (MonadDOM m, IsNode self, ToJSString val) =>
+            self -> Maybe val -> m ()
+setPrefix self val
+  = liftDOM ((toNode self) ^. jss "prefix" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.prefix Mozilla Node.prefix documentation> 
+getPrefix ::
+          (MonadDOM m, IsNode self, FromJSString result) =>
+            self -> m (Maybe result)
+getPrefix self
+  = liftDOM (((toNode self) ^. js "prefix") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.localName Mozilla Node.localName documentation> 
+getLocalName ::
+             (MonadDOM m, IsNode self, FromJSString result) =>
+               self -> m (Maybe result)
+getLocalName self
+  = liftDOM (((toNode self) ^. js "localName") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.baseURI Mozilla Node.baseURI documentation> 
+getBaseURI ::
+           (MonadDOM m, IsNode self, FromJSString result) =>
+             self -> m (Maybe result)
+getBaseURI self
+  = liftDOM (((toNode self) ^. js "baseURI") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.textContent Mozilla Node.textContent documentation> 
+setTextContent ::
+               (MonadDOM m, IsNode self, ToJSString val) =>
+                 self -> Maybe val -> m ()
+setTextContent self val
+  = liftDOM ((toNode self) ^. jss "textContent" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.textContent Mozilla Node.textContent documentation> 
+getTextContent ::
+               (MonadDOM m, IsNode self, FromJSString result) =>
+                 self -> m (Maybe result)
+getTextContent self
+  = liftDOM
+      (((toNode self) ^. js "textContent") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.parentElement Mozilla Node.parentElement documentation> 
+getParentElement ::
+                 (MonadDOM m, IsNode self) => self -> m (Maybe Element)
+getParentElement self
+  = liftDOM (((toNode self) ^. js "parentElement") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/NodeFilter.hs b/src/Language/Javascript/JSaddle/DOM/Generated/NodeFilter.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/NodeFilter.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.NodeFilter
+       (acceptNode, pattern FILTER_ACCEPT, pattern FILTER_REJECT,
+        pattern FILTER_SKIP, pattern SHOW_ALL, pattern SHOW_ELEMENT,
+        pattern SHOW_ATTRIBUTE, pattern SHOW_TEXT,
+        pattern SHOW_CDATA_SECTION, pattern SHOW_ENTITY_REFERENCE,
+        pattern SHOW_ENTITY, pattern SHOW_PROCESSING_INSTRUCTION,
+        pattern SHOW_COMMENT, pattern SHOW_DOCUMENT,
+        pattern SHOW_DOCUMENT_TYPE, pattern SHOW_DOCUMENT_FRAGMENT,
+        pattern SHOW_NOTATION, NodeFilter, castToNodeFilter,
+        gTypeNodeFilter)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeFilter.acceptNode Mozilla NodeFilter.acceptNode documentation> 
+acceptNode ::
+           (MonadDOM m, IsNode n) => NodeFilter -> Maybe n -> m Int
+acceptNode self n
+  = liftDOM
+      (round <$>
+         ((self ^. jsf "acceptNode" [toJSVal n]) >>= valToNumber))
+pattern FILTER_ACCEPT = 1
+pattern FILTER_REJECT = 2
+pattern FILTER_SKIP = 3
+pattern SHOW_ALL = 4294967295
+pattern SHOW_ELEMENT = 1
+pattern SHOW_ATTRIBUTE = 2
+pattern SHOW_TEXT = 4
+pattern SHOW_CDATA_SECTION = 8
+pattern SHOW_ENTITY_REFERENCE = 16
+pattern SHOW_ENTITY = 32
+pattern SHOW_PROCESSING_INSTRUCTION = 64
+pattern SHOW_COMMENT = 128
+pattern SHOW_DOCUMENT = 256
+pattern SHOW_DOCUMENT_TYPE = 512
+pattern SHOW_DOCUMENT_FRAGMENT = 1024
+pattern SHOW_NOTATION = 2048
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/NodeIterator.hs b/src/Language/Javascript/JSaddle/DOM/Generated/NodeIterator.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/NodeIterator.hs
@@ -0,0 +1,60 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.NodeIterator
+       (nextNode, previousNode, detach, getRoot, getWhatToShow, getFilter,
+        getExpandEntityReferences, getReferenceNode,
+        getPointerBeforeReferenceNode, NodeIterator, castToNodeIterator,
+        gTypeNodeIterator)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeIterator.nextNode Mozilla NodeIterator.nextNode documentation> 
+nextNode :: (MonadDOM m) => NodeIterator -> m (Maybe Node)
+nextNode self = liftDOM ((self ^. js "nextNode") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeIterator.previousNode Mozilla NodeIterator.previousNode documentation> 
+previousNode :: (MonadDOM m) => NodeIterator -> m (Maybe Node)
+previousNode self
+  = liftDOM ((self ^. js "previousNode") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeIterator.detach Mozilla NodeIterator.detach documentation> 
+detach :: (MonadDOM m) => NodeIterator -> m ()
+detach self = liftDOM (void (self ^. js "detach"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeIterator.root Mozilla NodeIterator.root documentation> 
+getRoot :: (MonadDOM m) => NodeIterator -> m (Maybe Node)
+getRoot self = liftDOM ((self ^. js "root") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeIterator.whatToShow Mozilla NodeIterator.whatToShow documentation> 
+getWhatToShow :: (MonadDOM m) => NodeIterator -> m Word
+getWhatToShow self
+  = liftDOM (round <$> ((self ^. js "whatToShow") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeIterator.filter Mozilla NodeIterator.filter documentation> 
+getFilter :: (MonadDOM m) => NodeIterator -> m (Maybe NodeFilter)
+getFilter self = liftDOM ((self ^. js "filter") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeIterator.expandEntityReferences Mozilla NodeIterator.expandEntityReferences documentation> 
+getExpandEntityReferences :: (MonadDOM m) => NodeIterator -> m Bool
+getExpandEntityReferences self
+  = liftDOM ((self ^. js "expandEntityReferences") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeIterator.referenceNode Mozilla NodeIterator.referenceNode documentation> 
+getReferenceNode :: (MonadDOM m) => NodeIterator -> m (Maybe Node)
+getReferenceNode self
+  = liftDOM ((self ^. js "referenceNode") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeIterator.pointerBeforeReferenceNode Mozilla NodeIterator.pointerBeforeReferenceNode documentation> 
+getPointerBeforeReferenceNode ::
+                              (MonadDOM m) => NodeIterator -> m Bool
+getPointerBeforeReferenceNode self
+  = liftDOM ((self ^. js "pointerBeforeReferenceNode") >>= valToBool)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/NodeList.hs b/src/Language/Javascript/JSaddle/DOM/Generated/NodeList.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/NodeList.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.NodeList
+       (item, getLength, NodeList, castToNodeList, gTypeNodeList,
+        IsNodeList, toNodeList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeList.item Mozilla NodeList.item documentation> 
+item ::
+     (MonadDOM m, IsNodeList self) => self -> Word -> m (Maybe Node)
+item self index
+  = liftDOM
+      (((toNodeList self) ^. jsf "item" [toJSVal index]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeList.length Mozilla NodeList.length documentation> 
+getLength :: (MonadDOM m, IsNodeList self) => self -> m Word
+getLength self
+  = liftDOM
+      (round <$> (((toNodeList self) ^. js "length") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/Notification.hs b/src/Language/Javascript/JSaddle/DOM/Generated/Notification.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/Notification.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.Notification
+       (show, showEvent, error, close, click, Notification,
+        castToNotification, gTypeNotification)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Notification.show Mozilla Notification.show documentation> 
+show :: (MonadDOM m) => Notification -> m ()
+show self = liftDOM (void (self ^. js "show"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Notification.onshow Mozilla Notification.onshow documentation> 
+showEvent :: EventName Notification MouseEvent
+showEvent = unsafeEventName (toJSString "show")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Notification.onerror Mozilla Notification.onerror documentation> 
+error :: EventName Notification UIEvent
+error = unsafeEventName (toJSString "error")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Notification.onclose Mozilla Notification.onclose documentation> 
+close :: EventName Notification Event
+close = unsafeEventName (toJSString "close")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Notification.onclick Mozilla Notification.onclick documentation> 
+click :: EventName Notification MouseEvent
+click = unsafeEventName (toJSString "click")
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/NotificationCenter.hs b/src/Language/Javascript/JSaddle/DOM/Generated/NotificationCenter.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/NotificationCenter.hs
@@ -0,0 +1,42 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.NotificationCenter
+       (createNotification, checkPermission, requestPermission,
+        NotificationCenter, castToNotificationCenter,
+        gTypeNotificationCenter)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NotificationCenter.createNotification Mozilla NotificationCenter.createNotification documentation> 
+createNotification ::
+                   (MonadDOM m, ToJSString iconUrl, ToJSString title,
+                    ToJSString body) =>
+                     NotificationCenter ->
+                       iconUrl -> title -> body -> m (Maybe Notification)
+createNotification self iconUrl title body
+  = liftDOM
+      ((self ^. jsf "createNotification"
+          [toJSVal iconUrl, toJSVal title, toJSVal body])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NotificationCenter.checkPermission Mozilla NotificationCenter.checkPermission documentation> 
+checkPermission :: (MonadDOM m) => NotificationCenter -> m Int
+checkPermission self
+  = liftDOM
+      (round <$> ((self ^. js "checkPermission") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NotificationCenter.requestPermission Mozilla NotificationCenter.requestPermission documentation> 
+requestPermission ::
+                  (MonadDOM m) => NotificationCenter -> Maybe VoidCallback -> m ()
+requestPermission self callback
+  = liftDOM
+      (void (self ^. jsf "requestPermission" [toJSVal callback]))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/NotificationPermissionCallback.hs b/src/Language/Javascript/JSaddle/DOM/Generated/NotificationPermissionCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/NotificationPermissionCallback.hs
@@ -0,0 +1,57 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.NotificationPermissionCallback
+       (newNotificationPermissionCallback,
+        newNotificationPermissionCallbackSync,
+        newNotificationPermissionCallbackAsync,
+        NotificationPermissionCallback)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NotificationPermissionCallback Mozilla NotificationPermissionCallback documentation> 
+newNotificationPermissionCallback ::
+                                  (MonadDOM m, FromJSString permission) =>
+                                    (permission -> JSM ()) ->
+                                      m (NotificationPermissionCallback permission)
+newNotificationPermissionCallback callback
+  = liftDOM
+      (NotificationPermissionCallback . Callback <$>
+         function ""
+           (\ _ _ [permission] ->
+              fromJSValUnchecked permission >>=
+                \ permission' -> callback permission'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NotificationPermissionCallback Mozilla NotificationPermissionCallback documentation> 
+newNotificationPermissionCallbackSync ::
+                                      (MonadDOM m, FromJSString permission) =>
+                                        (permission -> JSM ()) ->
+                                          m (NotificationPermissionCallback permission)
+newNotificationPermissionCallbackSync callback
+  = liftDOM
+      (NotificationPermissionCallback . Callback <$>
+         function ""
+           (\ _ _ [permission] ->
+              fromJSValUnchecked permission >>=
+                \ permission' -> callback permission'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NotificationPermissionCallback Mozilla NotificationPermissionCallback documentation> 
+newNotificationPermissionCallbackAsync ::
+                                       (MonadDOM m, FromJSString permission) =>
+                                         (permission -> JSM ()) ->
+                                           m (NotificationPermissionCallback permission)
+newNotificationPermissionCallbackAsync callback
+  = liftDOM
+      (NotificationPermissionCallback . Callback <$>
+         function ""
+           (\ _ _ [permission] ->
+              fromJSValUnchecked permission >>=
+                \ permission' -> callback permission'))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/OESStandardDerivatives.hs b/src/Language/Javascript/JSaddle/DOM/Generated/OESStandardDerivatives.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/OESStandardDerivatives.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.OESStandardDerivatives
+       (pattern FRAGMENT_SHADER_DERIVATIVE_HINT_OES,
+        OESStandardDerivatives, castToOESStandardDerivatives,
+        gTypeOESStandardDerivatives)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+pattern FRAGMENT_SHADER_DERIVATIVE_HINT_OES = 35723
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/OESTextureHalfFloat.hs b/src/Language/Javascript/JSaddle/DOM/Generated/OESTextureHalfFloat.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/OESTextureHalfFloat.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.OESTextureHalfFloat
+       (pattern HALF_FLOAT_OES, OESTextureHalfFloat,
+        castToOESTextureHalfFloat, gTypeOESTextureHalfFloat)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+pattern HALF_FLOAT_OES = 36193
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/OESVertexArrayObject.hs b/src/Language/Javascript/JSaddle/DOM/Generated/OESVertexArrayObject.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/OESVertexArrayObject.hs
@@ -0,0 +1,51 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.OESVertexArrayObject
+       (createVertexArrayOES, deleteVertexArrayOES, isVertexArrayOES,
+        bindVertexArrayOES, pattern VERTEX_ARRAY_BINDING_OES,
+        OESVertexArrayObject, castToOESVertexArrayObject,
+        gTypeOESVertexArrayObject)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/OESVertexArrayObject.createVertexArrayOES Mozilla OESVertexArrayObject.createVertexArrayOES documentation> 
+createVertexArrayOES ::
+                     (MonadDOM m) =>
+                       OESVertexArrayObject -> m (Maybe WebGLVertexArrayObjectOES)
+createVertexArrayOES self
+  = liftDOM ((self ^. js "createVertexArrayOES") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/OESVertexArrayObject.deleteVertexArrayOES Mozilla OESVertexArrayObject.deleteVertexArrayOES documentation> 
+deleteVertexArrayOES ::
+                     (MonadDOM m) =>
+                       OESVertexArrayObject -> Maybe WebGLVertexArrayObjectOES -> m ()
+deleteVertexArrayOES self arrayObject
+  = liftDOM
+      (void (self ^. jsf "deleteVertexArrayOES" [toJSVal arrayObject]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/OESVertexArrayObject.isVertexArrayOES Mozilla OESVertexArrayObject.isVertexArrayOES documentation> 
+isVertexArrayOES ::
+                 (MonadDOM m) =>
+                   OESVertexArrayObject -> Maybe WebGLVertexArrayObjectOES -> m Bool
+isVertexArrayOES self arrayObject
+  = liftDOM
+      ((self ^. jsf "isVertexArrayOES" [toJSVal arrayObject]) >>=
+         valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/OESVertexArrayObject.bindVertexArrayOES Mozilla OESVertexArrayObject.bindVertexArrayOES documentation> 
+bindVertexArrayOES ::
+                   (MonadDOM m) =>
+                     OESVertexArrayObject -> Maybe WebGLVertexArrayObjectOES -> m ()
+bindVertexArrayOES self arrayObject
+  = liftDOM
+      (void (self ^. jsf "bindVertexArrayOES" [toJSVal arrayObject]))
+pattern VERTEX_ARRAY_BINDING_OES = 34229
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/OfflineAudioCompletionEvent.hs b/src/Language/Javascript/JSaddle/DOM/Generated/OfflineAudioCompletionEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/OfflineAudioCompletionEvent.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.OfflineAudioCompletionEvent
+       (getRenderedBuffer, OfflineAudioCompletionEvent,
+        castToOfflineAudioCompletionEvent,
+        gTypeOfflineAudioCompletionEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/OfflineAudioCompletionEvent.renderedBuffer Mozilla OfflineAudioCompletionEvent.renderedBuffer documentation> 
+getRenderedBuffer ::
+                  (MonadDOM m) =>
+                    OfflineAudioCompletionEvent -> m (Maybe AudioBuffer)
+getRenderedBuffer self
+  = liftDOM ((self ^. js "renderedBuffer") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/OfflineAudioContext.hs b/src/Language/Javascript/JSaddle/DOM/Generated/OfflineAudioContext.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/OfflineAudioContext.hs
@@ -0,0 +1,26 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.OfflineAudioContext
+       (newOfflineAudioContext, OfflineAudioContext,
+        castToOfflineAudioContext, gTypeOfflineAudioContext)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/OfflineAudioContext Mozilla OfflineAudioContext documentation> 
+newOfflineAudioContext ::
+                       (MonadDOM m) => Word -> Word -> Float -> m OfflineAudioContext
+newOfflineAudioContext numberOfChannels numberOfFrames sampleRate
+  = liftDOM
+      (OfflineAudioContext <$>
+         new (jsg "OfflineAudioContext")
+           [toJSVal numberOfChannels, toJSVal numberOfFrames,
+            toJSVal sampleRate])
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/OscillatorNode.hs b/src/Language/Javascript/JSaddle/DOM/Generated/OscillatorNode.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/OscillatorNode.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.OscillatorNode
+       (start, stop, noteOn, noteOff, setPeriodicWave, pattern SINE,
+        pattern SQUARE, pattern SAWTOOTH, pattern TRIANGLE, pattern CUSTOM,
+        pattern UNSCHEDULED_STATE, pattern SCHEDULED_STATE,
+        pattern PLAYING_STATE, pattern FINISHED_STATE, setType, getType,
+        getPlaybackState, getFrequency, getDetune, ended, OscillatorNode,
+        castToOscillatorNode, gTypeOscillatorNode)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/OscillatorNode.start Mozilla OscillatorNode.start documentation> 
+start :: (MonadDOM m) => OscillatorNode -> Double -> m ()
+start self when
+  = liftDOM (void (self ^. jsf "start" [toJSVal when]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/OscillatorNode.stop Mozilla OscillatorNode.stop documentation> 
+stop :: (MonadDOM m) => OscillatorNode -> Double -> m ()
+stop self when = liftDOM (void (self ^. jsf "stop" [toJSVal when]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/OscillatorNode.noteOn Mozilla OscillatorNode.noteOn documentation> 
+noteOn :: (MonadDOM m) => OscillatorNode -> Double -> m ()
+noteOn self when
+  = liftDOM (void (self ^. jsf "noteOn" [toJSVal when]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/OscillatorNode.noteOff Mozilla OscillatorNode.noteOff documentation> 
+noteOff :: (MonadDOM m) => OscillatorNode -> Double -> m ()
+noteOff self when
+  = liftDOM (void (self ^. jsf "noteOff" [toJSVal when]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/OscillatorNode.setPeriodicWave Mozilla OscillatorNode.setPeriodicWave documentation> 
+setPeriodicWave ::
+                (MonadDOM m) => OscillatorNode -> Maybe PeriodicWave -> m ()
+setPeriodicWave self wave
+  = liftDOM (void (self ^. jsf "setPeriodicWave" [toJSVal wave]))
+pattern SINE = 0
+pattern SQUARE = 1
+pattern SAWTOOTH = 2
+pattern TRIANGLE = 3
+pattern CUSTOM = 4
+pattern UNSCHEDULED_STATE = 0
+pattern SCHEDULED_STATE = 1
+pattern PLAYING_STATE = 2
+pattern FINISHED_STATE = 3
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/OscillatorNode.type Mozilla OscillatorNode.type documentation> 
+setType ::
+        (MonadDOM m, ToJSString val) => OscillatorNode -> val -> m ()
+setType self val = liftDOM (self ^. jss "type" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/OscillatorNode.type Mozilla OscillatorNode.type documentation> 
+getType ::
+        (MonadDOM m, FromJSString result) => OscillatorNode -> m result
+getType self = liftDOM ((self ^. js "type") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/OscillatorNode.playbackState Mozilla OscillatorNode.playbackState documentation> 
+getPlaybackState :: (MonadDOM m) => OscillatorNode -> m Word
+getPlaybackState self
+  = liftDOM
+      (round <$> ((self ^. js "playbackState") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/OscillatorNode.frequency Mozilla OscillatorNode.frequency documentation> 
+getFrequency ::
+             (MonadDOM m) => OscillatorNode -> m (Maybe AudioParam)
+getFrequency self
+  = liftDOM ((self ^. js "frequency") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/OscillatorNode.detune Mozilla OscillatorNode.detune documentation> 
+getDetune :: (MonadDOM m) => OscillatorNode -> m (Maybe AudioParam)
+getDetune self = liftDOM ((self ^. js "detune") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/OscillatorNode.onended Mozilla OscillatorNode.onended documentation> 
+ended :: EventName OscillatorNode Event
+ended = unsafeEventName (toJSString "ended")
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/OverflowEvent.hs b/src/Language/Javascript/JSaddle/DOM/Generated/OverflowEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/OverflowEvent.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.OverflowEvent
+       (pattern HORIZONTAL, pattern VERTICAL, pattern BOTH, getOrient,
+        getHorizontalOverflow, getVerticalOverflow, OverflowEvent,
+        castToOverflowEvent, gTypeOverflowEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+pattern HORIZONTAL = 0
+pattern VERTICAL = 1
+pattern BOTH = 2
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/OverflowEvent.orient Mozilla OverflowEvent.orient documentation> 
+getOrient :: (MonadDOM m) => OverflowEvent -> m Word
+getOrient self
+  = liftDOM (round <$> ((self ^. js "orient") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/OverflowEvent.horizontalOverflow Mozilla OverflowEvent.horizontalOverflow documentation> 
+getHorizontalOverflow :: (MonadDOM m) => OverflowEvent -> m Bool
+getHorizontalOverflow self
+  = liftDOM ((self ^. js "horizontalOverflow") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/OverflowEvent.verticalOverflow Mozilla OverflowEvent.verticalOverflow documentation> 
+getVerticalOverflow :: (MonadDOM m) => OverflowEvent -> m Bool
+getVerticalOverflow self
+  = liftDOM ((self ^. js "verticalOverflow") >>= valToBool)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/PageTransitionEvent.hs b/src/Language/Javascript/JSaddle/DOM/Generated/PageTransitionEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/PageTransitionEvent.hs
@@ -0,0 +1,21 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.PageTransitionEvent
+       (getPersisted, PageTransitionEvent, castToPageTransitionEvent,
+        gTypePageTransitionEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PageTransitionEvent.persisted Mozilla PageTransitionEvent.persisted documentation> 
+getPersisted :: (MonadDOM m) => PageTransitionEvent -> m Bool
+getPersisted self
+  = liftDOM ((self ^. js "persisted") >>= valToBool)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/PannerNode.hs b/src/Language/Javascript/JSaddle/DOM/Generated/PannerNode.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/PannerNode.hs
@@ -0,0 +1,137 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.PannerNode
+       (setPosition, setOrientation, setVelocity, pattern EQUALPOWER,
+        pattern HRTF, pattern SOUNDFIELD, pattern LINEAR_DISTANCE,
+        pattern INVERSE_DISTANCE, pattern EXPONENTIAL_DISTANCE,
+        setPanningModel, getPanningModel, setDistanceModel,
+        getDistanceModel, setRefDistance, getRefDistance, setMaxDistance,
+        getMaxDistance, setRolloffFactor, getRolloffFactor,
+        setConeInnerAngle, getConeInnerAngle, setConeOuterAngle,
+        getConeOuterAngle, setConeOuterGain, getConeOuterGain, PannerNode,
+        castToPannerNode, gTypePannerNode)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.setPosition Mozilla webkitAudioPannerNode.setPosition documentation> 
+setPosition ::
+            (MonadDOM m) => PannerNode -> Float -> Float -> Float -> m ()
+setPosition self x y z
+  = liftDOM
+      (void
+         (self ^. jsf "setPosition" [toJSVal x, toJSVal y, toJSVal z]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.setOrientation Mozilla webkitAudioPannerNode.setOrientation documentation> 
+setOrientation ::
+               (MonadDOM m) => PannerNode -> Float -> Float -> Float -> m ()
+setOrientation self x y z
+  = liftDOM
+      (void
+         (self ^. jsf "setOrientation" [toJSVal x, toJSVal y, toJSVal z]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.setVelocity Mozilla webkitAudioPannerNode.setVelocity documentation> 
+setVelocity ::
+            (MonadDOM m) => PannerNode -> Float -> Float -> Float -> m ()
+setVelocity self x y z
+  = liftDOM
+      (void
+         (self ^. jsf "setVelocity" [toJSVal x, toJSVal y, toJSVal z]))
+pattern EQUALPOWER = 0
+pattern HRTF = 1
+pattern SOUNDFIELD = 2
+pattern LINEAR_DISTANCE = 0
+pattern INVERSE_DISTANCE = 1
+pattern EXPONENTIAL_DISTANCE = 2
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.panningModel Mozilla webkitAudioPannerNode.panningModel documentation> 
+setPanningModel ::
+                (MonadDOM m, ToJSString val) => PannerNode -> val -> m ()
+setPanningModel self val
+  = liftDOM (self ^. jss "panningModel" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.panningModel Mozilla webkitAudioPannerNode.panningModel documentation> 
+getPanningModel ::
+                (MonadDOM m, FromJSString result) => PannerNode -> m result
+getPanningModel self
+  = liftDOM ((self ^. js "panningModel") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.distanceModel Mozilla webkitAudioPannerNode.distanceModel documentation> 
+setDistanceModel ::
+                 (MonadDOM m, ToJSString val) => PannerNode -> val -> m ()
+setDistanceModel self val
+  = liftDOM (self ^. jss "distanceModel" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.distanceModel Mozilla webkitAudioPannerNode.distanceModel documentation> 
+getDistanceModel ::
+                 (MonadDOM m, FromJSString result) => PannerNode -> m result
+getDistanceModel self
+  = liftDOM ((self ^. js "distanceModel") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.refDistance Mozilla webkitAudioPannerNode.refDistance documentation> 
+setRefDistance :: (MonadDOM m) => PannerNode -> Double -> m ()
+setRefDistance self val
+  = liftDOM (self ^. jss "refDistance" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.refDistance Mozilla webkitAudioPannerNode.refDistance documentation> 
+getRefDistance :: (MonadDOM m) => PannerNode -> m Double
+getRefDistance self
+  = liftDOM ((self ^. js "refDistance") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.maxDistance Mozilla webkitAudioPannerNode.maxDistance documentation> 
+setMaxDistance :: (MonadDOM m) => PannerNode -> Double -> m ()
+setMaxDistance self val
+  = liftDOM (self ^. jss "maxDistance" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.maxDistance Mozilla webkitAudioPannerNode.maxDistance documentation> 
+getMaxDistance :: (MonadDOM m) => PannerNode -> m Double
+getMaxDistance self
+  = liftDOM ((self ^. js "maxDistance") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.rolloffFactor Mozilla webkitAudioPannerNode.rolloffFactor documentation> 
+setRolloffFactor :: (MonadDOM m) => PannerNode -> Double -> m ()
+setRolloffFactor self val
+  = liftDOM (self ^. jss "rolloffFactor" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.rolloffFactor Mozilla webkitAudioPannerNode.rolloffFactor documentation> 
+getRolloffFactor :: (MonadDOM m) => PannerNode -> m Double
+getRolloffFactor self
+  = liftDOM ((self ^. js "rolloffFactor") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.coneInnerAngle Mozilla webkitAudioPannerNode.coneInnerAngle documentation> 
+setConeInnerAngle :: (MonadDOM m) => PannerNode -> Double -> m ()
+setConeInnerAngle self val
+  = liftDOM (self ^. jss "coneInnerAngle" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.coneInnerAngle Mozilla webkitAudioPannerNode.coneInnerAngle documentation> 
+getConeInnerAngle :: (MonadDOM m) => PannerNode -> m Double
+getConeInnerAngle self
+  = liftDOM ((self ^. js "coneInnerAngle") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.coneOuterAngle Mozilla webkitAudioPannerNode.coneOuterAngle documentation> 
+setConeOuterAngle :: (MonadDOM m) => PannerNode -> Double -> m ()
+setConeOuterAngle self val
+  = liftDOM (self ^. jss "coneOuterAngle" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.coneOuterAngle Mozilla webkitAudioPannerNode.coneOuterAngle documentation> 
+getConeOuterAngle :: (MonadDOM m) => PannerNode -> m Double
+getConeOuterAngle self
+  = liftDOM ((self ^. js "coneOuterAngle") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.coneOuterGain Mozilla webkitAudioPannerNode.coneOuterGain documentation> 
+setConeOuterGain :: (MonadDOM m) => PannerNode -> Double -> m ()
+setConeOuterGain self val
+  = liftDOM (self ^. jss "coneOuterGain" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.coneOuterGain Mozilla webkitAudioPannerNode.coneOuterGain documentation> 
+getConeOuterGain :: (MonadDOM m) => PannerNode -> m Double
+getConeOuterGain self
+  = liftDOM ((self ^. js "coneOuterGain") >>= valToNumber)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/Path2D.hs b/src/Language/Javascript/JSaddle/DOM/Generated/Path2D.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/Path2D.hs
@@ -0,0 +1,103 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.Path2D
+       (newPath2D, newPath2D', newPath2D'', addPath, closePath, moveTo,
+        lineTo, quadraticCurveTo, bezierCurveTo, arcTo, rect, arc, Path2D,
+        castToPath2D, gTypePath2D)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Path2D Mozilla Path2D documentation> 
+newPath2D :: (MonadDOM m) => m Path2D
+newPath2D = liftDOM (Path2D <$> new (jsg "Path2D") ())
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Path2D Mozilla Path2D documentation> 
+newPath2D' :: (MonadDOM m) => Maybe Path2D -> m Path2D
+newPath2D' path
+  = liftDOM (Path2D <$> new (jsg "Path2D") [toJSVal path])
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Path2D Mozilla Path2D documentation> 
+newPath2D'' :: (MonadDOM m, ToJSString text) => text -> m Path2D
+newPath2D'' text
+  = liftDOM (Path2D <$> new (jsg "Path2D") [toJSVal text])
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Path2D.addPath Mozilla Path2D.addPath documentation> 
+addPath ::
+        (MonadDOM m) => Path2D -> Maybe Path2D -> Maybe SVGMatrix -> m ()
+addPath self path transform
+  = liftDOM
+      (void (self ^. jsf "addPath" [toJSVal path, toJSVal transform]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Path2D.closePath Mozilla Path2D.closePath documentation> 
+closePath :: (MonadDOM m) => Path2D -> m ()
+closePath self = liftDOM (void (self ^. js "closePath"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Path2D.moveTo Mozilla Path2D.moveTo documentation> 
+moveTo :: (MonadDOM m) => Path2D -> Float -> Float -> m ()
+moveTo self x y
+  = liftDOM (void (self ^. jsf "moveTo" [toJSVal x, toJSVal y]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Path2D.lineTo Mozilla Path2D.lineTo documentation> 
+lineTo :: (MonadDOM m) => Path2D -> Float -> Float -> m ()
+lineTo self x y
+  = liftDOM (void (self ^. jsf "lineTo" [toJSVal x, toJSVal y]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Path2D.quadraticCurveTo Mozilla Path2D.quadraticCurveTo documentation> 
+quadraticCurveTo ::
+                 (MonadDOM m) => Path2D -> Float -> Float -> Float -> Float -> m ()
+quadraticCurveTo self cpx cpy x y
+  = liftDOM
+      (void
+         (self ^. jsf "quadraticCurveTo"
+            [toJSVal cpx, toJSVal cpy, toJSVal x, toJSVal y]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Path2D.bezierCurveTo Mozilla Path2D.bezierCurveTo documentation> 
+bezierCurveTo ::
+              (MonadDOM m) =>
+                Path2D ->
+                  Float -> Float -> Float -> Float -> Float -> Float -> m ()
+bezierCurveTo self cp1x cp1y cp2x cp2y x y
+  = liftDOM
+      (void
+         (self ^. jsf "bezierCurveTo"
+            [toJSVal cp1x, toJSVal cp1y, toJSVal cp2x, toJSVal cp2y, toJSVal x,
+             toJSVal y]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Path2D.arcTo Mozilla Path2D.arcTo documentation> 
+arcTo ::
+      (MonadDOM m) =>
+        Path2D -> Float -> Float -> Float -> Float -> Float -> m ()
+arcTo self x1 y1 x2 y2 radius
+  = liftDOM
+      (void
+         (self ^. jsf "arcTo"
+            [toJSVal x1, toJSVal y1, toJSVal x2, toJSVal y2, toJSVal radius]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Path2D.rect Mozilla Path2D.rect documentation> 
+rect ::
+     (MonadDOM m) => Path2D -> Float -> Float -> Float -> Float -> m ()
+rect self x y width height
+  = liftDOM
+      (void
+         (self ^. jsf "rect"
+            [toJSVal x, toJSVal y, toJSVal width, toJSVal height]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Path2D.arc Mozilla Path2D.arc documentation> 
+arc ::
+    (MonadDOM m) =>
+      Path2D -> Float -> Float -> Float -> Float -> Float -> Bool -> m ()
+arc self x y radius startAngle endAngle anticlockwise
+  = liftDOM
+      (void
+         (self ^. jsf "arc"
+            [toJSVal x, toJSVal y, toJSVal radius, toJSVal startAngle,
+             toJSVal endAngle, toJSVal anticlockwise]))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/Performance.hs b/src/Language/Javascript/JSaddle/DOM/Generated/Performance.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/Performance.hs
@@ -0,0 +1,112 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.Performance
+       (webkitGetEntries, webkitGetEntriesByType, webkitGetEntriesByName,
+        webkitClearResourceTimings, webkitSetResourceTimingBufferSize,
+        webkitMark, webkitClearMarks, webkitMeasure, webkitClearMeasures,
+        now, getNavigation, getTiming, webKitResourceTimingBufferFull,
+        Performance, castToPerformance, gTypePerformance)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.webkitGetEntries Mozilla Performance.webkitGetEntries documentation> 
+webkitGetEntries ::
+                 (MonadDOM m) => Performance -> m (Maybe PerformanceEntryList)
+webkitGetEntries self
+  = liftDOM ((self ^. js "webkitGetEntries") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.webkitGetEntriesByType Mozilla Performance.webkitGetEntriesByType documentation> 
+webkitGetEntriesByType ::
+                       (MonadDOM m, ToJSString entryType) =>
+                         Performance -> entryType -> m (Maybe PerformanceEntryList)
+webkitGetEntriesByType self entryType
+  = liftDOM
+      ((self ^. jsf "webkitGetEntriesByType" [toJSVal entryType]) >>=
+         fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.webkitGetEntriesByName Mozilla Performance.webkitGetEntriesByName documentation> 
+webkitGetEntriesByName ::
+                       (MonadDOM m, ToJSString name, ToJSString entryType) =>
+                         Performance -> name -> entryType -> m (Maybe PerformanceEntryList)
+webkitGetEntriesByName self name entryType
+  = liftDOM
+      ((self ^. jsf "webkitGetEntriesByName"
+          [toJSVal name, toJSVal entryType])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.webkitClearResourceTimings Mozilla Performance.webkitClearResourceTimings documentation> 
+webkitClearResourceTimings :: (MonadDOM m) => Performance -> m ()
+webkitClearResourceTimings self
+  = liftDOM (void (self ^. js "webkitClearResourceTimings"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.webkitSetResourceTimingBufferSize Mozilla Performance.webkitSetResourceTimingBufferSize documentation> 
+webkitSetResourceTimingBufferSize ::
+                                  (MonadDOM m) => Performance -> Word -> m ()
+webkitSetResourceTimingBufferSize self maxSize
+  = liftDOM
+      (void
+         (self ^. jsf "webkitSetResourceTimingBufferSize"
+            [toJSVal maxSize]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.webkitMark Mozilla Performance.webkitMark documentation> 
+webkitMark ::
+           (MonadDOM m, ToJSString markName) =>
+             Performance -> markName -> m ()
+webkitMark self markName
+  = liftDOM (void (self ^. jsf "webkitMark" [toJSVal markName]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.webkitClearMarks Mozilla Performance.webkitClearMarks documentation> 
+webkitClearMarks ::
+                 (MonadDOM m, ToJSString markName) =>
+                   Performance -> markName -> m ()
+webkitClearMarks self markName
+  = liftDOM
+      (void (self ^. jsf "webkitClearMarks" [toJSVal markName]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.webkitMeasure Mozilla Performance.webkitMeasure documentation> 
+webkitMeasure ::
+              (MonadDOM m, ToJSString measureName, ToJSString startMark,
+               ToJSString endMark) =>
+                Performance -> measureName -> startMark -> endMark -> m ()
+webkitMeasure self measureName startMark endMark
+  = liftDOM
+      (void
+         (self ^. jsf "webkitMeasure"
+            [toJSVal measureName, toJSVal startMark, toJSVal endMark]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.webkitClearMeasures Mozilla Performance.webkitClearMeasures documentation> 
+webkitClearMeasures ::
+                    (MonadDOM m, ToJSString measureName) =>
+                      Performance -> measureName -> m ()
+webkitClearMeasures self measureName
+  = liftDOM
+      (void (self ^. jsf "webkitClearMeasures" [toJSVal measureName]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.now Mozilla Performance.now documentation> 
+now :: (MonadDOM m) => Performance -> m Double
+now self = liftDOM ((self ^. js "now") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.navigation Mozilla Performance.navigation documentation> 
+getNavigation ::
+              (MonadDOM m) => Performance -> m (Maybe PerformanceNavigation)
+getNavigation self
+  = liftDOM ((self ^. js "navigation") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.timing Mozilla Performance.timing documentation> 
+getTiming ::
+          (MonadDOM m) => Performance -> m (Maybe PerformanceTiming)
+getTiming self = liftDOM ((self ^. js "timing") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.onwebkitresourcetimingbufferfull Mozilla Performance.onwebkitresourcetimingbufferfull documentation> 
+webKitResourceTimingBufferFull :: EventName Performance Event
+webKitResourceTimingBufferFull
+  = unsafeEventName (toJSString "webkitresourcetimingbufferfull")
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/PerformanceEntry.hs b/src/Language/Javascript/JSaddle/DOM/Generated/PerformanceEntry.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/PerformanceEntry.hs
@@ -0,0 +1,48 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.PerformanceEntry
+       (getName, getEntryType, getStartTime, getDuration,
+        PerformanceEntry, castToPerformanceEntry, gTypePerformanceEntry,
+        IsPerformanceEntry, toPerformanceEntry)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceEntry.name Mozilla PerformanceEntry.name documentation> 
+getName ::
+        (MonadDOM m, IsPerformanceEntry self, FromJSString result) =>
+          self -> m result
+getName self
+  = liftDOM
+      (((toPerformanceEntry self) ^. js "name") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceEntry.entryType Mozilla PerformanceEntry.entryType documentation> 
+getEntryType ::
+             (MonadDOM m, IsPerformanceEntry self, FromJSString result) =>
+               self -> m result
+getEntryType self
+  = liftDOM
+      (((toPerformanceEntry self) ^. js "entryType") >>=
+         fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceEntry.startTime Mozilla PerformanceEntry.startTime documentation> 
+getStartTime ::
+             (MonadDOM m, IsPerformanceEntry self) => self -> m Double
+getStartTime self
+  = liftDOM
+      (((toPerformanceEntry self) ^. js "startTime") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceEntry.duration Mozilla PerformanceEntry.duration documentation> 
+getDuration ::
+            (MonadDOM m, IsPerformanceEntry self) => self -> m Double
+getDuration self
+  = liftDOM
+      (((toPerformanceEntry self) ^. js "duration") >>= valToNumber)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/PerformanceEntryList.hs b/src/Language/Javascript/JSaddle/DOM/Generated/PerformanceEntryList.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/PerformanceEntryList.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.PerformanceEntryList
+       (item, getLength, PerformanceEntryList, castToPerformanceEntryList,
+        gTypePerformanceEntryList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceEntryList.item Mozilla PerformanceEntryList.item documentation> 
+item ::
+     (MonadDOM m) =>
+       PerformanceEntryList -> Word -> m (Maybe PerformanceEntry)
+item self index
+  = liftDOM ((self ^. jsf "item" [toJSVal index]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceEntryList.length Mozilla PerformanceEntryList.length documentation> 
+getLength :: (MonadDOM m) => PerformanceEntryList -> m Word
+getLength self
+  = liftDOM (round <$> ((self ^. js "length") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/PerformanceNavigation.hs b/src/Language/Javascript/JSaddle/DOM/Generated/PerformanceNavigation.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/PerformanceNavigation.hs
@@ -0,0 +1,33 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.PerformanceNavigation
+       (pattern TYPE_NAVIGATE, pattern TYPE_RELOAD,
+        pattern TYPE_BACK_FORWARD, pattern TYPE_RESERVED, getType,
+        getRedirectCount, PerformanceNavigation,
+        castToPerformanceNavigation, gTypePerformanceNavigation)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+pattern TYPE_NAVIGATE = 0
+pattern TYPE_RELOAD = 1
+pattern TYPE_BACK_FORWARD = 2
+pattern TYPE_RESERVED = 255
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceNavigation.type Mozilla PerformanceNavigation.type documentation> 
+getType :: (MonadDOM m) => PerformanceNavigation -> m Word
+getType self
+  = liftDOM (round <$> ((self ^. js "type") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceNavigation.redirectCount Mozilla PerformanceNavigation.redirectCount documentation> 
+getRedirectCount :: (MonadDOM m) => PerformanceNavigation -> m Word
+getRedirectCount self
+  = liftDOM
+      (round <$> ((self ^. js "redirectCount") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/PerformanceResourceTiming.hs b/src/Language/Javascript/JSaddle/DOM/Generated/PerformanceResourceTiming.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/PerformanceResourceTiming.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.PerformanceResourceTiming
+       (getInitiatorType, getRedirectStart, getRedirectEnd, getFetchStart,
+        getDomainLookupStart, getDomainLookupEnd, getConnectStart,
+        getConnectEnd, getSecureConnectionStart, getRequestStart,
+        getResponseEnd, PerformanceResourceTiming,
+        castToPerformanceResourceTiming, gTypePerformanceResourceTiming)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming.initiatorType Mozilla PerformanceResourceTiming.initiatorType documentation> 
+getInitiatorType ::
+                 (MonadDOM m, FromJSString result) =>
+                   PerformanceResourceTiming -> m result
+getInitiatorType self
+  = liftDOM ((self ^. js "initiatorType") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming.redirectStart Mozilla PerformanceResourceTiming.redirectStart documentation> 
+getRedirectStart ::
+                 (MonadDOM m) => PerformanceResourceTiming -> m Double
+getRedirectStart self
+  = liftDOM ((self ^. js "redirectStart") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming.redirectEnd Mozilla PerformanceResourceTiming.redirectEnd documentation> 
+getRedirectEnd ::
+               (MonadDOM m) => PerformanceResourceTiming -> m Double
+getRedirectEnd self
+  = liftDOM ((self ^. js "redirectEnd") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming.fetchStart Mozilla PerformanceResourceTiming.fetchStart documentation> 
+getFetchStart ::
+              (MonadDOM m) => PerformanceResourceTiming -> m Double
+getFetchStart self
+  = liftDOM ((self ^. js "fetchStart") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming.domainLookupStart Mozilla PerformanceResourceTiming.domainLookupStart documentation> 
+getDomainLookupStart ::
+                     (MonadDOM m) => PerformanceResourceTiming -> m Double
+getDomainLookupStart self
+  = liftDOM ((self ^. js "domainLookupStart") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming.domainLookupEnd Mozilla PerformanceResourceTiming.domainLookupEnd documentation> 
+getDomainLookupEnd ::
+                   (MonadDOM m) => PerformanceResourceTiming -> m Double
+getDomainLookupEnd self
+  = liftDOM ((self ^. js "domainLookupEnd") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming.connectStart Mozilla PerformanceResourceTiming.connectStart documentation> 
+getConnectStart ::
+                (MonadDOM m) => PerformanceResourceTiming -> m Double
+getConnectStart self
+  = liftDOM ((self ^. js "connectStart") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming.connectEnd Mozilla PerformanceResourceTiming.connectEnd documentation> 
+getConnectEnd ::
+              (MonadDOM m) => PerformanceResourceTiming -> m Double
+getConnectEnd self
+  = liftDOM ((self ^. js "connectEnd") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming.secureConnectionStart Mozilla PerformanceResourceTiming.secureConnectionStart documentation> 
+getSecureConnectionStart ::
+                         (MonadDOM m) => PerformanceResourceTiming -> m Double
+getSecureConnectionStart self
+  = liftDOM ((self ^. js "secureConnectionStart") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming.requestStart Mozilla PerformanceResourceTiming.requestStart documentation> 
+getRequestStart ::
+                (MonadDOM m) => PerformanceResourceTiming -> m Double
+getRequestStart self
+  = liftDOM ((self ^. js "requestStart") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming.responseEnd Mozilla PerformanceResourceTiming.responseEnd documentation> 
+getResponseEnd ::
+               (MonadDOM m) => PerformanceResourceTiming -> m Double
+getResponseEnd self
+  = liftDOM ((self ^. js "responseEnd") >>= valToNumber)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/PerformanceTiming.hs b/src/Language/Javascript/JSaddle/DOM/Generated/PerformanceTiming.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/PerformanceTiming.hs
@@ -0,0 +1,146 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.PerformanceTiming
+       (getNavigationStart, getUnloadEventStart, getUnloadEventEnd,
+        getRedirectStart, getRedirectEnd, getFetchStart,
+        getDomainLookupStart, getDomainLookupEnd, getConnectStart,
+        getConnectEnd, getSecureConnectionStart, getRequestStart,
+        getResponseStart, getResponseEnd, getDomLoading, getDomInteractive,
+        getDomContentLoadedEventStart, getDomContentLoadedEventEnd,
+        getDomComplete, getLoadEventStart, getLoadEventEnd,
+        PerformanceTiming, castToPerformanceTiming, gTypePerformanceTiming)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.navigationStart Mozilla PerformanceTiming.navigationStart documentation> 
+getNavigationStart :: (MonadDOM m) => PerformanceTiming -> m Word64
+getNavigationStart self
+  = liftDOM
+      (round <$> ((self ^. js "navigationStart") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.unloadEventStart Mozilla PerformanceTiming.unloadEventStart documentation> 
+getUnloadEventStart ::
+                    (MonadDOM m) => PerformanceTiming -> m Word64
+getUnloadEventStart self
+  = liftDOM
+      (round <$> ((self ^. js "unloadEventStart") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.unloadEventEnd Mozilla PerformanceTiming.unloadEventEnd documentation> 
+getUnloadEventEnd :: (MonadDOM m) => PerformanceTiming -> m Word64
+getUnloadEventEnd self
+  = liftDOM
+      (round <$> ((self ^. js "unloadEventEnd") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.redirectStart Mozilla PerformanceTiming.redirectStart documentation> 
+getRedirectStart :: (MonadDOM m) => PerformanceTiming -> m Word64
+getRedirectStart self
+  = liftDOM
+      (round <$> ((self ^. js "redirectStart") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.redirectEnd Mozilla PerformanceTiming.redirectEnd documentation> 
+getRedirectEnd :: (MonadDOM m) => PerformanceTiming -> m Word64
+getRedirectEnd self
+  = liftDOM (round <$> ((self ^. js "redirectEnd") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.fetchStart Mozilla PerformanceTiming.fetchStart documentation> 
+getFetchStart :: (MonadDOM m) => PerformanceTiming -> m Word64
+getFetchStart self
+  = liftDOM (round <$> ((self ^. js "fetchStart") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.domainLookupStart Mozilla PerformanceTiming.domainLookupStart documentation> 
+getDomainLookupStart ::
+                     (MonadDOM m) => PerformanceTiming -> m Word64
+getDomainLookupStart self
+  = liftDOM
+      (round <$> ((self ^. js "domainLookupStart") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.domainLookupEnd Mozilla PerformanceTiming.domainLookupEnd documentation> 
+getDomainLookupEnd :: (MonadDOM m) => PerformanceTiming -> m Word64
+getDomainLookupEnd self
+  = liftDOM
+      (round <$> ((self ^. js "domainLookupEnd") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.connectStart Mozilla PerformanceTiming.connectStart documentation> 
+getConnectStart :: (MonadDOM m) => PerformanceTiming -> m Word64
+getConnectStart self
+  = liftDOM (round <$> ((self ^. js "connectStart") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.connectEnd Mozilla PerformanceTiming.connectEnd documentation> 
+getConnectEnd :: (MonadDOM m) => PerformanceTiming -> m Word64
+getConnectEnd self
+  = liftDOM (round <$> ((self ^. js "connectEnd") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.secureConnectionStart Mozilla PerformanceTiming.secureConnectionStart documentation> 
+getSecureConnectionStart ::
+                         (MonadDOM m) => PerformanceTiming -> m Word64
+getSecureConnectionStart self
+  = liftDOM
+      (round <$> ((self ^. js "secureConnectionStart") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.requestStart Mozilla PerformanceTiming.requestStart documentation> 
+getRequestStart :: (MonadDOM m) => PerformanceTiming -> m Word64
+getRequestStart self
+  = liftDOM (round <$> ((self ^. js "requestStart") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.responseStart Mozilla PerformanceTiming.responseStart documentation> 
+getResponseStart :: (MonadDOM m) => PerformanceTiming -> m Word64
+getResponseStart self
+  = liftDOM
+      (round <$> ((self ^. js "responseStart") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.responseEnd Mozilla PerformanceTiming.responseEnd documentation> 
+getResponseEnd :: (MonadDOM m) => PerformanceTiming -> m Word64
+getResponseEnd self
+  = liftDOM (round <$> ((self ^. js "responseEnd") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.domLoading Mozilla PerformanceTiming.domLoading documentation> 
+getDomLoading :: (MonadDOM m) => PerformanceTiming -> m Word64
+getDomLoading self
+  = liftDOM (round <$> ((self ^. js "domLoading") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.domInteractive Mozilla PerformanceTiming.domInteractive documentation> 
+getDomInteractive :: (MonadDOM m) => PerformanceTiming -> m Word64
+getDomInteractive self
+  = liftDOM
+      (round <$> ((self ^. js "domInteractive") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.domContentLoadedEventStart Mozilla PerformanceTiming.domContentLoadedEventStart documentation> 
+getDomContentLoadedEventStart ::
+                              (MonadDOM m) => PerformanceTiming -> m Word64
+getDomContentLoadedEventStart self
+  = liftDOM
+      (round <$>
+         ((self ^. js "domContentLoadedEventStart") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.domContentLoadedEventEnd Mozilla PerformanceTiming.domContentLoadedEventEnd documentation> 
+getDomContentLoadedEventEnd ::
+                            (MonadDOM m) => PerformanceTiming -> m Word64
+getDomContentLoadedEventEnd self
+  = liftDOM
+      (round <$>
+         ((self ^. js "domContentLoadedEventEnd") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.domComplete Mozilla PerformanceTiming.domComplete documentation> 
+getDomComplete :: (MonadDOM m) => PerformanceTiming -> m Word64
+getDomComplete self
+  = liftDOM (round <$> ((self ^. js "domComplete") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.loadEventStart Mozilla PerformanceTiming.loadEventStart documentation> 
+getLoadEventStart :: (MonadDOM m) => PerformanceTiming -> m Word64
+getLoadEventStart self
+  = liftDOM
+      (round <$> ((self ^. js "loadEventStart") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.loadEventEnd Mozilla PerformanceTiming.loadEventEnd documentation> 
+getLoadEventEnd :: (MonadDOM m) => PerformanceTiming -> m Word64
+getLoadEventEnd self
+  = liftDOM (round <$> ((self ^. js "loadEventEnd") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/Plugin.hs b/src/Language/Javascript/JSaddle/DOM/Generated/Plugin.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/Plugin.hs
@@ -0,0 +1,49 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.Plugin
+       (item, namedItem, getName, getFilename, getDescription, getLength,
+        Plugin, castToPlugin, gTypePlugin)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Plugin.item Mozilla Plugin.item documentation> 
+item :: (MonadDOM m) => Plugin -> Word -> m (Maybe MimeType)
+item self index
+  = liftDOM ((self ^. jsf "item" [toJSVal index]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Plugin.namedItem Mozilla Plugin.namedItem documentation> 
+namedItem ::
+          (MonadDOM m, ToJSString name) =>
+            Plugin -> name -> m (Maybe MimeType)
+namedItem self name
+  = liftDOM ((self ^. jsf "namedItem" [toJSVal name]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Plugin.name Mozilla Plugin.name documentation> 
+getName :: (MonadDOM m, FromJSString result) => Plugin -> m result
+getName self = liftDOM ((self ^. js "name") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Plugin.filename Mozilla Plugin.filename documentation> 
+getFilename ::
+            (MonadDOM m, FromJSString result) => Plugin -> m result
+getFilename self
+  = liftDOM ((self ^. js "filename") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Plugin.description Mozilla Plugin.description documentation> 
+getDescription ::
+               (MonadDOM m, FromJSString result) => Plugin -> m result
+getDescription self
+  = liftDOM ((self ^. js "description") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Plugin.length Mozilla Plugin.length documentation> 
+getLength :: (MonadDOM m) => Plugin -> m Word
+getLength self
+  = liftDOM (round <$> ((self ^. js "length") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/PluginArray.hs b/src/Language/Javascript/JSaddle/DOM/Generated/PluginArray.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/PluginArray.hs
@@ -0,0 +1,38 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.PluginArray
+       (item, namedItem, refresh, getLength, PluginArray,
+        castToPluginArray, gTypePluginArray)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PluginArray.item Mozilla PluginArray.item documentation> 
+item :: (MonadDOM m) => PluginArray -> Word -> m (Maybe Plugin)
+item self index
+  = liftDOM ((self ^. jsf "item" [toJSVal index]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PluginArray.namedItem Mozilla PluginArray.namedItem documentation> 
+namedItem ::
+          (MonadDOM m, ToJSString name) =>
+            PluginArray -> name -> m (Maybe Plugin)
+namedItem self name
+  = liftDOM ((self ^. jsf "namedItem" [toJSVal name]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PluginArray.refresh Mozilla PluginArray.refresh documentation> 
+refresh :: (MonadDOM m) => PluginArray -> Bool -> m ()
+refresh self reload
+  = liftDOM (void (self ^. jsf "refresh" [toJSVal reload]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PluginArray.length Mozilla PluginArray.length documentation> 
+getLength :: (MonadDOM m) => PluginArray -> m Word
+getLength self
+  = liftDOM (round <$> ((self ^. js "length") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/PopStateEvent.hs b/src/Language/Javascript/JSaddle/DOM/Generated/PopStateEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/PopStateEvent.hs
@@ -0,0 +1,19 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.PopStateEvent
+       (getState, PopStateEvent, castToPopStateEvent, gTypePopStateEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PopStateEvent.state Mozilla PopStateEvent.state documentation> 
+getState :: (MonadDOM m) => PopStateEvent -> m JSVal
+getState self = liftDOM ((self ^. js "state") >>= toJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/PositionCallback.hs b/src/Language/Javascript/JSaddle/DOM/Generated/PositionCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/PositionCallback.hs
@@ -0,0 +1,46 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.PositionCallback
+       (newPositionCallback, newPositionCallbackSync,
+        newPositionCallbackAsync, PositionCallback)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PositionCallback Mozilla PositionCallback documentation> 
+newPositionCallback ::
+                    (MonadDOM m) => (Maybe Geoposition -> JSM ()) -> m PositionCallback
+newPositionCallback callback
+  = liftDOM
+      (PositionCallback . Callback <$>
+         function ""
+           (\ _ _ [position] ->
+              fromJSVal position >>= \ position' -> callback position'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PositionCallback Mozilla PositionCallback documentation> 
+newPositionCallbackSync ::
+                        (MonadDOM m) => (Maybe Geoposition -> JSM ()) -> m PositionCallback
+newPositionCallbackSync callback
+  = liftDOM
+      (PositionCallback . Callback <$>
+         function ""
+           (\ _ _ [position] ->
+              fromJSVal position >>= \ position' -> callback position'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PositionCallback Mozilla PositionCallback documentation> 
+newPositionCallbackAsync ::
+                         (MonadDOM m) => (Maybe Geoposition -> JSM ()) -> m PositionCallback
+newPositionCallbackAsync callback
+  = liftDOM
+      (PositionCallback . Callback <$>
+         function ""
+           (\ _ _ [position] ->
+              fromJSVal position >>= \ position' -> callback position'))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/PositionError.hs b/src/Language/Javascript/JSaddle/DOM/Generated/PositionError.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/PositionError.hs
@@ -0,0 +1,31 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.PositionError
+       (pattern PERMISSION_DENIED, pattern POSITION_UNAVAILABLE,
+        pattern TIMEOUT, getCode, getMessage, PositionError,
+        castToPositionError, gTypePositionError)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+pattern PERMISSION_DENIED = 1
+pattern POSITION_UNAVAILABLE = 2
+pattern TIMEOUT = 3
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PositionError.code Mozilla PositionError.code documentation> 
+getCode :: (MonadDOM m) => PositionError -> m Word
+getCode self
+  = liftDOM (round <$> ((self ^. js "code") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PositionError.message Mozilla PositionError.message documentation> 
+getMessage ::
+           (MonadDOM m, FromJSString result) => PositionError -> m result
+getMessage self
+  = liftDOM ((self ^. js "message") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/PositionErrorCallback.hs b/src/Language/Javascript/JSaddle/DOM/Generated/PositionErrorCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/PositionErrorCallback.hs
@@ -0,0 +1,46 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.PositionErrorCallback
+       (newPositionErrorCallback, newPositionErrorCallbackSync,
+        newPositionErrorCallbackAsync, PositionErrorCallback)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PositionErrorCallback Mozilla PositionErrorCallback documentation> 
+newPositionErrorCallback ::
+                         (MonadDOM m) =>
+                           (Maybe PositionError -> JSM ()) -> m PositionErrorCallback
+newPositionErrorCallback callback
+  = liftDOM
+      (PositionErrorCallback . Callback <$>
+         function ""
+           (\ _ _ [error] -> fromJSVal error >>= \ error' -> callback error'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PositionErrorCallback Mozilla PositionErrorCallback documentation> 
+newPositionErrorCallbackSync ::
+                             (MonadDOM m) =>
+                               (Maybe PositionError -> JSM ()) -> m PositionErrorCallback
+newPositionErrorCallbackSync callback
+  = liftDOM
+      (PositionErrorCallback . Callback <$>
+         function ""
+           (\ _ _ [error] -> fromJSVal error >>= \ error' -> callback error'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PositionErrorCallback Mozilla PositionErrorCallback documentation> 
+newPositionErrorCallbackAsync ::
+                              (MonadDOM m) =>
+                                (Maybe PositionError -> JSM ()) -> m PositionErrorCallback
+newPositionErrorCallbackAsync callback
+  = liftDOM
+      (PositionErrorCallback . Callback <$>
+         function ""
+           (\ _ _ [error] -> fromJSVal error >>= \ error' -> callback error'))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/ProcessingInstruction.hs b/src/Language/Javascript/JSaddle/DOM/Generated/ProcessingInstruction.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/ProcessingInstruction.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.ProcessingInstruction
+       (getTarget, getSheet, ProcessingInstruction,
+        castToProcessingInstruction, gTypeProcessingInstruction)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ProcessingInstruction.target Mozilla ProcessingInstruction.target documentation> 
+getTarget ::
+          (MonadDOM m, FromJSString result) =>
+            ProcessingInstruction -> m (Maybe result)
+getTarget self
+  = liftDOM ((self ^. js "target") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ProcessingInstruction.sheet Mozilla ProcessingInstruction.sheet documentation> 
+getSheet ::
+         (MonadDOM m) => ProcessingInstruction -> m (Maybe StyleSheet)
+getSheet self = liftDOM ((self ^. js "sheet") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/ProgressEvent.hs b/src/Language/Javascript/JSaddle/DOM/Generated/ProgressEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/ProgressEvent.hs
@@ -0,0 +1,38 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.ProgressEvent
+       (getLengthComputable, getLoaded, getTotal, ProgressEvent,
+        castToProgressEvent, gTypeProgressEvent, IsProgressEvent,
+        toProgressEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ProgressEvent.lengthComputable Mozilla ProgressEvent.lengthComputable documentation> 
+getLengthComputable ::
+                    (MonadDOM m, IsProgressEvent self) => self -> m Bool
+getLengthComputable self
+  = liftDOM
+      (((toProgressEvent self) ^. js "lengthComputable") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ProgressEvent.loaded Mozilla ProgressEvent.loaded documentation> 
+getLoaded :: (MonadDOM m, IsProgressEvent self) => self -> m Word64
+getLoaded self
+  = liftDOM
+      (round <$>
+         (((toProgressEvent self) ^. js "loaded") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ProgressEvent.total Mozilla ProgressEvent.total documentation> 
+getTotal :: (MonadDOM m, IsProgressEvent self) => self -> m Word64
+getTotal self
+  = liftDOM
+      (round <$>
+         (((toProgressEvent self) ^. js "total") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/QuickTimePluginReplacement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/QuickTimePluginReplacement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/QuickTimePluginReplacement.hs
@@ -0,0 +1,46 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.QuickTimePluginReplacement
+       (postEvent, getMovieSize, getTimedMetaData, getAccessLog,
+        getErrorLog, QuickTimePluginReplacement,
+        castToQuickTimePluginReplacement, gTypeQuickTimePluginReplacement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/QuickTimePluginReplacement.postEvent Mozilla QuickTimePluginReplacement.postEvent documentation> 
+postEvent ::
+          (MonadDOM m, ToJSString eventName) =>
+            QuickTimePluginReplacement -> eventName -> m ()
+postEvent self eventName
+  = liftDOM (void (self ^. jsf "postEvent" [toJSVal eventName]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/QuickTimePluginReplacement.movieSize Mozilla QuickTimePluginReplacement.movieSize documentation> 
+getMovieSize ::
+             (MonadDOM m) => QuickTimePluginReplacement -> m Word64
+getMovieSize self
+  = liftDOM (round <$> ((self ^. js "movieSize") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/QuickTimePluginReplacement.timedMetaData Mozilla QuickTimePluginReplacement.timedMetaData documentation> 
+getTimedMetaData ::
+                 (MonadDOM m) => QuickTimePluginReplacement -> m JSVal
+getTimedMetaData self
+  = liftDOM ((self ^. js "timedMetaData") >>= toJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/QuickTimePluginReplacement.accessLog Mozilla QuickTimePluginReplacement.accessLog documentation> 
+getAccessLog ::
+             (MonadDOM m) => QuickTimePluginReplacement -> m JSVal
+getAccessLog self = liftDOM ((self ^. js "accessLog") >>= toJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/QuickTimePluginReplacement.errorLog Mozilla QuickTimePluginReplacement.errorLog documentation> 
+getErrorLog ::
+            (MonadDOM m) => QuickTimePluginReplacement -> m JSVal
+getErrorLog self = liftDOM ((self ^. js "errorLog") >>= toJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/RGBColor.hs b/src/Language/Javascript/JSaddle/DOM/Generated/RGBColor.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/RGBColor.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.RGBColor
+       (getRed, getGreen, getBlue, RGBColor, castToRGBColor,
+        gTypeRGBColor)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RGBColor.red Mozilla RGBColor.red documentation> 
+getRed :: (MonadDOM m) => RGBColor -> m (Maybe CSSPrimitiveValue)
+getRed self = liftDOM ((self ^. js "red") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RGBColor.green Mozilla RGBColor.green documentation> 
+getGreen :: (MonadDOM m) => RGBColor -> m (Maybe CSSPrimitiveValue)
+getGreen self = liftDOM ((self ^. js "green") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RGBColor.blue Mozilla RGBColor.blue documentation> 
+getBlue :: (MonadDOM m) => RGBColor -> m (Maybe CSSPrimitiveValue)
+getBlue self = liftDOM ((self ^. js "blue") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/RTCConfiguration.hs b/src/Language/Javascript/JSaddle/DOM/Generated/RTCConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/RTCConfiguration.hs
@@ -0,0 +1,34 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.RTCConfiguration
+       (getIceServers, getIceTransports, getRequestIdentity,
+        RTCConfiguration, castToRTCConfiguration, gTypeRTCConfiguration)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCConfiguration.iceServers Mozilla RTCConfiguration.iceServers documentation> 
+getIceServers ::
+              (MonadDOM m) => RTCConfiguration -> m [Maybe RTCIceServer]
+getIceServers self
+  = liftDOM ((self ^. js "iceServers") >>= fromJSArray)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCConfiguration.iceTransports Mozilla RTCConfiguration.iceTransports documentation> 
+getIceTransports ::
+                 (MonadDOM m) => RTCConfiguration -> m RTCIceTransportsEnum
+getIceTransports self
+  = liftDOM ((self ^. js "iceTransports") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCConfiguration.requestIdentity Mozilla RTCConfiguration.requestIdentity documentation> 
+getRequestIdentity ::
+                   (MonadDOM m) => RTCConfiguration -> m RTCIdentityOptionEnum
+getRequestIdentity self
+  = liftDOM ((self ^. js "requestIdentity") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/RTCDTMFSender.hs b/src/Language/Javascript/JSaddle/DOM/Generated/RTCDTMFSender.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/RTCDTMFSender.hs
@@ -0,0 +1,57 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.RTCDTMFSender
+       (insertDTMF, getCanInsertDTMF, getTrack, getToneBuffer,
+        getDuration, getInterToneGap, toneChange, RTCDTMFSender,
+        castToRTCDTMFSender, gTypeRTCDTMFSender)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDTMFSender.insertDTMF Mozilla RTCDTMFSender.insertDTMF documentation> 
+insertDTMF ::
+           (MonadDOM m, ToJSString tones) =>
+             RTCDTMFSender -> tones -> Int -> Int -> m ()
+insertDTMF self tones duration interToneGap
+  = liftDOM
+      (void
+         (self ^. jsf "insertDTMF"
+            [toJSVal tones, toJSVal duration, toJSVal interToneGap]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDTMFSender.canInsertDTMF Mozilla RTCDTMFSender.canInsertDTMF documentation> 
+getCanInsertDTMF :: (MonadDOM m) => RTCDTMFSender -> m Bool
+getCanInsertDTMF self
+  = liftDOM ((self ^. js "canInsertDTMF") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDTMFSender.track Mozilla RTCDTMFSender.track documentation> 
+getTrack ::
+         (MonadDOM m) => RTCDTMFSender -> m (Maybe MediaStreamTrack)
+getTrack self = liftDOM ((self ^. js "track") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDTMFSender.toneBuffer Mozilla RTCDTMFSender.toneBuffer documentation> 
+getToneBuffer ::
+              (MonadDOM m, FromJSString result) => RTCDTMFSender -> m result
+getToneBuffer self
+  = liftDOM ((self ^. js "toneBuffer") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDTMFSender.duration Mozilla RTCDTMFSender.duration documentation> 
+getDuration :: (MonadDOM m) => RTCDTMFSender -> m Int
+getDuration self
+  = liftDOM (round <$> ((self ^. js "duration") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDTMFSender.interToneGap Mozilla RTCDTMFSender.interToneGap documentation> 
+getInterToneGap :: (MonadDOM m) => RTCDTMFSender -> m Int
+getInterToneGap self
+  = liftDOM (round <$> ((self ^. js "interToneGap") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDTMFSender.ontonechange Mozilla RTCDTMFSender.ontonechange documentation> 
+toneChange :: EventName RTCDTMFSender Event
+toneChange = unsafeEventName (toJSString "tonechange")
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/RTCDTMFToneChangeEvent.hs b/src/Language/Javascript/JSaddle/DOM/Generated/RTCDTMFToneChangeEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/RTCDTMFToneChangeEvent.hs
@@ -0,0 +1,22 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.RTCDTMFToneChangeEvent
+       (getTone, RTCDTMFToneChangeEvent, castToRTCDTMFToneChangeEvent,
+        gTypeRTCDTMFToneChangeEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDTMFToneChangeEvent.tone Mozilla RTCDTMFToneChangeEvent.tone documentation> 
+getTone ::
+        (MonadDOM m, FromJSString result) =>
+          RTCDTMFToneChangeEvent -> m result
+getTone self = liftDOM ((self ^. js "tone") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/RTCDataChannel.hs b/src/Language/Javascript/JSaddle/DOM/Generated/RTCDataChannel.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/RTCDataChannel.hs
@@ -0,0 +1,127 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.RTCDataChannel
+       (send, sendView, sendBlob, sendString, close, getLabel, getOrdered,
+        getMaxRetransmitTime, getMaxRetransmits, getProtocol,
+        getNegotiated, getId, getReadyState, getBufferedAmount,
+        setBinaryType, getBinaryType, open, error, closeEvent, message,
+        RTCDataChannel, castToRTCDataChannel, gTypeRTCDataChannel)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.send Mozilla RTCDataChannel.send documentation> 
+send ::
+     (MonadDOM m, IsArrayBuffer data') =>
+       RTCDataChannel -> Maybe data' -> m ()
+send self data'
+  = liftDOM (void (self ^. jsf "send" [toJSVal data']))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.send Mozilla RTCDataChannel.send documentation> 
+sendView ::
+         (MonadDOM m, IsArrayBufferView data') =>
+           RTCDataChannel -> Maybe data' -> m ()
+sendView self data'
+  = liftDOM (void (self ^. jsf "send" [toJSVal data']))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.send Mozilla RTCDataChannel.send documentation> 
+sendBlob ::
+         (MonadDOM m, IsBlob data') => RTCDataChannel -> Maybe data' -> m ()
+sendBlob self data'
+  = liftDOM (void (self ^. jsf "send" [toJSVal data']))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.send Mozilla RTCDataChannel.send documentation> 
+sendString ::
+           (MonadDOM m, ToJSString data') => RTCDataChannel -> data' -> m ()
+sendString self data'
+  = liftDOM (void (self ^. jsf "send" [toJSVal data']))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.close Mozilla RTCDataChannel.close documentation> 
+close :: (MonadDOM m) => RTCDataChannel -> m ()
+close self = liftDOM (void (self ^. js "close"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.label Mozilla RTCDataChannel.label documentation> 
+getLabel ::
+         (MonadDOM m, FromJSString result) => RTCDataChannel -> m result
+getLabel self
+  = liftDOM ((self ^. js "label") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.ordered Mozilla RTCDataChannel.ordered documentation> 
+getOrdered :: (MonadDOM m) => RTCDataChannel -> m Bool
+getOrdered self = liftDOM ((self ^. js "ordered") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.maxRetransmitTime Mozilla RTCDataChannel.maxRetransmitTime documentation> 
+getMaxRetransmitTime :: (MonadDOM m) => RTCDataChannel -> m Word
+getMaxRetransmitTime self
+  = liftDOM
+      (round <$> ((self ^. js "maxRetransmitTime") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.maxRetransmits Mozilla RTCDataChannel.maxRetransmits documentation> 
+getMaxRetransmits :: (MonadDOM m) => RTCDataChannel -> m Word
+getMaxRetransmits self
+  = liftDOM
+      (round <$> ((self ^. js "maxRetransmits") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.protocol Mozilla RTCDataChannel.protocol documentation> 
+getProtocol ::
+            (MonadDOM m, FromJSString result) => RTCDataChannel -> m result
+getProtocol self
+  = liftDOM ((self ^. js "protocol") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.negotiated Mozilla RTCDataChannel.negotiated documentation> 
+getNegotiated :: (MonadDOM m) => RTCDataChannel -> m Bool
+getNegotiated self
+  = liftDOM ((self ^. js "negotiated") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.id Mozilla RTCDataChannel.id documentation> 
+getId :: (MonadDOM m) => RTCDataChannel -> m Word
+getId self
+  = liftDOM (round <$> ((self ^. js "id") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.readyState Mozilla RTCDataChannel.readyState documentation> 
+getReadyState ::
+              (MonadDOM m, FromJSString result) => RTCDataChannel -> m result
+getReadyState self
+  = liftDOM ((self ^. js "readyState") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.bufferedAmount Mozilla RTCDataChannel.bufferedAmount documentation> 
+getBufferedAmount :: (MonadDOM m) => RTCDataChannel -> m Word
+getBufferedAmount self
+  = liftDOM
+      (round <$> ((self ^. js "bufferedAmount") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.binaryType Mozilla RTCDataChannel.binaryType documentation> 
+setBinaryType ::
+              (MonadDOM m, ToJSString val) => RTCDataChannel -> val -> m ()
+setBinaryType self val
+  = liftDOM (self ^. jss "binaryType" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.binaryType Mozilla RTCDataChannel.binaryType documentation> 
+getBinaryType ::
+              (MonadDOM m, FromJSString result) => RTCDataChannel -> m result
+getBinaryType self
+  = liftDOM ((self ^. js "binaryType") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.onopen Mozilla RTCDataChannel.onopen documentation> 
+open :: EventName RTCDataChannel Event
+open = unsafeEventName (toJSString "open")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.onerror Mozilla RTCDataChannel.onerror documentation> 
+error :: EventName RTCDataChannel UIEvent
+error = unsafeEventName (toJSString "error")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.onclose Mozilla RTCDataChannel.onclose documentation> 
+closeEvent :: EventName RTCDataChannel Event
+closeEvent = unsafeEventName (toJSString "close")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.onmessage Mozilla RTCDataChannel.onmessage documentation> 
+message :: EventName RTCDataChannel MessageEvent
+message = unsafeEventName (toJSString "message")
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/RTCDataChannelEvent.hs b/src/Language/Javascript/JSaddle/DOM/Generated/RTCDataChannelEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/RTCDataChannelEvent.hs
@@ -0,0 +1,21 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.RTCDataChannelEvent
+       (getChannel, RTCDataChannelEvent, castToRTCDataChannelEvent,
+        gTypeRTCDataChannelEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannelEvent.channel Mozilla RTCDataChannelEvent.channel documentation> 
+getChannel ::
+           (MonadDOM m) => RTCDataChannelEvent -> m (Maybe RTCDataChannel)
+getChannel self = liftDOM ((self ^. js "channel") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/RTCIceCandidate.hs b/src/Language/Javascript/JSaddle/DOM/Generated/RTCIceCandidate.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/RTCIceCandidate.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.RTCIceCandidate
+       (newRTCIceCandidate, getCandidate, getSdpMid, getSdpMLineIndex,
+        RTCIceCandidate, castToRTCIceCandidate, gTypeRTCIceCandidate)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidate Mozilla RTCIceCandidate documentation> 
+newRTCIceCandidate ::
+                   (MonadDOM m, IsDictionary dictionary) =>
+                     Maybe dictionary -> m RTCIceCandidate
+newRTCIceCandidate dictionary
+  = liftDOM
+      (RTCIceCandidate <$>
+         new (jsg "RTCIceCandidate") [toJSVal dictionary])
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidate.candidate Mozilla RTCIceCandidate.candidate documentation> 
+getCandidate ::
+             (MonadDOM m, FromJSString result) => RTCIceCandidate -> m result
+getCandidate self
+  = liftDOM ((self ^. js "candidate") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidate.sdpMid Mozilla RTCIceCandidate.sdpMid documentation> 
+getSdpMid ::
+          (MonadDOM m, FromJSString result) => RTCIceCandidate -> m result
+getSdpMid self
+  = liftDOM ((self ^. js "sdpMid") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidate.sdpMLineIndex Mozilla RTCIceCandidate.sdpMLineIndex documentation> 
+getSdpMLineIndex :: (MonadDOM m) => RTCIceCandidate -> m Word
+getSdpMLineIndex self
+  = liftDOM
+      (round <$> ((self ^. js "sdpMLineIndex") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/RTCIceCandidateEvent.hs b/src/Language/Javascript/JSaddle/DOM/Generated/RTCIceCandidateEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/RTCIceCandidateEvent.hs
@@ -0,0 +1,22 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.RTCIceCandidateEvent
+       (getCandidate, RTCIceCandidateEvent, castToRTCIceCandidateEvent,
+        gTypeRTCIceCandidateEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidateEvent.candidate Mozilla RTCIceCandidateEvent.candidate documentation> 
+getCandidate ::
+             (MonadDOM m) => RTCIceCandidateEvent -> m (Maybe RTCIceCandidate)
+getCandidate self
+  = liftDOM ((self ^. js "candidate") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/RTCIceServer.hs b/src/Language/Javascript/JSaddle/DOM/Generated/RTCIceServer.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/RTCIceServer.hs
@@ -0,0 +1,34 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.RTCIceServer
+       (getUrls, getUsername, getCredential, RTCIceServer,
+        castToRTCIceServer, gTypeRTCIceServer)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceServer.urls Mozilla RTCIceServer.urls documentation> 
+getUrls ::
+        (MonadDOM m, FromJSString result) => RTCIceServer -> m [result]
+getUrls self
+  = liftDOM ((self ^. js "urls") >>= fromJSArrayUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceServer.username Mozilla RTCIceServer.username documentation> 
+getUsername ::
+            (MonadDOM m, FromJSString result) => RTCIceServer -> m result
+getUsername self
+  = liftDOM ((self ^. js "username") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceServer.credential Mozilla RTCIceServer.credential documentation> 
+getCredential ::
+              (MonadDOM m, FromJSString result) => RTCIceServer -> m result
+getCredential self
+  = liftDOM ((self ^. js "credential") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/RTCPeerConnection.hs b/src/Language/Javascript/JSaddle/DOM/Generated/RTCPeerConnection.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/RTCPeerConnection.hs
@@ -0,0 +1,244 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.RTCPeerConnection
+       (newRTCPeerConnection, createOffer, createAnswer,
+        setLocalDescription, setRemoteDescription, updateIce,
+        addIceCandidate, getLocalStreams, getRemoteStreams, getStreamById,
+        getConfiguration, addStream, removeStream, getStats,
+        createDataChannel, createDTMFSender, close, getLocalDescription,
+        getRemoteDescription, getSignalingState, getIceGatheringState,
+        getIceConnectionState, negotiationNeeded, iceCandidate,
+        signalingStateChange, addStreamEvent, removeStreamEvent,
+        iceConnectionStateChange, dataChannel, RTCPeerConnection,
+        castToRTCPeerConnection, gTypeRTCPeerConnection)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection Mozilla webkitRTCPeerConnection documentation> 
+newRTCPeerConnection ::
+                     (MonadDOM m, IsDictionary rtcConfiguration) =>
+                       Maybe rtcConfiguration -> m RTCPeerConnection
+newRTCPeerConnection rtcConfiguration
+  = liftDOM
+      (RTCPeerConnection <$>
+         new (jsg "RTCPeerConnection") [toJSVal rtcConfiguration])
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.createOffer Mozilla webkitRTCPeerConnection.createOffer documentation> 
+createOffer ::
+            (MonadDOM m, IsDictionary offerOptions) =>
+              RTCPeerConnection ->
+                Maybe RTCSessionDescriptionCallback ->
+                  Maybe RTCPeerConnectionErrorCallback -> Maybe offerOptions -> m ()
+createOffer self successCallback failureCallback offerOptions
+  = liftDOM
+      (void
+         (self ^. jsf "createOffer"
+            [toJSVal successCallback, toJSVal failureCallback,
+             toJSVal offerOptions]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.createAnswer Mozilla webkitRTCPeerConnection.createAnswer documentation> 
+createAnswer ::
+             (MonadDOM m, IsDictionary answerOptions) =>
+               RTCPeerConnection ->
+                 Maybe RTCSessionDescriptionCallback ->
+                   Maybe RTCPeerConnectionErrorCallback -> Maybe answerOptions -> m ()
+createAnswer self successCallback failureCallback answerOptions
+  = liftDOM
+      (void
+         (self ^. jsf "createAnswer"
+            [toJSVal successCallback, toJSVal failureCallback,
+             toJSVal answerOptions]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.setLocalDescription Mozilla webkitRTCPeerConnection.setLocalDescription documentation> 
+setLocalDescription ::
+                    (MonadDOM m) =>
+                      RTCPeerConnection ->
+                        Maybe RTCSessionDescription ->
+                          Maybe VoidCallback -> Maybe RTCPeerConnectionErrorCallback -> m ()
+setLocalDescription self description successCallback
+  failureCallback
+  = liftDOM
+      (void
+         (self ^. jsf "setLocalDescription"
+            [toJSVal description, toJSVal successCallback,
+             toJSVal failureCallback]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.setRemoteDescription Mozilla webkitRTCPeerConnection.setRemoteDescription documentation> 
+setRemoteDescription ::
+                     (MonadDOM m) =>
+                       RTCPeerConnection ->
+                         Maybe RTCSessionDescription ->
+                           Maybe VoidCallback -> Maybe RTCPeerConnectionErrorCallback -> m ()
+setRemoteDescription self description successCallback
+  failureCallback
+  = liftDOM
+      (void
+         (self ^. jsf "setRemoteDescription"
+            [toJSVal description, toJSVal successCallback,
+             toJSVal failureCallback]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.updateIce Mozilla webkitRTCPeerConnection.updateIce documentation> 
+updateIce ::
+          (MonadDOM m, IsDictionary configuration) =>
+            RTCPeerConnection -> Maybe configuration -> m ()
+updateIce self configuration
+  = liftDOM (void (self ^. jsf "updateIce" [toJSVal configuration]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.addIceCandidate Mozilla webkitRTCPeerConnection.addIceCandidate documentation> 
+addIceCandidate ::
+                (MonadDOM m) =>
+                  RTCPeerConnection ->
+                    Maybe RTCIceCandidate ->
+                      Maybe VoidCallback -> Maybe RTCPeerConnectionErrorCallback -> m ()
+addIceCandidate self candidate successCallback failureCallback
+  = liftDOM
+      (void
+         (self ^. jsf "addIceCandidate"
+            [toJSVal candidate, toJSVal successCallback,
+             toJSVal failureCallback]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.getLocalStreams Mozilla webkitRTCPeerConnection.getLocalStreams documentation> 
+getLocalStreams ::
+                (MonadDOM m) => RTCPeerConnection -> m [Maybe MediaStream]
+getLocalStreams self
+  = liftDOM ((self ^. js "getLocalStreams") >>= fromJSArray)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.getRemoteStreams Mozilla webkitRTCPeerConnection.getRemoteStreams documentation> 
+getRemoteStreams ::
+                 (MonadDOM m) => RTCPeerConnection -> m [Maybe MediaStream]
+getRemoteStreams self
+  = liftDOM ((self ^. js "getRemoteStreams") >>= fromJSArray)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.getStreamById Mozilla webkitRTCPeerConnection.getStreamById documentation> 
+getStreamById ::
+              (MonadDOM m, ToJSString streamId) =>
+                RTCPeerConnection -> streamId -> m (Maybe MediaStream)
+getStreamById self streamId
+  = liftDOM
+      ((self ^. jsf "getStreamById" [toJSVal streamId]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.getConfiguration Mozilla webkitRTCPeerConnection.getConfiguration documentation> 
+getConfiguration ::
+                 (MonadDOM m) => RTCPeerConnection -> m (Maybe RTCConfiguration)
+getConfiguration self
+  = liftDOM ((self ^. js "getConfiguration") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.addStream Mozilla webkitRTCPeerConnection.addStream documentation> 
+addStream ::
+          (MonadDOM m) => RTCPeerConnection -> Maybe MediaStream -> m ()
+addStream self stream
+  = liftDOM (void (self ^. jsf "addStream" [toJSVal stream]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.removeStream Mozilla webkitRTCPeerConnection.removeStream documentation> 
+removeStream ::
+             (MonadDOM m) => RTCPeerConnection -> Maybe MediaStream -> m ()
+removeStream self stream
+  = liftDOM (void (self ^. jsf "removeStream" [toJSVal stream]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.getStats Mozilla webkitRTCPeerConnection.getStats documentation> 
+getStats ::
+         (MonadDOM m, IsMediaStreamTrack selector) =>
+           RTCPeerConnection ->
+             Maybe RTCStatsCallback ->
+               Maybe RTCPeerConnectionErrorCallback -> Maybe selector -> m ()
+getStats self successCallback failureCallback selector
+  = liftDOM
+      (void
+         (self ^. jsf "getStats"
+            [toJSVal successCallback, toJSVal failureCallback,
+             toJSVal selector]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.createDataChannel Mozilla webkitRTCPeerConnection.createDataChannel documentation> 
+createDataChannel ::
+                  (MonadDOM m, ToJSString label, IsDictionary options) =>
+                    RTCPeerConnection ->
+                      Maybe label -> Maybe options -> m (Maybe RTCDataChannel)
+createDataChannel self label options
+  = liftDOM
+      ((self ^. jsf "createDataChannel" [toJSVal label, toJSVal options])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.createDTMFSender Mozilla webkitRTCPeerConnection.createDTMFSender documentation> 
+createDTMFSender ::
+                 (MonadDOM m, IsMediaStreamTrack track) =>
+                   RTCPeerConnection -> Maybe track -> m (Maybe RTCDTMFSender)
+createDTMFSender self track
+  = liftDOM
+      ((self ^. jsf "createDTMFSender" [toJSVal track]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.close Mozilla webkitRTCPeerConnection.close documentation> 
+close :: (MonadDOM m) => RTCPeerConnection -> m ()
+close self = liftDOM (void (self ^. js "close"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.localDescription Mozilla webkitRTCPeerConnection.localDescription documentation> 
+getLocalDescription ::
+                    (MonadDOM m) =>
+                      RTCPeerConnection -> m (Maybe RTCSessionDescription)
+getLocalDescription self
+  = liftDOM ((self ^. js "localDescription") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.remoteDescription Mozilla webkitRTCPeerConnection.remoteDescription documentation> 
+getRemoteDescription ::
+                     (MonadDOM m) =>
+                       RTCPeerConnection -> m (Maybe RTCSessionDescription)
+getRemoteDescription self
+  = liftDOM ((self ^. js "remoteDescription") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.signalingState Mozilla webkitRTCPeerConnection.signalingState documentation> 
+getSignalingState ::
+                  (MonadDOM m, FromJSString result) => RTCPeerConnection -> m result
+getSignalingState self
+  = liftDOM ((self ^. js "signalingState") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.iceGatheringState Mozilla webkitRTCPeerConnection.iceGatheringState documentation> 
+getIceGatheringState ::
+                     (MonadDOM m, FromJSString result) => RTCPeerConnection -> m result
+getIceGatheringState self
+  = liftDOM ((self ^. js "iceGatheringState") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.iceConnectionState Mozilla webkitRTCPeerConnection.iceConnectionState documentation> 
+getIceConnectionState ::
+                      (MonadDOM m, FromJSString result) => RTCPeerConnection -> m result
+getIceConnectionState self
+  = liftDOM
+      ((self ^. js "iceConnectionState") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.onnegotiationneeded Mozilla webkitRTCPeerConnection.onnegotiationneeded documentation> 
+negotiationNeeded :: EventName RTCPeerConnection Event
+negotiationNeeded
+  = unsafeEventName (toJSString "negotiationneeded")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.onicecandidate Mozilla webkitRTCPeerConnection.onicecandidate documentation> 
+iceCandidate :: EventName RTCPeerConnection RTCIceCandidateEvent
+iceCandidate = unsafeEventName (toJSString "icecandidate")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.onsignalingstatechange Mozilla webkitRTCPeerConnection.onsignalingstatechange documentation> 
+signalingStateChange :: EventName RTCPeerConnection Event
+signalingStateChange
+  = unsafeEventName (toJSString "signalingstatechange")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.onaddstream Mozilla webkitRTCPeerConnection.onaddstream documentation> 
+addStreamEvent :: EventName RTCPeerConnection Event
+addStreamEvent = unsafeEventName (toJSString "addstream")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.onremovestream Mozilla webkitRTCPeerConnection.onremovestream documentation> 
+removeStreamEvent :: EventName RTCPeerConnection Event
+removeStreamEvent = unsafeEventName (toJSString "removestream")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.oniceconnectionstatechange Mozilla webkitRTCPeerConnection.oniceconnectionstatechange documentation> 
+iceConnectionStateChange :: EventName RTCPeerConnection Event
+iceConnectionStateChange
+  = unsafeEventName (toJSString "iceconnectionstatechange")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.ondatachannel Mozilla webkitRTCPeerConnection.ondatachannel documentation> 
+dataChannel :: EventName RTCPeerConnection Event
+dataChannel = unsafeEventName (toJSString "datachannel")
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/RTCPeerConnectionErrorCallback.hs b/src/Language/Javascript/JSaddle/DOM/Generated/RTCPeerConnectionErrorCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/RTCPeerConnectionErrorCallback.hs
@@ -0,0 +1,50 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.RTCPeerConnectionErrorCallback
+       (newRTCPeerConnectionErrorCallback,
+        newRTCPeerConnectionErrorCallbackSync,
+        newRTCPeerConnectionErrorCallbackAsync,
+        RTCPeerConnectionErrorCallback)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnectionErrorCallback Mozilla RTCPeerConnectionErrorCallback documentation> 
+newRTCPeerConnectionErrorCallback ::
+                                  (MonadDOM m) =>
+                                    (Maybe DOMError -> JSM ()) -> m RTCPeerConnectionErrorCallback
+newRTCPeerConnectionErrorCallback callback
+  = liftDOM
+      (RTCPeerConnectionErrorCallback . Callback <$>
+         function ""
+           (\ _ _ [error] -> fromJSVal error >>= \ error' -> callback error'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnectionErrorCallback Mozilla RTCPeerConnectionErrorCallback documentation> 
+newRTCPeerConnectionErrorCallbackSync ::
+                                      (MonadDOM m) =>
+                                        (Maybe DOMError -> JSM ()) ->
+                                          m RTCPeerConnectionErrorCallback
+newRTCPeerConnectionErrorCallbackSync callback
+  = liftDOM
+      (RTCPeerConnectionErrorCallback . Callback <$>
+         function ""
+           (\ _ _ [error] -> fromJSVal error >>= \ error' -> callback error'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnectionErrorCallback Mozilla RTCPeerConnectionErrorCallback documentation> 
+newRTCPeerConnectionErrorCallbackAsync ::
+                                       (MonadDOM m) =>
+                                         (Maybe DOMError -> JSM ()) ->
+                                           m RTCPeerConnectionErrorCallback
+newRTCPeerConnectionErrorCallbackAsync callback
+  = liftDOM
+      (RTCPeerConnectionErrorCallback . Callback <$>
+         function ""
+           (\ _ _ [error] -> fromJSVal error >>= \ error' -> callback error'))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/RTCSessionDescription.hs b/src/Language/Javascript/JSaddle/DOM/Generated/RTCSessionDescription.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/RTCSessionDescription.hs
@@ -0,0 +1,50 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.RTCSessionDescription
+       (newRTCSessionDescription, setType, getType, setSdp, getSdp,
+        RTCSessionDescription, castToRTCSessionDescription,
+        gTypeRTCSessionDescription)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCSessionDescription Mozilla RTCSessionDescription documentation> 
+newRTCSessionDescription ::
+                         (MonadDOM m, IsDictionary dictionary) =>
+                           Maybe dictionary -> m RTCSessionDescription
+newRTCSessionDescription dictionary
+  = liftDOM
+      (RTCSessionDescription <$>
+         new (jsg "RTCSessionDescription") [toJSVal dictionary])
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCSessionDescription.type Mozilla RTCSessionDescription.type documentation> 
+setType ::
+        (MonadDOM m, ToJSString val) =>
+          RTCSessionDescription -> val -> m ()
+setType self val = liftDOM (self ^. jss "type" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCSessionDescription.type Mozilla RTCSessionDescription.type documentation> 
+getType ::
+        (MonadDOM m, FromJSString result) =>
+          RTCSessionDescription -> m result
+getType self = liftDOM ((self ^. js "type") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCSessionDescription.sdp Mozilla RTCSessionDescription.sdp documentation> 
+setSdp ::
+       (MonadDOM m, ToJSString val) =>
+         RTCSessionDescription -> val -> m ()
+setSdp self val = liftDOM (self ^. jss "sdp" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCSessionDescription.sdp Mozilla RTCSessionDescription.sdp documentation> 
+getSdp ::
+       (MonadDOM m, FromJSString result) =>
+         RTCSessionDescription -> m result
+getSdp self = liftDOM ((self ^. js "sdp") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/RTCSessionDescriptionCallback.hs b/src/Language/Javascript/JSaddle/DOM/Generated/RTCSessionDescriptionCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/RTCSessionDescriptionCallback.hs
@@ -0,0 +1,51 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.RTCSessionDescriptionCallback
+       (newRTCSessionDescriptionCallback,
+        newRTCSessionDescriptionCallbackSync,
+        newRTCSessionDescriptionCallbackAsync,
+        RTCSessionDescriptionCallback)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCSessionDescriptionCallback Mozilla RTCSessionDescriptionCallback documentation> 
+newRTCSessionDescriptionCallback ::
+                                 (MonadDOM m) =>
+                                   (Maybe RTCSessionDescription -> JSM ()) ->
+                                     m RTCSessionDescriptionCallback
+newRTCSessionDescriptionCallback callback
+  = liftDOM
+      (RTCSessionDescriptionCallback . Callback <$>
+         function ""
+           (\ _ _ [sdp] -> fromJSVal sdp >>= \ sdp' -> callback sdp'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCSessionDescriptionCallback Mozilla RTCSessionDescriptionCallback documentation> 
+newRTCSessionDescriptionCallbackSync ::
+                                     (MonadDOM m) =>
+                                       (Maybe RTCSessionDescription -> JSM ()) ->
+                                         m RTCSessionDescriptionCallback
+newRTCSessionDescriptionCallbackSync callback
+  = liftDOM
+      (RTCSessionDescriptionCallback . Callback <$>
+         function ""
+           (\ _ _ [sdp] -> fromJSVal sdp >>= \ sdp' -> callback sdp'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCSessionDescriptionCallback Mozilla RTCSessionDescriptionCallback documentation> 
+newRTCSessionDescriptionCallbackAsync ::
+                                      (MonadDOM m) =>
+                                        (Maybe RTCSessionDescription -> JSM ()) ->
+                                          m RTCSessionDescriptionCallback
+newRTCSessionDescriptionCallbackAsync callback
+  = liftDOM
+      (RTCSessionDescriptionCallback . Callback <$>
+         function ""
+           (\ _ _ [sdp] -> fromJSVal sdp >>= \ sdp' -> callback sdp'))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/RTCStatsCallback.hs b/src/Language/Javascript/JSaddle/DOM/Generated/RTCStatsCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/RTCStatsCallback.hs
@@ -0,0 +1,49 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.RTCStatsCallback
+       (newRTCStatsCallback, newRTCStatsCallbackSync,
+        newRTCStatsCallbackAsync, RTCStatsCallback)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCStatsCallback Mozilla RTCStatsCallback documentation> 
+newRTCStatsCallback ::
+                    (MonadDOM m) =>
+                      (Maybe RTCStatsResponse -> JSM ()) -> m RTCStatsCallback
+newRTCStatsCallback callback
+  = liftDOM
+      (RTCStatsCallback . Callback <$>
+         function ""
+           (\ _ _ [response] ->
+              fromJSVal response >>= \ response' -> callback response'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCStatsCallback Mozilla RTCStatsCallback documentation> 
+newRTCStatsCallbackSync ::
+                        (MonadDOM m) =>
+                          (Maybe RTCStatsResponse -> JSM ()) -> m RTCStatsCallback
+newRTCStatsCallbackSync callback
+  = liftDOM
+      (RTCStatsCallback . Callback <$>
+         function ""
+           (\ _ _ [response] ->
+              fromJSVal response >>= \ response' -> callback response'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCStatsCallback Mozilla RTCStatsCallback documentation> 
+newRTCStatsCallbackAsync ::
+                         (MonadDOM m) =>
+                           (Maybe RTCStatsResponse -> JSM ()) -> m RTCStatsCallback
+newRTCStatsCallbackAsync callback
+  = liftDOM
+      (RTCStatsCallback . Callback <$>
+         function ""
+           (\ _ _ [response] ->
+              fromJSVal response >>= \ response' -> callback response'))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/RTCStatsReport.hs b/src/Language/Javascript/JSaddle/DOM/Generated/RTCStatsReport.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/RTCStatsReport.hs
@@ -0,0 +1,55 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.RTCStatsReport
+       (stat, names, getTimestamp, getId, getType, getLocal, getRemote,
+        RTCStatsReport, castToRTCStatsReport, gTypeRTCStatsReport)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCStatsReport.stat Mozilla RTCStatsReport.stat documentation> 
+stat ::
+     (MonadDOM m, ToJSString name, FromJSString result) =>
+       RTCStatsReport -> name -> m result
+stat self name
+  = liftDOM
+      ((self ^. jsf "stat" [toJSVal name]) >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCStatsReport.names Mozilla RTCStatsReport.names documentation> 
+names ::
+      (MonadDOM m, FromJSString result) => RTCStatsReport -> m [result]
+names self
+  = liftDOM ((self ^. js "names") >>= fromJSArrayUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCStatsReport.timestamp Mozilla RTCStatsReport.timestamp documentation> 
+getTimestamp :: (MonadDOM m) => RTCStatsReport -> m (Maybe Date)
+getTimestamp self
+  = liftDOM ((self ^. js "timestamp") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCStatsReport.id Mozilla RTCStatsReport.id documentation> 
+getId ::
+      (MonadDOM m, FromJSString result) => RTCStatsReport -> m result
+getId self = liftDOM ((self ^. js "id") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCStatsReport.type Mozilla RTCStatsReport.type documentation> 
+getType ::
+        (MonadDOM m, FromJSString result) => RTCStatsReport -> m result
+getType self = liftDOM ((self ^. js "type") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCStatsReport.local Mozilla RTCStatsReport.local documentation> 
+getLocal ::
+         (MonadDOM m) => RTCStatsReport -> m (Maybe RTCStatsReport)
+getLocal self = liftDOM ((self ^. js "local") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCStatsReport.remote Mozilla RTCStatsReport.remote documentation> 
+getRemote ::
+          (MonadDOM m) => RTCStatsReport -> m (Maybe RTCStatsReport)
+getRemote self = liftDOM ((self ^. js "remote") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/RTCStatsResponse.hs b/src/Language/Javascript/JSaddle/DOM/Generated/RTCStatsResponse.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/RTCStatsResponse.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.RTCStatsResponse
+       (result, namedItem, RTCStatsResponse, castToRTCStatsResponse,
+        gTypeRTCStatsResponse)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCStatsResponse.result Mozilla RTCStatsResponse.result documentation> 
+result ::
+       (MonadDOM m) => RTCStatsResponse -> m [Maybe RTCStatsReport]
+result self = liftDOM ((self ^. js "result") >>= fromJSArray)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCStatsResponse.namedItem Mozilla RTCStatsResponse.namedItem documentation> 
+namedItem ::
+          (MonadDOM m, ToJSString name) =>
+            RTCStatsResponse -> name -> m (Maybe RTCStatsReport)
+namedItem self name
+  = liftDOM ((self ^. jsf "namedItem" [toJSVal name]) >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/RadioNodeList.hs b/src/Language/Javascript/JSaddle/DOM/Generated/RadioNodeList.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/RadioNodeList.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.RadioNodeList
+       (_get, setValue, getValue, RadioNodeList, castToRadioNodeList,
+        gTypeRadioNodeList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RadioNodeList._get Mozilla RadioNodeList._get documentation> 
+_get :: (MonadDOM m) => RadioNodeList -> Word -> m (Maybe Node)
+_get self index
+  = liftDOM ((self ^. jsf "_get" [toJSVal index]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RadioNodeList.value Mozilla RadioNodeList.value documentation> 
+setValue ::
+         (MonadDOM m, ToJSString val) => RadioNodeList -> val -> m ()
+setValue self val = liftDOM (self ^. jss "value" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RadioNodeList.value Mozilla RadioNodeList.value documentation> 
+getValue ::
+         (MonadDOM m, FromJSString result) => RadioNodeList -> m result
+getValue self
+  = liftDOM ((self ^. js "value") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/Range.hs b/src/Language/Javascript/JSaddle/DOM/Generated/Range.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/Range.hs
@@ -0,0 +1,239 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.Range
+       (newRange, setStart, setEnd, setStartBefore, setStartAfter,
+        setEndBefore, setEndAfter, collapse, selectNode,
+        selectNodeContents, compareBoundaryPoints, deleteContents,
+        extractContents, cloneContents, insertNode, surroundContents,
+        cloneRange, toString, detach, getClientRects,
+        getBoundingClientRect, createContextualFragment, intersectsNode,
+        compareNode, comparePoint, isPointInRange, expand,
+        pattern START_TO_START, pattern START_TO_END, pattern END_TO_END,
+        pattern END_TO_START, pattern NODE_BEFORE, pattern NODE_AFTER,
+        pattern NODE_BEFORE_AND_AFTER, pattern NODE_INSIDE,
+        getStartContainer, getStartOffset, getEndContainer, getEndOffset,
+        getCollapsed, getCommonAncestorContainer, Range, castToRange,
+        gTypeRange)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range Mozilla Range documentation> 
+newRange :: (MonadDOM m) => m Range
+newRange = liftDOM (Range <$> new (jsg "Range") ())
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.setStart Mozilla Range.setStart documentation> 
+setStart ::
+         (MonadDOM m, IsNode refNode) =>
+           Range -> Maybe refNode -> Int -> m ()
+setStart self refNode offset
+  = liftDOM
+      (void (self ^. jsf "setStart" [toJSVal refNode, toJSVal offset]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.setEnd Mozilla Range.setEnd documentation> 
+setEnd ::
+       (MonadDOM m, IsNode refNode) =>
+         Range -> Maybe refNode -> Int -> m ()
+setEnd self refNode offset
+  = liftDOM
+      (void (self ^. jsf "setEnd" [toJSVal refNode, toJSVal offset]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.setStartBefore Mozilla Range.setStartBefore documentation> 
+setStartBefore ::
+               (MonadDOM m, IsNode refNode) => Range -> Maybe refNode -> m ()
+setStartBefore self refNode
+  = liftDOM (void (self ^. jsf "setStartBefore" [toJSVal refNode]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.setStartAfter Mozilla Range.setStartAfter documentation> 
+setStartAfter ::
+              (MonadDOM m, IsNode refNode) => Range -> Maybe refNode -> m ()
+setStartAfter self refNode
+  = liftDOM (void (self ^. jsf "setStartAfter" [toJSVal refNode]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.setEndBefore Mozilla Range.setEndBefore documentation> 
+setEndBefore ::
+             (MonadDOM m, IsNode refNode) => Range -> Maybe refNode -> m ()
+setEndBefore self refNode
+  = liftDOM (void (self ^. jsf "setEndBefore" [toJSVal refNode]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.setEndAfter Mozilla Range.setEndAfter documentation> 
+setEndAfter ::
+            (MonadDOM m, IsNode refNode) => Range -> Maybe refNode -> m ()
+setEndAfter self refNode
+  = liftDOM (void (self ^. jsf "setEndAfter" [toJSVal refNode]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.collapse Mozilla Range.collapse documentation> 
+collapse :: (MonadDOM m) => Range -> Bool -> m ()
+collapse self toStart
+  = liftDOM (void (self ^. jsf "collapse" [toJSVal toStart]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.selectNode Mozilla Range.selectNode documentation> 
+selectNode ::
+           (MonadDOM m, IsNode refNode) => Range -> Maybe refNode -> m ()
+selectNode self refNode
+  = liftDOM (void (self ^. jsf "selectNode" [toJSVal refNode]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.selectNodeContents Mozilla Range.selectNodeContents documentation> 
+selectNodeContents ::
+                   (MonadDOM m, IsNode refNode) => Range -> Maybe refNode -> m ()
+selectNodeContents self refNode
+  = liftDOM
+      (void (self ^. jsf "selectNodeContents" [toJSVal refNode]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.compareBoundaryPoints Mozilla Range.compareBoundaryPoints documentation> 
+compareBoundaryPoints ::
+                      (MonadDOM m) => Range -> Word -> Maybe Range -> m Int
+compareBoundaryPoints self how sourceRange
+  = liftDOM
+      (round <$>
+         ((self ^. jsf "compareBoundaryPoints"
+             [toJSVal how, toJSVal sourceRange])
+            >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.deleteContents Mozilla Range.deleteContents documentation> 
+deleteContents :: (MonadDOM m) => Range -> m ()
+deleteContents self = liftDOM (void (self ^. js "deleteContents"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.extractContents Mozilla Range.extractContents documentation> 
+extractContents ::
+                (MonadDOM m) => Range -> m (Maybe DocumentFragment)
+extractContents self
+  = liftDOM ((self ^. js "extractContents") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.cloneContents Mozilla Range.cloneContents documentation> 
+cloneContents ::
+              (MonadDOM m) => Range -> m (Maybe DocumentFragment)
+cloneContents self
+  = liftDOM ((self ^. js "cloneContents") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.insertNode Mozilla Range.insertNode documentation> 
+insertNode ::
+           (MonadDOM m, IsNode newNode) => Range -> Maybe newNode -> m ()
+insertNode self newNode
+  = liftDOM (void (self ^. jsf "insertNode" [toJSVal newNode]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.surroundContents Mozilla Range.surroundContents documentation> 
+surroundContents ::
+                 (MonadDOM m, IsNode newParent) => Range -> Maybe newParent -> m ()
+surroundContents self newParent
+  = liftDOM
+      (void (self ^. jsf "surroundContents" [toJSVal newParent]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.cloneRange Mozilla Range.cloneRange documentation> 
+cloneRange :: (MonadDOM m) => Range -> m (Maybe Range)
+cloneRange self = liftDOM ((self ^. js "cloneRange") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.toString Mozilla Range.toString documentation> 
+toString :: (MonadDOM m, FromJSString result) => Range -> m result
+toString self
+  = liftDOM ((self ^. js "toString") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.detach Mozilla Range.detach documentation> 
+detach :: (MonadDOM m) => Range -> m ()
+detach self = liftDOM (void (self ^. js "detach"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.getClientRects Mozilla Range.getClientRects documentation> 
+getClientRects :: (MonadDOM m) => Range -> m (Maybe ClientRectList)
+getClientRects self
+  = liftDOM ((self ^. js "getClientRects") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.getBoundingClientRect Mozilla Range.getBoundingClientRect documentation> 
+getBoundingClientRect ::
+                      (MonadDOM m) => Range -> m (Maybe ClientRect)
+getBoundingClientRect self
+  = liftDOM ((self ^. js "getBoundingClientRect") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.createContextualFragment Mozilla Range.createContextualFragment documentation> 
+createContextualFragment ::
+                         (MonadDOM m, ToJSString html) =>
+                           Range -> html -> m (Maybe DocumentFragment)
+createContextualFragment self html
+  = liftDOM
+      ((self ^. jsf "createContextualFragment" [toJSVal html]) >>=
+         fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.intersectsNode Mozilla Range.intersectsNode documentation> 
+intersectsNode ::
+               (MonadDOM m, IsNode refNode) => Range -> Maybe refNode -> m Bool
+intersectsNode self refNode
+  = liftDOM
+      ((self ^. jsf "intersectsNode" [toJSVal refNode]) >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.compareNode Mozilla Range.compareNode documentation> 
+compareNode ::
+            (MonadDOM m, IsNode refNode) => Range -> Maybe refNode -> m Int
+compareNode self refNode
+  = liftDOM
+      (round <$>
+         ((self ^. jsf "compareNode" [toJSVal refNode]) >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.comparePoint Mozilla Range.comparePoint documentation> 
+comparePoint ::
+             (MonadDOM m, IsNode refNode) =>
+               Range -> Maybe refNode -> Int -> m Int
+comparePoint self refNode offset
+  = liftDOM
+      (round <$>
+         ((self ^. jsf "comparePoint" [toJSVal refNode, toJSVal offset]) >>=
+            valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.isPointInRange Mozilla Range.isPointInRange documentation> 
+isPointInRange ::
+               (MonadDOM m, IsNode refNode) =>
+                 Range -> Maybe refNode -> Int -> m Bool
+isPointInRange self refNode offset
+  = liftDOM
+      ((self ^. jsf "isPointInRange" [toJSVal refNode, toJSVal offset])
+         >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.expand Mozilla Range.expand documentation> 
+expand :: (MonadDOM m, ToJSString unit) => Range -> unit -> m ()
+expand self unit
+  = liftDOM (void (self ^. jsf "expand" [toJSVal unit]))
+pattern START_TO_START = 0
+pattern START_TO_END = 1
+pattern END_TO_END = 2
+pattern END_TO_START = 3
+pattern NODE_BEFORE = 0
+pattern NODE_AFTER = 1
+pattern NODE_BEFORE_AND_AFTER = 2
+pattern NODE_INSIDE = 3
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.startContainer Mozilla Range.startContainer documentation> 
+getStartContainer :: (MonadDOM m) => Range -> m (Maybe Node)
+getStartContainer self
+  = liftDOM ((self ^. js "startContainer") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.startOffset Mozilla Range.startOffset documentation> 
+getStartOffset :: (MonadDOM m) => Range -> m Int
+getStartOffset self
+  = liftDOM (round <$> ((self ^. js "startOffset") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.endContainer Mozilla Range.endContainer documentation> 
+getEndContainer :: (MonadDOM m) => Range -> m (Maybe Node)
+getEndContainer self
+  = liftDOM ((self ^. js "endContainer") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.endOffset Mozilla Range.endOffset documentation> 
+getEndOffset :: (MonadDOM m) => Range -> m Int
+getEndOffset self
+  = liftDOM (round <$> ((self ^. js "endOffset") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.collapsed Mozilla Range.collapsed documentation> 
+getCollapsed :: (MonadDOM m) => Range -> m Bool
+getCollapsed self
+  = liftDOM ((self ^. js "collapsed") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.commonAncestorContainer Mozilla Range.commonAncestorContainer documentation> 
+getCommonAncestorContainer ::
+                           (MonadDOM m) => Range -> m (Maybe Node)
+getCommonAncestorContainer self
+  = liftDOM ((self ^. js "commonAncestorContainer") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/ReadableStream.hs b/src/Language/Javascript/JSaddle/DOM/Generated/ReadableStream.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/ReadableStream.hs
@@ -0,0 +1,67 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.ReadableStream
+       (newReadableStream, read, cancel, pipeTo, pipeThrough, getState,
+        getClosed, getReady, ReadableStream, castToReadableStream,
+        gTypeReadableStream)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream Mozilla ReadableStream documentation> 
+newReadableStream :: (MonadDOM m) => JSVal -> m ReadableStream
+newReadableStream properties
+  = liftDOM
+      (ReadableStream <$>
+         new (jsg "ReadableStream") [toJSVal properties])
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream.read Mozilla ReadableStream.read documentation> 
+read :: (MonadDOM m) => ReadableStream -> m (Maybe GObject)
+read self = liftDOM ((self ^. js "read") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream.cancel Mozilla ReadableStream.cancel documentation> 
+cancel ::
+       (MonadDOM m, ToJSString reason) =>
+         ReadableStream -> reason -> m (Maybe Promise)
+cancel self reason
+  = liftDOM ((self ^. jsf "cancel" [toJSVal reason]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream.pipeTo Mozilla ReadableStream.pipeTo documentation> 
+pipeTo ::
+       (MonadDOM m) =>
+         ReadableStream -> JSVal -> JSVal -> m (Maybe Promise)
+pipeTo self streams options
+  = liftDOM
+      ((self ^. jsf "pipeTo" [toJSVal streams, toJSVal options]) >>=
+         fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream.pipeThrough Mozilla ReadableStream.pipeThrough documentation> 
+pipeThrough ::
+            (MonadDOM m) =>
+              ReadableStream -> JSVal -> JSVal -> m (Maybe GObject)
+pipeThrough self dest options
+  = liftDOM
+      ((self ^. jsf "pipeThrough" [toJSVal dest, toJSVal options]) >>=
+         fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream.state Mozilla ReadableStream.state documentation> 
+getState ::
+         (MonadDOM m) => ReadableStream -> m ReadableStreamStateType
+getState self
+  = liftDOM ((self ^. js "state") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream.closed Mozilla ReadableStream.closed documentation> 
+getClosed :: (MonadDOM m) => ReadableStream -> m (Maybe Promise)
+getClosed self = liftDOM ((self ^. js "closed") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream.ready Mozilla ReadableStream.ready documentation> 
+getReady :: (MonadDOM m) => ReadableStream -> m (Maybe Promise)
+getReady self = liftDOM ((self ^. js "ready") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/Rect.hs b/src/Language/Javascript/JSaddle/DOM/Generated/Rect.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/Rect.hs
@@ -0,0 +1,31 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.Rect
+       (getTop, getRight, getBottom, getLeft, Rect, castToRect, gTypeRect)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Rect.top Mozilla Rect.top documentation> 
+getTop :: (MonadDOM m) => Rect -> m (Maybe CSSPrimitiveValue)
+getTop self = liftDOM ((self ^. js "top") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Rect.right Mozilla Rect.right documentation> 
+getRight :: (MonadDOM m) => Rect -> m (Maybe CSSPrimitiveValue)
+getRight self = liftDOM ((self ^. js "right") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Rect.bottom Mozilla Rect.bottom documentation> 
+getBottom :: (MonadDOM m) => Rect -> m (Maybe CSSPrimitiveValue)
+getBottom self = liftDOM ((self ^. js "bottom") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Rect.left Mozilla Rect.left documentation> 
+getLeft :: (MonadDOM m) => Rect -> m (Maybe CSSPrimitiveValue)
+getLeft self = liftDOM ((self ^. js "left") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/RequestAnimationFrameCallback.hs b/src/Language/Javascript/JSaddle/DOM/Generated/RequestAnimationFrameCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/RequestAnimationFrameCallback.hs
@@ -0,0 +1,54 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.RequestAnimationFrameCallback
+       (newRequestAnimationFrameCallback,
+        newRequestAnimationFrameCallbackSync,
+        newRequestAnimationFrameCallbackAsync,
+        RequestAnimationFrameCallback)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RequestAnimationFrameCallback Mozilla RequestAnimationFrameCallback documentation> 
+newRequestAnimationFrameCallback ::
+                                 (MonadDOM m) =>
+                                   (Double -> JSM ()) -> m RequestAnimationFrameCallback
+newRequestAnimationFrameCallback callback
+  = liftDOM
+      (RequestAnimationFrameCallback . Callback <$>
+         function ""
+           (\ _ _ [highResTime] ->
+              fromJSValUnchecked highResTime >>=
+                \ highResTime' -> callback highResTime'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RequestAnimationFrameCallback Mozilla RequestAnimationFrameCallback documentation> 
+newRequestAnimationFrameCallbackSync ::
+                                     (MonadDOM m) =>
+                                       (Double -> JSM ()) -> m RequestAnimationFrameCallback
+newRequestAnimationFrameCallbackSync callback
+  = liftDOM
+      (RequestAnimationFrameCallback . Callback <$>
+         function ""
+           (\ _ _ [highResTime] ->
+              fromJSValUnchecked highResTime >>=
+                \ highResTime' -> callback highResTime'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RequestAnimationFrameCallback Mozilla RequestAnimationFrameCallback documentation> 
+newRequestAnimationFrameCallbackAsync ::
+                                      (MonadDOM m) =>
+                                        (Double -> JSM ()) -> m RequestAnimationFrameCallback
+newRequestAnimationFrameCallbackAsync callback
+  = liftDOM
+      (RequestAnimationFrameCallback . Callback <$>
+         function ""
+           (\ _ _ [highResTime] ->
+              fromJSValUnchecked highResTime >>=
+                \ highResTime' -> callback highResTime'))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SQLError.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SQLError.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SQLError.hs
@@ -0,0 +1,37 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SQLError
+       (pattern UNKNOWN_ERR, pattern DATABASE_ERR, pattern VERSION_ERR,
+        pattern TOO_LARGE_ERR, pattern QUOTA_ERR, pattern SYNTAX_ERR,
+        pattern CONSTRAINT_ERR, pattern TIMEOUT_ERR, getCode, getMessage,
+        SQLError, castToSQLError, gTypeSQLError)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+pattern UNKNOWN_ERR = 0
+pattern DATABASE_ERR = 1
+pattern VERSION_ERR = 2
+pattern TOO_LARGE_ERR = 3
+pattern QUOTA_ERR = 4
+pattern SYNTAX_ERR = 5
+pattern CONSTRAINT_ERR = 6
+pattern TIMEOUT_ERR = 7
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLError.code Mozilla SQLError.code documentation> 
+getCode :: (MonadDOM m) => SQLError -> m Word
+getCode self
+  = liftDOM (round <$> ((self ^. js "code") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLError.message Mozilla SQLError.message documentation> 
+getMessage ::
+           (MonadDOM m, FromJSString result) => SQLError -> m result
+getMessage self
+  = liftDOM ((self ^. js "message") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SQLResultSet.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SQLResultSet.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SQLResultSet.hs
@@ -0,0 +1,31 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SQLResultSet
+       (getRows, getInsertId, getRowsAffected, SQLResultSet,
+        castToSQLResultSet, gTypeSQLResultSet)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLResultSet.rows Mozilla SQLResultSet.rows documentation> 
+getRows ::
+        (MonadDOM m) => SQLResultSet -> m (Maybe SQLResultSetRowList)
+getRows self = liftDOM ((self ^. js "rows") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLResultSet.insertId Mozilla SQLResultSet.insertId documentation> 
+getInsertId :: (MonadDOM m) => SQLResultSet -> m Int
+getInsertId self
+  = liftDOM (round <$> ((self ^. js "insertId") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLResultSet.rowsAffected Mozilla SQLResultSet.rowsAffected documentation> 
+getRowsAffected :: (MonadDOM m) => SQLResultSet -> m Int
+getRowsAffected self
+  = liftDOM (round <$> ((self ^. js "rowsAffected") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SQLResultSetRowList.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SQLResultSetRowList.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SQLResultSetRowList.hs
@@ -0,0 +1,26 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SQLResultSetRowList
+       (item, getLength, SQLResultSetRowList, castToSQLResultSetRowList,
+        gTypeSQLResultSetRowList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLResultSetRowList.item Mozilla SQLResultSetRowList.item documentation> 
+item :: (MonadDOM m) => SQLResultSetRowList -> Word -> m JSVal
+item self index
+  = liftDOM ((self ^. jsf "item" [toJSVal index]) >>= toJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLResultSetRowList.length Mozilla SQLResultSetRowList.length documentation> 
+getLength :: (MonadDOM m) => SQLResultSetRowList -> m Word
+getLength self
+  = liftDOM (round <$> ((self ^. js "length") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SQLStatementCallback.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SQLStatementCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SQLStatementCallback.hs
@@ -0,0 +1,61 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SQLStatementCallback
+       (newSQLStatementCallback, newSQLStatementCallbackSync,
+        newSQLStatementCallbackAsync, SQLStatementCallback)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLStatementCallback Mozilla SQLStatementCallback documentation> 
+newSQLStatementCallback ::
+                        (MonadDOM m) =>
+                          (Maybe SQLTransaction -> Maybe SQLResultSet -> JSM ()) ->
+                            m SQLStatementCallback
+newSQLStatementCallback callback
+  = liftDOM
+      (SQLStatementCallback . Callback <$>
+         function ""
+           (\ _ _ [transaction, resultSet] ->
+              fromJSVal resultSet >>=
+                \ resultSet' ->
+                  fromJSVal transaction >>= \ transaction' -> callback transaction'
+                    resultSet'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLStatementCallback Mozilla SQLStatementCallback documentation> 
+newSQLStatementCallbackSync ::
+                            (MonadDOM m) =>
+                              (Maybe SQLTransaction -> Maybe SQLResultSet -> JSM ()) ->
+                                m SQLStatementCallback
+newSQLStatementCallbackSync callback
+  = liftDOM
+      (SQLStatementCallback . Callback <$>
+         function ""
+           (\ _ _ [transaction, resultSet] ->
+              fromJSVal resultSet >>=
+                \ resultSet' ->
+                  fromJSVal transaction >>= \ transaction' -> callback transaction'
+                    resultSet'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLStatementCallback Mozilla SQLStatementCallback documentation> 
+newSQLStatementCallbackAsync ::
+                             (MonadDOM m) =>
+                               (Maybe SQLTransaction -> Maybe SQLResultSet -> JSM ()) ->
+                                 m SQLStatementCallback
+newSQLStatementCallbackAsync callback
+  = liftDOM
+      (SQLStatementCallback . Callback <$>
+         function ""
+           (\ _ _ [transaction, resultSet] ->
+              fromJSVal resultSet >>=
+                \ resultSet' ->
+                  fromJSVal transaction >>= \ transaction' -> callback transaction'
+                    resultSet'))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SQLStatementErrorCallback.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SQLStatementErrorCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SQLStatementErrorCallback.hs
@@ -0,0 +1,61 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SQLStatementErrorCallback
+       (newSQLStatementErrorCallback, newSQLStatementErrorCallbackSync,
+        newSQLStatementErrorCallbackAsync, SQLStatementErrorCallback)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLStatementErrorCallback Mozilla SQLStatementErrorCallback documentation> 
+newSQLStatementErrorCallback ::
+                             (MonadDOM m) =>
+                               (Maybe SQLTransaction -> Maybe SQLError -> JSM ()) ->
+                                 m SQLStatementErrorCallback
+newSQLStatementErrorCallback callback
+  = liftDOM
+      (SQLStatementErrorCallback . Callback <$>
+         function ""
+           (\ _ _ [transaction, error] ->
+              fromJSVal error >>=
+                \ error' ->
+                  fromJSVal transaction >>= \ transaction' -> callback transaction'
+                    error'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLStatementErrorCallback Mozilla SQLStatementErrorCallback documentation> 
+newSQLStatementErrorCallbackSync ::
+                                 (MonadDOM m) =>
+                                   (Maybe SQLTransaction -> Maybe SQLError -> JSM ()) ->
+                                     m SQLStatementErrorCallback
+newSQLStatementErrorCallbackSync callback
+  = liftDOM
+      (SQLStatementErrorCallback . Callback <$>
+         function ""
+           (\ _ _ [transaction, error] ->
+              fromJSVal error >>=
+                \ error' ->
+                  fromJSVal transaction >>= \ transaction' -> callback transaction'
+                    error'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLStatementErrorCallback Mozilla SQLStatementErrorCallback documentation> 
+newSQLStatementErrorCallbackAsync ::
+                                  (MonadDOM m) =>
+                                    (Maybe SQLTransaction -> Maybe SQLError -> JSM ()) ->
+                                      m SQLStatementErrorCallback
+newSQLStatementErrorCallbackAsync callback
+  = liftDOM
+      (SQLStatementErrorCallback . Callback <$>
+         function ""
+           (\ _ _ [transaction, error] ->
+              fromJSVal error >>=
+                \ error' ->
+                  fromJSVal transaction >>= \ transaction' -> callback transaction'
+                    error'))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SQLTransaction.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SQLTransaction.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SQLTransaction.hs
@@ -0,0 +1,31 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SQLTransaction
+       (executeSql, SQLTransaction, castToSQLTransaction,
+        gTypeSQLTransaction)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLTransaction.executeSql Mozilla SQLTransaction.executeSql documentation> 
+executeSql ::
+           (MonadDOM m, ToJSString sqlStatement, IsObjectArray arguments) =>
+             SQLTransaction ->
+               sqlStatement ->
+                 Maybe arguments ->
+                   Maybe SQLStatementCallback ->
+                     Maybe SQLStatementErrorCallback -> m ()
+executeSql self sqlStatement arguments callback errorCallback
+  = liftDOM
+      (void
+         (self ^. jsf "executeSql"
+            [toJSVal sqlStatement, toJSVal arguments, toJSVal callback,
+             toJSVal errorCallback]))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SQLTransactionCallback.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SQLTransactionCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SQLTransactionCallback.hs
@@ -0,0 +1,49 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SQLTransactionCallback
+       (newSQLTransactionCallback, newSQLTransactionCallbackSync,
+        newSQLTransactionCallbackAsync, SQLTransactionCallback)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLTransactionCallback Mozilla SQLTransactionCallback documentation> 
+newSQLTransactionCallback ::
+                          (MonadDOM m) =>
+                            (Maybe SQLTransaction -> JSM ()) -> m SQLTransactionCallback
+newSQLTransactionCallback callback
+  = liftDOM
+      (SQLTransactionCallback . Callback <$>
+         function ""
+           (\ _ _ [transaction] ->
+              fromJSVal transaction >>= \ transaction' -> callback transaction'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLTransactionCallback Mozilla SQLTransactionCallback documentation> 
+newSQLTransactionCallbackSync ::
+                              (MonadDOM m) =>
+                                (Maybe SQLTransaction -> JSM ()) -> m SQLTransactionCallback
+newSQLTransactionCallbackSync callback
+  = liftDOM
+      (SQLTransactionCallback . Callback <$>
+         function ""
+           (\ _ _ [transaction] ->
+              fromJSVal transaction >>= \ transaction' -> callback transaction'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLTransactionCallback Mozilla SQLTransactionCallback documentation> 
+newSQLTransactionCallbackAsync ::
+                               (MonadDOM m) =>
+                                 (Maybe SQLTransaction -> JSM ()) -> m SQLTransactionCallback
+newSQLTransactionCallbackAsync callback
+  = liftDOM
+      (SQLTransactionCallback . Callback <$>
+         function ""
+           (\ _ _ [transaction] ->
+              fromJSVal transaction >>= \ transaction' -> callback transaction'))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SQLTransactionErrorCallback.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SQLTransactionErrorCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SQLTransactionErrorCallback.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SQLTransactionErrorCallback
+       (newSQLTransactionErrorCallback,
+        newSQLTransactionErrorCallbackSync,
+        newSQLTransactionErrorCallbackAsync, SQLTransactionErrorCallback)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLTransactionErrorCallback Mozilla SQLTransactionErrorCallback documentation> 
+newSQLTransactionErrorCallback ::
+                               (MonadDOM m) =>
+                                 (Maybe SQLError -> JSM ()) -> m SQLTransactionErrorCallback
+newSQLTransactionErrorCallback callback
+  = liftDOM
+      (SQLTransactionErrorCallback . Callback <$>
+         function ""
+           (\ _ _ [error] -> fromJSVal error >>= \ error' -> callback error'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLTransactionErrorCallback Mozilla SQLTransactionErrorCallback documentation> 
+newSQLTransactionErrorCallbackSync ::
+                                   (MonadDOM m) =>
+                                     (Maybe SQLError -> JSM ()) -> m SQLTransactionErrorCallback
+newSQLTransactionErrorCallbackSync callback
+  = liftDOM
+      (SQLTransactionErrorCallback . Callback <$>
+         function ""
+           (\ _ _ [error] -> fromJSVal error >>= \ error' -> callback error'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLTransactionErrorCallback Mozilla SQLTransactionErrorCallback documentation> 
+newSQLTransactionErrorCallbackAsync ::
+                                    (MonadDOM m) =>
+                                      (Maybe SQLError -> JSM ()) -> m SQLTransactionErrorCallback
+newSQLTransactionErrorCallbackAsync callback
+  = liftDOM
+      (SQLTransactionErrorCallback . Callback <$>
+         function ""
+           (\ _ _ [error] -> fromJSVal error >>= \ error' -> callback error'))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGAElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGAElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGAElement.hs
@@ -0,0 +1,19 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGAElement
+       (getTarget, SVGAElement, castToSVGAElement, gTypeSVGAElement) where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAElement.target Mozilla SVGAElement.target documentation> 
+getTarget ::
+          (MonadDOM m) => SVGAElement -> m (Maybe SVGAnimatedString)
+getTarget self = liftDOM ((self ^. js "target") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGAltGlyphElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGAltGlyphElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGAltGlyphElement.hs
@@ -0,0 +1,40 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGAltGlyphElement
+       (setGlyphRef, getGlyphRef, setFormat, getFormat,
+        SVGAltGlyphElement, castToSVGAltGlyphElement,
+        gTypeSVGAltGlyphElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAltGlyphElement.glyphRef Mozilla SVGAltGlyphElement.glyphRef documentation> 
+setGlyphRef ::
+            (MonadDOM m, ToJSString val) => SVGAltGlyphElement -> val -> m ()
+setGlyphRef self val
+  = liftDOM (self ^. jss "glyphRef" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAltGlyphElement.glyphRef Mozilla SVGAltGlyphElement.glyphRef documentation> 
+getGlyphRef ::
+            (MonadDOM m, FromJSString result) => SVGAltGlyphElement -> m result
+getGlyphRef self
+  = liftDOM ((self ^. js "glyphRef") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAltGlyphElement.format Mozilla SVGAltGlyphElement.format documentation> 
+setFormat ::
+          (MonadDOM m, ToJSString val) => SVGAltGlyphElement -> val -> m ()
+setFormat self val = liftDOM (self ^. jss "format" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAltGlyphElement.format Mozilla SVGAltGlyphElement.format documentation> 
+getFormat ::
+          (MonadDOM m, FromJSString result) => SVGAltGlyphElement -> m result
+getFormat self
+  = liftDOM ((self ^. js "format") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGAngle.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGAngle.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGAngle.hs
@@ -0,0 +1,80 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGAngle
+       (newValueSpecifiedUnits, convertToSpecifiedUnits,
+        pattern SVG_ANGLETYPE_UNKNOWN, pattern SVG_ANGLETYPE_UNSPECIFIED,
+        pattern SVG_ANGLETYPE_DEG, pattern SVG_ANGLETYPE_RAD,
+        pattern SVG_ANGLETYPE_GRAD, getUnitType, setValue, getValue,
+        setValueInSpecifiedUnits, getValueInSpecifiedUnits,
+        setValueAsString, getValueAsString, SVGAngle, castToSVGAngle,
+        gTypeSVGAngle)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAngle.newValueSpecifiedUnits Mozilla SVGAngle.newValueSpecifiedUnits documentation> 
+newValueSpecifiedUnits ::
+                       (MonadDOM m) => SVGAngle -> Word -> Float -> m ()
+newValueSpecifiedUnits self unitType valueInSpecifiedUnits
+  = liftDOM
+      (void
+         (self ^. jsf "newValueSpecifiedUnits"
+            [toJSVal unitType, toJSVal valueInSpecifiedUnits]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAngle.convertToSpecifiedUnits Mozilla SVGAngle.convertToSpecifiedUnits documentation> 
+convertToSpecifiedUnits :: (MonadDOM m) => SVGAngle -> Word -> m ()
+convertToSpecifiedUnits self unitType
+  = liftDOM
+      (void (self ^. jsf "convertToSpecifiedUnits" [toJSVal unitType]))
+pattern SVG_ANGLETYPE_UNKNOWN = 0
+pattern SVG_ANGLETYPE_UNSPECIFIED = 1
+pattern SVG_ANGLETYPE_DEG = 2
+pattern SVG_ANGLETYPE_RAD = 3
+pattern SVG_ANGLETYPE_GRAD = 4
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAngle.unitType Mozilla SVGAngle.unitType documentation> 
+getUnitType :: (MonadDOM m) => SVGAngle -> m Word
+getUnitType self
+  = liftDOM (round <$> ((self ^. js "unitType") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAngle.value Mozilla SVGAngle.value documentation> 
+setValue :: (MonadDOM m) => SVGAngle -> Float -> m ()
+setValue self val = liftDOM (self ^. jss "value" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAngle.value Mozilla SVGAngle.value documentation> 
+getValue :: (MonadDOM m) => SVGAngle -> m Float
+getValue self
+  = liftDOM (realToFrac <$> ((self ^. js "value") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAngle.valueInSpecifiedUnits Mozilla SVGAngle.valueInSpecifiedUnits documentation> 
+setValueInSpecifiedUnits ::
+                         (MonadDOM m) => SVGAngle -> Float -> m ()
+setValueInSpecifiedUnits self val
+  = liftDOM (self ^. jss "valueInSpecifiedUnits" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAngle.valueInSpecifiedUnits Mozilla SVGAngle.valueInSpecifiedUnits documentation> 
+getValueInSpecifiedUnits :: (MonadDOM m) => SVGAngle -> m Float
+getValueInSpecifiedUnits self
+  = liftDOM
+      (realToFrac <$>
+         ((self ^. js "valueInSpecifiedUnits") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAngle.valueAsString Mozilla SVGAngle.valueAsString documentation> 
+setValueAsString ::
+                 (MonadDOM m, ToJSString val) => SVGAngle -> Maybe val -> m ()
+setValueAsString self val
+  = liftDOM (self ^. jss "valueAsString" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAngle.valueAsString Mozilla SVGAngle.valueAsString documentation> 
+getValueAsString ::
+                 (MonadDOM m, FromJSString result) => SVGAngle -> m (Maybe result)
+getValueAsString self
+  = liftDOM ((self ^. js "valueAsString") >>= fromMaybeJSString)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGAnimatedAngle.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGAnimatedAngle.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGAnimatedAngle.hs
@@ -0,0 +1,26 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGAnimatedAngle
+       (getBaseVal, getAnimVal, SVGAnimatedAngle, castToSVGAnimatedAngle,
+        gTypeSVGAnimatedAngle)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedAngle.baseVal Mozilla SVGAnimatedAngle.baseVal documentation> 
+getBaseVal ::
+           (MonadDOM m) => SVGAnimatedAngle -> m (Maybe SVGAngle)
+getBaseVal self = liftDOM ((self ^. js "baseVal") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedAngle.animVal Mozilla SVGAnimatedAngle.animVal documentation> 
+getAnimVal ::
+           (MonadDOM m) => SVGAnimatedAngle -> m (Maybe SVGAngle)
+getAnimVal self = liftDOM ((self ^. js "animVal") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGAnimatedBoolean.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGAnimatedBoolean.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGAnimatedBoolean.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGAnimatedBoolean
+       (setBaseVal, getBaseVal, getAnimVal, SVGAnimatedBoolean,
+        castToSVGAnimatedBoolean, gTypeSVGAnimatedBoolean)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedBoolean.baseVal Mozilla SVGAnimatedBoolean.baseVal documentation> 
+setBaseVal :: (MonadDOM m) => SVGAnimatedBoolean -> Bool -> m ()
+setBaseVal self val = liftDOM (self ^. jss "baseVal" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedBoolean.baseVal Mozilla SVGAnimatedBoolean.baseVal documentation> 
+getBaseVal :: (MonadDOM m) => SVGAnimatedBoolean -> m Bool
+getBaseVal self = liftDOM ((self ^. js "baseVal") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedBoolean.animVal Mozilla SVGAnimatedBoolean.animVal documentation> 
+getAnimVal :: (MonadDOM m) => SVGAnimatedBoolean -> m Bool
+getAnimVal self = liftDOM ((self ^. js "animVal") >>= valToBool)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGAnimatedEnumeration.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGAnimatedEnumeration.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGAnimatedEnumeration.hs
@@ -0,0 +1,31 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGAnimatedEnumeration
+       (setBaseVal, getBaseVal, getAnimVal, SVGAnimatedEnumeration,
+        castToSVGAnimatedEnumeration, gTypeSVGAnimatedEnumeration)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedEnumeration.baseVal Mozilla SVGAnimatedEnumeration.baseVal documentation> 
+setBaseVal ::
+           (MonadDOM m) => SVGAnimatedEnumeration -> Word -> m ()
+setBaseVal self val = liftDOM (self ^. jss "baseVal" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedEnumeration.baseVal Mozilla SVGAnimatedEnumeration.baseVal documentation> 
+getBaseVal :: (MonadDOM m) => SVGAnimatedEnumeration -> m Word
+getBaseVal self
+  = liftDOM (round <$> ((self ^. js "baseVal") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedEnumeration.animVal Mozilla SVGAnimatedEnumeration.animVal documentation> 
+getAnimVal :: (MonadDOM m) => SVGAnimatedEnumeration -> m Word
+getAnimVal self
+  = liftDOM (round <$> ((self ^. js "animVal") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGAnimatedInteger.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGAnimatedInteger.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGAnimatedInteger.hs
@@ -0,0 +1,30 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGAnimatedInteger
+       (setBaseVal, getBaseVal, getAnimVal, SVGAnimatedInteger,
+        castToSVGAnimatedInteger, gTypeSVGAnimatedInteger)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedInteger.baseVal Mozilla SVGAnimatedInteger.baseVal documentation> 
+setBaseVal :: (MonadDOM m) => SVGAnimatedInteger -> Int -> m ()
+setBaseVal self val = liftDOM (self ^. jss "baseVal" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedInteger.baseVal Mozilla SVGAnimatedInteger.baseVal documentation> 
+getBaseVal :: (MonadDOM m) => SVGAnimatedInteger -> m Int
+getBaseVal self
+  = liftDOM (round <$> ((self ^. js "baseVal") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedInteger.animVal Mozilla SVGAnimatedInteger.animVal documentation> 
+getAnimVal :: (MonadDOM m) => SVGAnimatedInteger -> m Int
+getAnimVal self
+  = liftDOM (round <$> ((self ^. js "animVal") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGAnimatedLength.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGAnimatedLength.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGAnimatedLength.hs
@@ -0,0 +1,26 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGAnimatedLength
+       (getBaseVal, getAnimVal, SVGAnimatedLength,
+        castToSVGAnimatedLength, gTypeSVGAnimatedLength)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedLength.baseVal Mozilla SVGAnimatedLength.baseVal documentation> 
+getBaseVal ::
+           (MonadDOM m) => SVGAnimatedLength -> m (Maybe SVGLength)
+getBaseVal self = liftDOM ((self ^. js "baseVal") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedLength.animVal Mozilla SVGAnimatedLength.animVal documentation> 
+getAnimVal ::
+           (MonadDOM m) => SVGAnimatedLength -> m (Maybe SVGLength)
+getAnimVal self = liftDOM ((self ^. js "animVal") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGAnimatedLengthList.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGAnimatedLengthList.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGAnimatedLengthList.hs
@@ -0,0 +1,26 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGAnimatedLengthList
+       (getBaseVal, getAnimVal, SVGAnimatedLengthList,
+        castToSVGAnimatedLengthList, gTypeSVGAnimatedLengthList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedLengthList.baseVal Mozilla SVGAnimatedLengthList.baseVal documentation> 
+getBaseVal ::
+           (MonadDOM m) => SVGAnimatedLengthList -> m (Maybe SVGLengthList)
+getBaseVal self = liftDOM ((self ^. js "baseVal") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedLengthList.animVal Mozilla SVGAnimatedLengthList.animVal documentation> 
+getAnimVal ::
+           (MonadDOM m) => SVGAnimatedLengthList -> m (Maybe SVGLengthList)
+getAnimVal self = liftDOM ((self ^. js "animVal") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGAnimatedNumber.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGAnimatedNumber.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGAnimatedNumber.hs
@@ -0,0 +1,30 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGAnimatedNumber
+       (setBaseVal, getBaseVal, getAnimVal, SVGAnimatedNumber,
+        castToSVGAnimatedNumber, gTypeSVGAnimatedNumber)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedNumber.baseVal Mozilla SVGAnimatedNumber.baseVal documentation> 
+setBaseVal :: (MonadDOM m) => SVGAnimatedNumber -> Float -> m ()
+setBaseVal self val = liftDOM (self ^. jss "baseVal" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedNumber.baseVal Mozilla SVGAnimatedNumber.baseVal documentation> 
+getBaseVal :: (MonadDOM m) => SVGAnimatedNumber -> m Float
+getBaseVal self
+  = liftDOM (realToFrac <$> ((self ^. js "baseVal") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedNumber.animVal Mozilla SVGAnimatedNumber.animVal documentation> 
+getAnimVal :: (MonadDOM m) => SVGAnimatedNumber -> m Float
+getAnimVal self
+  = liftDOM (realToFrac <$> ((self ^. js "animVal") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGAnimatedNumberList.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGAnimatedNumberList.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGAnimatedNumberList.hs
@@ -0,0 +1,26 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGAnimatedNumberList
+       (getBaseVal, getAnimVal, SVGAnimatedNumberList,
+        castToSVGAnimatedNumberList, gTypeSVGAnimatedNumberList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedNumberList.baseVal Mozilla SVGAnimatedNumberList.baseVal documentation> 
+getBaseVal ::
+           (MonadDOM m) => SVGAnimatedNumberList -> m (Maybe SVGNumberList)
+getBaseVal self = liftDOM ((self ^. js "baseVal") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedNumberList.animVal Mozilla SVGAnimatedNumberList.animVal documentation> 
+getAnimVal ::
+           (MonadDOM m) => SVGAnimatedNumberList -> m (Maybe SVGNumberList)
+getAnimVal self = liftDOM ((self ^. js "animVal") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGAnimatedPreserveAspectRatio.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGAnimatedPreserveAspectRatio.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGAnimatedPreserveAspectRatio.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGAnimatedPreserveAspectRatio
+       (getBaseVal, getAnimVal, SVGAnimatedPreserveAspectRatio,
+        castToSVGAnimatedPreserveAspectRatio,
+        gTypeSVGAnimatedPreserveAspectRatio)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedPreserveAspectRatio.baseVal Mozilla SVGAnimatedPreserveAspectRatio.baseVal documentation> 
+getBaseVal ::
+           (MonadDOM m) =>
+             SVGAnimatedPreserveAspectRatio -> m (Maybe SVGPreserveAspectRatio)
+getBaseVal self = liftDOM ((self ^. js "baseVal") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedPreserveAspectRatio.animVal Mozilla SVGAnimatedPreserveAspectRatio.animVal documentation> 
+getAnimVal ::
+           (MonadDOM m) =>
+             SVGAnimatedPreserveAspectRatio -> m (Maybe SVGPreserveAspectRatio)
+getAnimVal self = liftDOM ((self ^. js "animVal") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGAnimatedRect.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGAnimatedRect.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGAnimatedRect.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGAnimatedRect
+       (getBaseVal, getAnimVal, SVGAnimatedRect, castToSVGAnimatedRect,
+        gTypeSVGAnimatedRect)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedRect.baseVal Mozilla SVGAnimatedRect.baseVal documentation> 
+getBaseVal :: (MonadDOM m) => SVGAnimatedRect -> m (Maybe SVGRect)
+getBaseVal self = liftDOM ((self ^. js "baseVal") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedRect.animVal Mozilla SVGAnimatedRect.animVal documentation> 
+getAnimVal :: (MonadDOM m) => SVGAnimatedRect -> m (Maybe SVGRect)
+getAnimVal self = liftDOM ((self ^. js "animVal") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGAnimatedString.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGAnimatedString.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGAnimatedString.hs
@@ -0,0 +1,33 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGAnimatedString
+       (setBaseVal, getBaseVal, getAnimVal, SVGAnimatedString,
+        castToSVGAnimatedString, gTypeSVGAnimatedString)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedString.baseVal Mozilla SVGAnimatedString.baseVal documentation> 
+setBaseVal ::
+           (MonadDOM m, ToJSString val) => SVGAnimatedString -> val -> m ()
+setBaseVal self val = liftDOM (self ^. jss "baseVal" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedString.baseVal Mozilla SVGAnimatedString.baseVal documentation> 
+getBaseVal ::
+           (MonadDOM m, FromJSString result) => SVGAnimatedString -> m result
+getBaseVal self
+  = liftDOM ((self ^. js "baseVal") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedString.animVal Mozilla SVGAnimatedString.animVal documentation> 
+getAnimVal ::
+           (MonadDOM m, FromJSString result) => SVGAnimatedString -> m result
+getAnimVal self
+  = liftDOM ((self ^. js "animVal") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGAnimatedTransformList.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGAnimatedTransformList.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGAnimatedTransformList.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGAnimatedTransformList
+       (getBaseVal, getAnimVal, SVGAnimatedTransformList,
+        castToSVGAnimatedTransformList, gTypeSVGAnimatedTransformList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedTransformList.baseVal Mozilla SVGAnimatedTransformList.baseVal documentation> 
+getBaseVal ::
+           (MonadDOM m) =>
+             SVGAnimatedTransformList -> m (Maybe SVGTransformList)
+getBaseVal self = liftDOM ((self ^. js "baseVal") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedTransformList.animVal Mozilla SVGAnimatedTransformList.animVal documentation> 
+getAnimVal ::
+           (MonadDOM m) =>
+             SVGAnimatedTransformList -> m (Maybe SVGTransformList)
+getAnimVal self = liftDOM ((self ^. js "animVal") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGAnimationElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGAnimationElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGAnimationElement.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGAnimationElement
+       (getStartTime, getCurrentTime, getSimpleDuration, beginElement,
+        beginElementAt, endElement, endElementAt, getTargetElement,
+        SVGAnimationElement, castToSVGAnimationElement,
+        gTypeSVGAnimationElement, IsSVGAnimationElement,
+        toSVGAnimationElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimationElement.getStartTime Mozilla SVGAnimationElement.getStartTime documentation> 
+getStartTime ::
+             (MonadDOM m, IsSVGAnimationElement self) => self -> m Float
+getStartTime self
+  = liftDOM
+      (realToFrac <$>
+         (((toSVGAnimationElement self) ^. js "getStartTime") >>=
+            valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimationElement.getCurrentTime Mozilla SVGAnimationElement.getCurrentTime documentation> 
+getCurrentTime ::
+               (MonadDOM m, IsSVGAnimationElement self) => self -> m Float
+getCurrentTime self
+  = liftDOM
+      (realToFrac <$>
+         (((toSVGAnimationElement self) ^. js "getCurrentTime") >>=
+            valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimationElement.getSimpleDuration Mozilla SVGAnimationElement.getSimpleDuration documentation> 
+getSimpleDuration ::
+                  (MonadDOM m, IsSVGAnimationElement self) => self -> m Float
+getSimpleDuration self
+  = liftDOM
+      (realToFrac <$>
+         (((toSVGAnimationElement self) ^. js "getSimpleDuration") >>=
+            valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimationElement.beginElement Mozilla SVGAnimationElement.beginElement documentation> 
+beginElement ::
+             (MonadDOM m, IsSVGAnimationElement self) => self -> m ()
+beginElement self
+  = liftDOM
+      (void ((toSVGAnimationElement self) ^. js "beginElement"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimationElement.beginElementAt Mozilla SVGAnimationElement.beginElementAt documentation> 
+beginElementAt ::
+               (MonadDOM m, IsSVGAnimationElement self) => self -> Float -> m ()
+beginElementAt self offset
+  = liftDOM
+      (void
+         ((toSVGAnimationElement self) ^. jsf "beginElementAt"
+            [toJSVal offset]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimationElement.endElement Mozilla SVGAnimationElement.endElement documentation> 
+endElement ::
+           (MonadDOM m, IsSVGAnimationElement self) => self -> m ()
+endElement self
+  = liftDOM (void ((toSVGAnimationElement self) ^. js "endElement"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimationElement.endElementAt Mozilla SVGAnimationElement.endElementAt documentation> 
+endElementAt ::
+             (MonadDOM m, IsSVGAnimationElement self) => self -> Float -> m ()
+endElementAt self offset
+  = liftDOM
+      (void
+         ((toSVGAnimationElement self) ^. jsf "endElementAt"
+            [toJSVal offset]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimationElement.targetElement Mozilla SVGAnimationElement.targetElement documentation> 
+getTargetElement ::
+                 (MonadDOM m, IsSVGAnimationElement self) =>
+                   self -> m (Maybe SVGElement)
+getTargetElement self
+  = liftDOM
+      (((toSVGAnimationElement self) ^. js "targetElement") >>=
+         fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGCircleElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGCircleElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGCircleElement.hs
@@ -0,0 +1,31 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGCircleElement
+       (getCx, getCy, getR, SVGCircleElement, castToSVGCircleElement,
+        gTypeSVGCircleElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGCircleElement.cx Mozilla SVGCircleElement.cx documentation> 
+getCx ::
+      (MonadDOM m) => SVGCircleElement -> m (Maybe SVGAnimatedLength)
+getCx self = liftDOM ((self ^. js "cx") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGCircleElement.cy Mozilla SVGCircleElement.cy documentation> 
+getCy ::
+      (MonadDOM m) => SVGCircleElement -> m (Maybe SVGAnimatedLength)
+getCy self = liftDOM ((self ^. js "cy") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGCircleElement.r Mozilla SVGCircleElement.r documentation> 
+getR ::
+     (MonadDOM m) => SVGCircleElement -> m (Maybe SVGAnimatedLength)
+getR self = liftDOM ((self ^. js "r") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGClipPathElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGClipPathElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGClipPathElement.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGClipPathElement
+       (getClipPathUnits, SVGClipPathElement, castToSVGClipPathElement,
+        gTypeSVGClipPathElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGClipPathElement.clipPathUnits Mozilla SVGClipPathElement.clipPathUnits documentation> 
+getClipPathUnits ::
+                 (MonadDOM m) =>
+                   SVGClipPathElement -> m (Maybe SVGAnimatedEnumeration)
+getClipPathUnits self
+  = liftDOM ((self ^. js "clipPathUnits") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGColor.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGColor.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGColor.hs
@@ -0,0 +1,65 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGColor
+       (setRGBColor, setRGBColorICCColor, setColor,
+        pattern SVG_COLORTYPE_UNKNOWN, pattern SVG_COLORTYPE_RGBCOLOR,
+        pattern SVG_COLORTYPE_RGBCOLOR_ICCCOLOR,
+        pattern SVG_COLORTYPE_CURRENTCOLOR, getColorType, getRgbColor,
+        SVGColor, castToSVGColor, gTypeSVGColor, IsSVGColor, toSVGColor)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGColor.setRGBColor Mozilla SVGColor.setRGBColor documentation> 
+setRGBColor ::
+            (MonadDOM m, IsSVGColor self, ToJSString rgbColor) =>
+              self -> rgbColor -> m ()
+setRGBColor self rgbColor
+  = liftDOM
+      (void ((toSVGColor self) ^. jsf "setRGBColor" [toJSVal rgbColor]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGColor.setRGBColorICCColor Mozilla SVGColor.setRGBColorICCColor documentation> 
+setRGBColorICCColor ::
+                    (MonadDOM m, IsSVGColor self, ToJSString rgbColor,
+                     ToJSString iccColor) =>
+                      self -> rgbColor -> iccColor -> m ()
+setRGBColorICCColor self rgbColor iccColor
+  = liftDOM
+      (void
+         ((toSVGColor self) ^. jsf "setRGBColorICCColor"
+            [toJSVal rgbColor, toJSVal iccColor]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGColor.setColor Mozilla SVGColor.setColor documentation> 
+setColor ::
+         (MonadDOM m, IsSVGColor self, ToJSString rgbColor,
+          ToJSString iccColor) =>
+           self -> Word -> rgbColor -> iccColor -> m ()
+setColor self colorType rgbColor iccColor
+  = liftDOM
+      (void
+         ((toSVGColor self) ^. jsf "setColor"
+            [toJSVal colorType, toJSVal rgbColor, toJSVal iccColor]))
+pattern SVG_COLORTYPE_UNKNOWN = 0
+pattern SVG_COLORTYPE_RGBCOLOR = 1
+pattern SVG_COLORTYPE_RGBCOLOR_ICCCOLOR = 2
+pattern SVG_COLORTYPE_CURRENTCOLOR = 3
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGColor.colorType Mozilla SVGColor.colorType documentation> 
+getColorType :: (MonadDOM m, IsSVGColor self) => self -> m Word
+getColorType self
+  = liftDOM
+      (round <$> (((toSVGColor self) ^. js "colorType") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGColor.rgbColor Mozilla SVGColor.rgbColor documentation> 
+getRgbColor ::
+            (MonadDOM m, IsSVGColor self) => self -> m (Maybe RGBColor)
+getRgbColor self
+  = liftDOM (((toSVGColor self) ^. js "rgbColor") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGComponentTransferFunctionElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGComponentTransferFunctionElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGComponentTransferFunctionElement.hs
@@ -0,0 +1,95 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGComponentTransferFunctionElement
+       (pattern SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN,
+        pattern SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY,
+        pattern SVG_FECOMPONENTTRANSFER_TYPE_TABLE,
+        pattern SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE,
+        pattern SVG_FECOMPONENTTRANSFER_TYPE_LINEAR,
+        pattern SVG_FECOMPONENTTRANSFER_TYPE_GAMMA, getType,
+        getTableValues, getSlope, getIntercept, getAmplitude, getExponent,
+        getOffset, SVGComponentTransferFunctionElement,
+        castToSVGComponentTransferFunctionElement,
+        gTypeSVGComponentTransferFunctionElement,
+        IsSVGComponentTransferFunctionElement,
+        toSVGComponentTransferFunctionElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+pattern SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN = 0
+pattern SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY = 1
+pattern SVG_FECOMPONENTTRANSFER_TYPE_TABLE = 2
+pattern SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE = 3
+pattern SVG_FECOMPONENTTRANSFER_TYPE_LINEAR = 4
+pattern SVG_FECOMPONENTTRANSFER_TYPE_GAMMA = 5
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGComponentTransferFunctionElement.type Mozilla SVGComponentTransferFunctionElement.type documentation> 
+getType ::
+        (MonadDOM m, IsSVGComponentTransferFunctionElement self) =>
+          self -> m (Maybe SVGAnimatedEnumeration)
+getType self
+  = liftDOM
+      (((toSVGComponentTransferFunctionElement self) ^. js "type") >>=
+         fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGComponentTransferFunctionElement.tableValues Mozilla SVGComponentTransferFunctionElement.tableValues documentation> 
+getTableValues ::
+               (MonadDOM m, IsSVGComponentTransferFunctionElement self) =>
+                 self -> m (Maybe SVGAnimatedNumberList)
+getTableValues self
+  = liftDOM
+      (((toSVGComponentTransferFunctionElement self) ^. js "tableValues")
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGComponentTransferFunctionElement.slope Mozilla SVGComponentTransferFunctionElement.slope documentation> 
+getSlope ::
+         (MonadDOM m, IsSVGComponentTransferFunctionElement self) =>
+           self -> m (Maybe SVGAnimatedNumber)
+getSlope self
+  = liftDOM
+      (((toSVGComponentTransferFunctionElement self) ^. js "slope") >>=
+         fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGComponentTransferFunctionElement.intercept Mozilla SVGComponentTransferFunctionElement.intercept documentation> 
+getIntercept ::
+             (MonadDOM m, IsSVGComponentTransferFunctionElement self) =>
+               self -> m (Maybe SVGAnimatedNumber)
+getIntercept self
+  = liftDOM
+      (((toSVGComponentTransferFunctionElement self) ^. js "intercept")
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGComponentTransferFunctionElement.amplitude Mozilla SVGComponentTransferFunctionElement.amplitude documentation> 
+getAmplitude ::
+             (MonadDOM m, IsSVGComponentTransferFunctionElement self) =>
+               self -> m (Maybe SVGAnimatedNumber)
+getAmplitude self
+  = liftDOM
+      (((toSVGComponentTransferFunctionElement self) ^. js "amplitude")
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGComponentTransferFunctionElement.exponent Mozilla SVGComponentTransferFunctionElement.exponent documentation> 
+getExponent ::
+            (MonadDOM m, IsSVGComponentTransferFunctionElement self) =>
+              self -> m (Maybe SVGAnimatedNumber)
+getExponent self
+  = liftDOM
+      (((toSVGComponentTransferFunctionElement self) ^. js "exponent")
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGComponentTransferFunctionElement.offset Mozilla SVGComponentTransferFunctionElement.offset documentation> 
+getOffset ::
+          (MonadDOM m, IsSVGComponentTransferFunctionElement self) =>
+            self -> m (Maybe SVGAnimatedNumber)
+getOffset self
+  = liftDOM
+      (((toSVGComponentTransferFunctionElement self) ^. js "offset") >>=
+         fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGCursorElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGCursorElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGCursorElement.hs
@@ -0,0 +1,26 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGCursorElement
+       (getX, getY, SVGCursorElement, castToSVGCursorElement,
+        gTypeSVGCursorElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGCursorElement.x Mozilla SVGCursorElement.x documentation> 
+getX ::
+     (MonadDOM m) => SVGCursorElement -> m (Maybe SVGAnimatedLength)
+getX self = liftDOM ((self ^. js "x") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGCursorElement.y Mozilla SVGCursorElement.y documentation> 
+getY ::
+     (MonadDOM m) => SVGCursorElement -> m (Maybe SVGAnimatedLength)
+getY self = liftDOM ((self ^. js "y") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGDocument.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGDocument.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGDocument.hs
@@ -0,0 +1,30 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGDocument
+       (createEvent, getRootElement, SVGDocument, castToSVGDocument,
+        gTypeSVGDocument)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGDocument.createEvent Mozilla SVGDocument.createEvent documentation> 
+createEvent ::
+            (MonadDOM m, ToJSString eventType) =>
+              SVGDocument -> eventType -> m (Maybe Event)
+createEvent self eventType
+  = liftDOM
+      ((self ^. jsf "createEvent" [toJSVal eventType]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGDocument.rootElement Mozilla SVGDocument.rootElement documentation> 
+getRootElement ::
+               (MonadDOM m) => SVGDocument -> m (Maybe SVGSVGElement)
+getRootElement self
+  = liftDOM ((self ^. js "rootElement") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGElement.hs
@@ -0,0 +1,115 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGElement
+       (getPresentationAttribute, setXmlbase, getXmlbase,
+        getOwnerSVGElement, getViewportElement, setXmllang, getXmllang,
+        setXmlspace, getXmlspace, getClassName, getStyle, setTabIndex,
+        getTabIndex, SVGElement, castToSVGElement, gTypeSVGElement,
+        IsSVGElement, toSVGElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.getPresentationAttribute Mozilla SVGElement.getPresentationAttribute documentation> 
+getPresentationAttribute ::
+                         (MonadDOM m, IsSVGElement self, ToJSString name) =>
+                           self -> name -> m (Maybe CSSValue)
+getPresentationAttribute self name
+  = liftDOM
+      (((toSVGElement self) ^. jsf "getPresentationAttribute"
+          [toJSVal name])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.xmlbase Mozilla SVGElement.xmlbase documentation> 
+setXmlbase ::
+           (MonadDOM m, IsSVGElement self, ToJSString val) =>
+             self -> Maybe val -> m ()
+setXmlbase self val
+  = liftDOM ((toSVGElement self) ^. jss "xmlbase" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.xmlbase Mozilla SVGElement.xmlbase documentation> 
+getXmlbase ::
+           (MonadDOM m, IsSVGElement self, FromJSString result) =>
+             self -> m (Maybe result)
+getXmlbase self
+  = liftDOM
+      (((toSVGElement self) ^. js "xmlbase") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.ownerSVGElement Mozilla SVGElement.ownerSVGElement documentation> 
+getOwnerSVGElement ::
+                   (MonadDOM m, IsSVGElement self) => self -> m (Maybe SVGSVGElement)
+getOwnerSVGElement self
+  = liftDOM
+      (((toSVGElement self) ^. js "ownerSVGElement") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.viewportElement Mozilla SVGElement.viewportElement documentation> 
+getViewportElement ::
+                   (MonadDOM m, IsSVGElement self) => self -> m (Maybe SVGElement)
+getViewportElement self
+  = liftDOM
+      (((toSVGElement self) ^. js "viewportElement") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.xmllang Mozilla SVGElement.xmllang documentation> 
+setXmllang ::
+           (MonadDOM m, IsSVGElement self, ToJSString val) =>
+             self -> val -> m ()
+setXmllang self val
+  = liftDOM ((toSVGElement self) ^. jss "xmllang" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.xmllang Mozilla SVGElement.xmllang documentation> 
+getXmllang ::
+           (MonadDOM m, IsSVGElement self, FromJSString result) =>
+             self -> m result
+getXmllang self
+  = liftDOM
+      (((toSVGElement self) ^. js "xmllang") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.xmlspace Mozilla SVGElement.xmlspace documentation> 
+setXmlspace ::
+            (MonadDOM m, IsSVGElement self, ToJSString val) =>
+              self -> val -> m ()
+setXmlspace self val
+  = liftDOM ((toSVGElement self) ^. jss "xmlspace" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.xmlspace Mozilla SVGElement.xmlspace documentation> 
+getXmlspace ::
+            (MonadDOM m, IsSVGElement self, FromJSString result) =>
+              self -> m result
+getXmlspace self
+  = liftDOM
+      (((toSVGElement self) ^. js "xmlspace") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.className Mozilla SVGElement.className documentation> 
+getClassName ::
+             (MonadDOM m, IsSVGElement self) =>
+               self -> m (Maybe SVGAnimatedString)
+getClassName self
+  = liftDOM (((toSVGElement self) ^. js "className") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.style Mozilla SVGElement.style documentation> 
+getStyle ::
+         (MonadDOM m, IsSVGElement self) =>
+           self -> m (Maybe CSSStyleDeclaration)
+getStyle self
+  = liftDOM (((toSVGElement self) ^. js "style") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.tabIndex Mozilla SVGElement.tabIndex documentation> 
+setTabIndex ::
+            (MonadDOM m, IsSVGElement self) => self -> Int -> m ()
+setTabIndex self val
+  = liftDOM ((toSVGElement self) ^. jss "tabIndex" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.tabIndex Mozilla SVGElement.tabIndex documentation> 
+getTabIndex :: (MonadDOM m, IsSVGElement self) => self -> m Int
+getTabIndex self
+  = liftDOM
+      (round <$>
+         (((toSVGElement self) ^. js "tabIndex") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGEllipseElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGEllipseElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGEllipseElement.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGEllipseElement
+       (getCx, getCy, getRx, getRy, SVGEllipseElement,
+        castToSVGEllipseElement, gTypeSVGEllipseElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGEllipseElement.cx Mozilla SVGEllipseElement.cx documentation> 
+getCx ::
+      (MonadDOM m) => SVGEllipseElement -> m (Maybe SVGAnimatedLength)
+getCx self = liftDOM ((self ^. js "cx") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGEllipseElement.cy Mozilla SVGEllipseElement.cy documentation> 
+getCy ::
+      (MonadDOM m) => SVGEllipseElement -> m (Maybe SVGAnimatedLength)
+getCy self = liftDOM ((self ^. js "cy") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGEllipseElement.rx Mozilla SVGEllipseElement.rx documentation> 
+getRx ::
+      (MonadDOM m) => SVGEllipseElement -> m (Maybe SVGAnimatedLength)
+getRx self = liftDOM ((self ^. js "rx") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGEllipseElement.ry Mozilla SVGEllipseElement.ry documentation> 
+getRy ::
+      (MonadDOM m) => SVGEllipseElement -> m (Maybe SVGAnimatedLength)
+getRy self = liftDOM ((self ^. js "ry") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGExternalResourcesRequired.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGExternalResourcesRequired.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGExternalResourcesRequired.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGExternalResourcesRequired
+       (getExternalResourcesRequired, SVGExternalResourcesRequired,
+        castToSVGExternalResourcesRequired,
+        gTypeSVGExternalResourcesRequired)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGExternalResourcesRequired.externalResourcesRequired Mozilla SVGExternalResourcesRequired.externalResourcesRequired documentation> 
+getExternalResourcesRequired ::
+                             (MonadDOM m) =>
+                               SVGExternalResourcesRequired -> m (Maybe SVGAnimatedBoolean)
+getExternalResourcesRequired self
+  = liftDOM ((self ^. js "externalResourcesRequired") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGFEBlendElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGFEBlendElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGFEBlendElement.hs
@@ -0,0 +1,41 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGFEBlendElement
+       (pattern SVG_FEBLEND_MODE_UNKNOWN, pattern SVG_FEBLEND_MODE_NORMAL,
+        pattern SVG_FEBLEND_MODE_MULTIPLY, pattern SVG_FEBLEND_MODE_SCREEN,
+        pattern SVG_FEBLEND_MODE_DARKEN, pattern SVG_FEBLEND_MODE_LIGHTEN,
+        getIn1, getIn2, getMode, SVGFEBlendElement,
+        castToSVGFEBlendElement, gTypeSVGFEBlendElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+pattern SVG_FEBLEND_MODE_UNKNOWN = 0
+pattern SVG_FEBLEND_MODE_NORMAL = 1
+pattern SVG_FEBLEND_MODE_MULTIPLY = 2
+pattern SVG_FEBLEND_MODE_SCREEN = 3
+pattern SVG_FEBLEND_MODE_DARKEN = 4
+pattern SVG_FEBLEND_MODE_LIGHTEN = 5
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEBlendElement.in1 Mozilla SVGFEBlendElement.in1 documentation> 
+getIn1 ::
+       (MonadDOM m) => SVGFEBlendElement -> m (Maybe SVGAnimatedString)
+getIn1 self = liftDOM ((self ^. js "in1") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEBlendElement.in2 Mozilla SVGFEBlendElement.in2 documentation> 
+getIn2 ::
+       (MonadDOM m) => SVGFEBlendElement -> m (Maybe SVGAnimatedString)
+getIn2 self = liftDOM ((self ^. js "in2") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEBlendElement.mode Mozilla SVGFEBlendElement.mode documentation> 
+getMode ::
+        (MonadDOM m) =>
+          SVGFEBlendElement -> m (Maybe SVGAnimatedEnumeration)
+getMode self = liftDOM ((self ^. js "mode") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGFEColorMatrixElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGFEColorMatrixElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGFEColorMatrixElement.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGFEColorMatrixElement
+       (pattern SVG_FECOLORMATRIX_TYPE_UNKNOWN,
+        pattern SVG_FECOLORMATRIX_TYPE_MATRIX,
+        pattern SVG_FECOLORMATRIX_TYPE_SATURATE,
+        pattern SVG_FECOLORMATRIX_TYPE_HUEROTATE,
+        pattern SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA, getIn1, getType,
+        getValues, SVGFEColorMatrixElement, castToSVGFEColorMatrixElement,
+        gTypeSVGFEColorMatrixElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+pattern SVG_FECOLORMATRIX_TYPE_UNKNOWN = 0
+pattern SVG_FECOLORMATRIX_TYPE_MATRIX = 1
+pattern SVG_FECOLORMATRIX_TYPE_SATURATE = 2
+pattern SVG_FECOLORMATRIX_TYPE_HUEROTATE = 3
+pattern SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA = 4
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEColorMatrixElement.in1 Mozilla SVGFEColorMatrixElement.in1 documentation> 
+getIn1 ::
+       (MonadDOM m) =>
+         SVGFEColorMatrixElement -> m (Maybe SVGAnimatedString)
+getIn1 self = liftDOM ((self ^. js "in1") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEColorMatrixElement.type Mozilla SVGFEColorMatrixElement.type documentation> 
+getType ::
+        (MonadDOM m) =>
+          SVGFEColorMatrixElement -> m (Maybe SVGAnimatedEnumeration)
+getType self = liftDOM ((self ^. js "type") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEColorMatrixElement.values Mozilla SVGFEColorMatrixElement.values documentation> 
+getValues ::
+          (MonadDOM m) =>
+            SVGFEColorMatrixElement -> m (Maybe SVGAnimatedNumberList)
+getValues self = liftDOM ((self ^. js "values") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGFEComponentTransferElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGFEComponentTransferElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGFEComponentTransferElement.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGFEComponentTransferElement
+       (getIn1, SVGFEComponentTransferElement,
+        castToSVGFEComponentTransferElement,
+        gTypeSVGFEComponentTransferElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEComponentTransferElement.in1 Mozilla SVGFEComponentTransferElement.in1 documentation> 
+getIn1 ::
+       (MonadDOM m) =>
+         SVGFEComponentTransferElement -> m (Maybe SVGAnimatedString)
+getIn1 self = liftDOM ((self ^. js "in1") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGFECompositeElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGFECompositeElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGFECompositeElement.hs
@@ -0,0 +1,72 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGFECompositeElement
+       (pattern SVG_FECOMPOSITE_OPERATOR_UNKNOWN,
+        pattern SVG_FECOMPOSITE_OPERATOR_OVER,
+        pattern SVG_FECOMPOSITE_OPERATOR_IN,
+        pattern SVG_FECOMPOSITE_OPERATOR_OUT,
+        pattern SVG_FECOMPOSITE_OPERATOR_ATOP,
+        pattern SVG_FECOMPOSITE_OPERATOR_XOR,
+        pattern SVG_FECOMPOSITE_OPERATOR_ARITHMETIC, getIn1, getIn2,
+        getOperator, getK1, getK2, getK3, getK4, SVGFECompositeElement,
+        castToSVGFECompositeElement, gTypeSVGFECompositeElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+pattern SVG_FECOMPOSITE_OPERATOR_UNKNOWN = 0
+pattern SVG_FECOMPOSITE_OPERATOR_OVER = 1
+pattern SVG_FECOMPOSITE_OPERATOR_IN = 2
+pattern SVG_FECOMPOSITE_OPERATOR_OUT = 3
+pattern SVG_FECOMPOSITE_OPERATOR_ATOP = 4
+pattern SVG_FECOMPOSITE_OPERATOR_XOR = 5
+pattern SVG_FECOMPOSITE_OPERATOR_ARITHMETIC = 6
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFECompositeElement.in1 Mozilla SVGFECompositeElement.in1 documentation> 
+getIn1 ::
+       (MonadDOM m) =>
+         SVGFECompositeElement -> m (Maybe SVGAnimatedString)
+getIn1 self = liftDOM ((self ^. js "in1") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFECompositeElement.in2 Mozilla SVGFECompositeElement.in2 documentation> 
+getIn2 ::
+       (MonadDOM m) =>
+         SVGFECompositeElement -> m (Maybe SVGAnimatedString)
+getIn2 self = liftDOM ((self ^. js "in2") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFECompositeElement.operator Mozilla SVGFECompositeElement.operator documentation> 
+getOperator ::
+            (MonadDOM m) =>
+              SVGFECompositeElement -> m (Maybe SVGAnimatedEnumeration)
+getOperator self = liftDOM ((self ^. js "operator") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFECompositeElement.k1 Mozilla SVGFECompositeElement.k1 documentation> 
+getK1 ::
+      (MonadDOM m) =>
+        SVGFECompositeElement -> m (Maybe SVGAnimatedNumber)
+getK1 self = liftDOM ((self ^. js "k1") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFECompositeElement.k2 Mozilla SVGFECompositeElement.k2 documentation> 
+getK2 ::
+      (MonadDOM m) =>
+        SVGFECompositeElement -> m (Maybe SVGAnimatedNumber)
+getK2 self = liftDOM ((self ^. js "k2") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFECompositeElement.k3 Mozilla SVGFECompositeElement.k3 documentation> 
+getK3 ::
+      (MonadDOM m) =>
+        SVGFECompositeElement -> m (Maybe SVGAnimatedNumber)
+getK3 self = liftDOM ((self ^. js "k3") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFECompositeElement.k4 Mozilla SVGFECompositeElement.k4 documentation> 
+getK4 ::
+      (MonadDOM m) =>
+        SVGFECompositeElement -> m (Maybe SVGAnimatedNumber)
+getK4 self = liftDOM ((self ^. js "k4") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGFEConvolveMatrixElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGFEConvolveMatrixElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGFEConvolveMatrixElement.hs
@@ -0,0 +1,100 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGFEConvolveMatrixElement
+       (pattern SVG_EDGEMODE_UNKNOWN, pattern SVG_EDGEMODE_DUPLICATE,
+        pattern SVG_EDGEMODE_WRAP, pattern SVG_EDGEMODE_NONE, getIn1,
+        getOrderX, getOrderY, getKernelMatrix, getDivisor, getBias,
+        getTargetX, getTargetY, getEdgeMode, getKernelUnitLengthX,
+        getKernelUnitLengthY, getPreserveAlpha, SVGFEConvolveMatrixElement,
+        castToSVGFEConvolveMatrixElement, gTypeSVGFEConvolveMatrixElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+pattern SVG_EDGEMODE_UNKNOWN = 0
+pattern SVG_EDGEMODE_DUPLICATE = 1
+pattern SVG_EDGEMODE_WRAP = 2
+pattern SVG_EDGEMODE_NONE = 3
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.in1 Mozilla SVGFEConvolveMatrixElement.in1 documentation> 
+getIn1 ::
+       (MonadDOM m) =>
+         SVGFEConvolveMatrixElement -> m (Maybe SVGAnimatedString)
+getIn1 self = liftDOM ((self ^. js "in1") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.orderX Mozilla SVGFEConvolveMatrixElement.orderX documentation> 
+getOrderX ::
+          (MonadDOM m) =>
+            SVGFEConvolveMatrixElement -> m (Maybe SVGAnimatedInteger)
+getOrderX self = liftDOM ((self ^. js "orderX") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.orderY Mozilla SVGFEConvolveMatrixElement.orderY documentation> 
+getOrderY ::
+          (MonadDOM m) =>
+            SVGFEConvolveMatrixElement -> m (Maybe SVGAnimatedInteger)
+getOrderY self = liftDOM ((self ^. js "orderY") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.kernelMatrix Mozilla SVGFEConvolveMatrixElement.kernelMatrix documentation> 
+getKernelMatrix ::
+                (MonadDOM m) =>
+                  SVGFEConvolveMatrixElement -> m (Maybe SVGAnimatedNumberList)
+getKernelMatrix self
+  = liftDOM ((self ^. js "kernelMatrix") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.divisor Mozilla SVGFEConvolveMatrixElement.divisor documentation> 
+getDivisor ::
+           (MonadDOM m) =>
+             SVGFEConvolveMatrixElement -> m (Maybe SVGAnimatedNumber)
+getDivisor self = liftDOM ((self ^. js "divisor") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.bias Mozilla SVGFEConvolveMatrixElement.bias documentation> 
+getBias ::
+        (MonadDOM m) =>
+          SVGFEConvolveMatrixElement -> m (Maybe SVGAnimatedNumber)
+getBias self = liftDOM ((self ^. js "bias") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.targetX Mozilla SVGFEConvolveMatrixElement.targetX documentation> 
+getTargetX ::
+           (MonadDOM m) =>
+             SVGFEConvolveMatrixElement -> m (Maybe SVGAnimatedInteger)
+getTargetX self = liftDOM ((self ^. js "targetX") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.targetY Mozilla SVGFEConvolveMatrixElement.targetY documentation> 
+getTargetY ::
+           (MonadDOM m) =>
+             SVGFEConvolveMatrixElement -> m (Maybe SVGAnimatedInteger)
+getTargetY self = liftDOM ((self ^. js "targetY") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.edgeMode Mozilla SVGFEConvolveMatrixElement.edgeMode documentation> 
+getEdgeMode ::
+            (MonadDOM m) =>
+              SVGFEConvolveMatrixElement -> m (Maybe SVGAnimatedEnumeration)
+getEdgeMode self = liftDOM ((self ^. js "edgeMode") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.kernelUnitLengthX Mozilla SVGFEConvolveMatrixElement.kernelUnitLengthX documentation> 
+getKernelUnitLengthX ::
+                     (MonadDOM m) =>
+                       SVGFEConvolveMatrixElement -> m (Maybe SVGAnimatedNumber)
+getKernelUnitLengthX self
+  = liftDOM ((self ^. js "kernelUnitLengthX") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.kernelUnitLengthY Mozilla SVGFEConvolveMatrixElement.kernelUnitLengthY documentation> 
+getKernelUnitLengthY ::
+                     (MonadDOM m) =>
+                       SVGFEConvolveMatrixElement -> m (Maybe SVGAnimatedNumber)
+getKernelUnitLengthY self
+  = liftDOM ((self ^. js "kernelUnitLengthY") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.preserveAlpha Mozilla SVGFEConvolveMatrixElement.preserveAlpha documentation> 
+getPreserveAlpha ::
+                 (MonadDOM m) =>
+                   SVGFEConvolveMatrixElement -> m (Maybe SVGAnimatedBoolean)
+getPreserveAlpha self
+  = liftDOM ((self ^. js "preserveAlpha") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGFEDiffuseLightingElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGFEDiffuseLightingElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGFEDiffuseLightingElement.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGFEDiffuseLightingElement
+       (getIn1, getSurfaceScale, getDiffuseConstant, getKernelUnitLengthX,
+        getKernelUnitLengthY, SVGFEDiffuseLightingElement,
+        castToSVGFEDiffuseLightingElement,
+        gTypeSVGFEDiffuseLightingElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDiffuseLightingElement.in1 Mozilla SVGFEDiffuseLightingElement.in1 documentation> 
+getIn1 ::
+       (MonadDOM m) =>
+         SVGFEDiffuseLightingElement -> m (Maybe SVGAnimatedString)
+getIn1 self = liftDOM ((self ^. js "in1") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDiffuseLightingElement.surfaceScale Mozilla SVGFEDiffuseLightingElement.surfaceScale documentation> 
+getSurfaceScale ::
+                (MonadDOM m) =>
+                  SVGFEDiffuseLightingElement -> m (Maybe SVGAnimatedNumber)
+getSurfaceScale self
+  = liftDOM ((self ^. js "surfaceScale") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDiffuseLightingElement.diffuseConstant Mozilla SVGFEDiffuseLightingElement.diffuseConstant documentation> 
+getDiffuseConstant ::
+                   (MonadDOM m) =>
+                     SVGFEDiffuseLightingElement -> m (Maybe SVGAnimatedNumber)
+getDiffuseConstant self
+  = liftDOM ((self ^. js "diffuseConstant") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDiffuseLightingElement.kernelUnitLengthX Mozilla SVGFEDiffuseLightingElement.kernelUnitLengthX documentation> 
+getKernelUnitLengthX ::
+                     (MonadDOM m) =>
+                       SVGFEDiffuseLightingElement -> m (Maybe SVGAnimatedNumber)
+getKernelUnitLengthX self
+  = liftDOM ((self ^. js "kernelUnitLengthX") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDiffuseLightingElement.kernelUnitLengthY Mozilla SVGFEDiffuseLightingElement.kernelUnitLengthY documentation> 
+getKernelUnitLengthY ::
+                     (MonadDOM m) =>
+                       SVGFEDiffuseLightingElement -> m (Maybe SVGAnimatedNumber)
+getKernelUnitLengthY self
+  = liftDOM ((self ^. js "kernelUnitLengthY") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGFEDisplacementMapElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGFEDisplacementMapElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGFEDisplacementMapElement.hs
@@ -0,0 +1,57 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGFEDisplacementMapElement
+       (pattern SVG_CHANNEL_UNKNOWN, pattern SVG_CHANNEL_R,
+        pattern SVG_CHANNEL_G, pattern SVG_CHANNEL_B,
+        pattern SVG_CHANNEL_A, getIn1, getIn2, getScale,
+        getXChannelSelector, getYChannelSelector,
+        SVGFEDisplacementMapElement, castToSVGFEDisplacementMapElement,
+        gTypeSVGFEDisplacementMapElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+pattern SVG_CHANNEL_UNKNOWN = 0
+pattern SVG_CHANNEL_R = 1
+pattern SVG_CHANNEL_G = 2
+pattern SVG_CHANNEL_B = 3
+pattern SVG_CHANNEL_A = 4
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDisplacementMapElement.in1 Mozilla SVGFEDisplacementMapElement.in1 documentation> 
+getIn1 ::
+       (MonadDOM m) =>
+         SVGFEDisplacementMapElement -> m (Maybe SVGAnimatedString)
+getIn1 self = liftDOM ((self ^. js "in1") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDisplacementMapElement.in2 Mozilla SVGFEDisplacementMapElement.in2 documentation> 
+getIn2 ::
+       (MonadDOM m) =>
+         SVGFEDisplacementMapElement -> m (Maybe SVGAnimatedString)
+getIn2 self = liftDOM ((self ^. js "in2") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDisplacementMapElement.scale Mozilla SVGFEDisplacementMapElement.scale documentation> 
+getScale ::
+         (MonadDOM m) =>
+           SVGFEDisplacementMapElement -> m (Maybe SVGAnimatedNumber)
+getScale self = liftDOM ((self ^. js "scale") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDisplacementMapElement.xChannelSelector Mozilla SVGFEDisplacementMapElement.xChannelSelector documentation> 
+getXChannelSelector ::
+                    (MonadDOM m) =>
+                      SVGFEDisplacementMapElement -> m (Maybe SVGAnimatedEnumeration)
+getXChannelSelector self
+  = liftDOM ((self ^. js "xChannelSelector") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDisplacementMapElement.yChannelSelector Mozilla SVGFEDisplacementMapElement.yChannelSelector documentation> 
+getYChannelSelector ::
+                    (MonadDOM m) =>
+                      SVGFEDisplacementMapElement -> m (Maybe SVGAnimatedEnumeration)
+getYChannelSelector self
+  = liftDOM ((self ^. js "yChannelSelector") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGFEDistantLightElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGFEDistantLightElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGFEDistantLightElement.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGFEDistantLightElement
+       (getAzimuth, getElevation, SVGFEDistantLightElement,
+        castToSVGFEDistantLightElement, gTypeSVGFEDistantLightElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDistantLightElement.azimuth Mozilla SVGFEDistantLightElement.azimuth documentation> 
+getAzimuth ::
+           (MonadDOM m) =>
+             SVGFEDistantLightElement -> m (Maybe SVGAnimatedNumber)
+getAzimuth self = liftDOM ((self ^. js "azimuth") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDistantLightElement.elevation Mozilla SVGFEDistantLightElement.elevation documentation> 
+getElevation ::
+             (MonadDOM m) =>
+               SVGFEDistantLightElement -> m (Maybe SVGAnimatedNumber)
+getElevation self
+  = liftDOM ((self ^. js "elevation") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGFEDropShadowElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGFEDropShadowElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGFEDropShadowElement.hs
@@ -0,0 +1,58 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGFEDropShadowElement
+       (setStdDeviation, getIn1, getDx, getDy, getStdDeviationX,
+        getStdDeviationY, SVGFEDropShadowElement,
+        castToSVGFEDropShadowElement, gTypeSVGFEDropShadowElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDropShadowElement.setStdDeviation Mozilla SVGFEDropShadowElement.setStdDeviation documentation> 
+setStdDeviation ::
+                (MonadDOM m) => SVGFEDropShadowElement -> Float -> Float -> m ()
+setStdDeviation self stdDeviationX stdDeviationY
+  = liftDOM
+      (void
+         (self ^. jsf "setStdDeviation"
+            [toJSVal stdDeviationX, toJSVal stdDeviationY]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDropShadowElement.in1 Mozilla SVGFEDropShadowElement.in1 documentation> 
+getIn1 ::
+       (MonadDOM m) =>
+         SVGFEDropShadowElement -> m (Maybe SVGAnimatedString)
+getIn1 self = liftDOM ((self ^. js "in1") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDropShadowElement.dx Mozilla SVGFEDropShadowElement.dx documentation> 
+getDx ::
+      (MonadDOM m) =>
+        SVGFEDropShadowElement -> m (Maybe SVGAnimatedNumber)
+getDx self = liftDOM ((self ^. js "dx") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDropShadowElement.dy Mozilla SVGFEDropShadowElement.dy documentation> 
+getDy ::
+      (MonadDOM m) =>
+        SVGFEDropShadowElement -> m (Maybe SVGAnimatedNumber)
+getDy self = liftDOM ((self ^. js "dy") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDropShadowElement.stdDeviationX Mozilla SVGFEDropShadowElement.stdDeviationX documentation> 
+getStdDeviationX ::
+                 (MonadDOM m) =>
+                   SVGFEDropShadowElement -> m (Maybe SVGAnimatedNumber)
+getStdDeviationX self
+  = liftDOM ((self ^. js "stdDeviationX") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDropShadowElement.stdDeviationY Mozilla SVGFEDropShadowElement.stdDeviationY documentation> 
+getStdDeviationY ::
+                 (MonadDOM m) =>
+                   SVGFEDropShadowElement -> m (Maybe SVGAnimatedNumber)
+getStdDeviationY self
+  = liftDOM ((self ^. js "stdDeviationY") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGFEGaussianBlurElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGFEGaussianBlurElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGFEGaussianBlurElement.hs
@@ -0,0 +1,58 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGFEGaussianBlurElement
+       (setStdDeviation, pattern SVG_EDGEMODE_UNKNOWN,
+        pattern SVG_EDGEMODE_DUPLICATE, pattern SVG_EDGEMODE_WRAP,
+        pattern SVG_EDGEMODE_NONE, getIn1, getStdDeviationX,
+        getStdDeviationY, getEdgeMode, SVGFEGaussianBlurElement,
+        castToSVGFEGaussianBlurElement, gTypeSVGFEGaussianBlurElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEGaussianBlurElement.setStdDeviation Mozilla SVGFEGaussianBlurElement.setStdDeviation documentation> 
+setStdDeviation ::
+                (MonadDOM m) => SVGFEGaussianBlurElement -> Float -> Float -> m ()
+setStdDeviation self stdDeviationX stdDeviationY
+  = liftDOM
+      (void
+         (self ^. jsf "setStdDeviation"
+            [toJSVal stdDeviationX, toJSVal stdDeviationY]))
+pattern SVG_EDGEMODE_UNKNOWN = 0
+pattern SVG_EDGEMODE_DUPLICATE = 1
+pattern SVG_EDGEMODE_WRAP = 2
+pattern SVG_EDGEMODE_NONE = 3
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEGaussianBlurElement.in1 Mozilla SVGFEGaussianBlurElement.in1 documentation> 
+getIn1 ::
+       (MonadDOM m) =>
+         SVGFEGaussianBlurElement -> m (Maybe SVGAnimatedString)
+getIn1 self = liftDOM ((self ^. js "in1") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEGaussianBlurElement.stdDeviationX Mozilla SVGFEGaussianBlurElement.stdDeviationX documentation> 
+getStdDeviationX ::
+                 (MonadDOM m) =>
+                   SVGFEGaussianBlurElement -> m (Maybe SVGAnimatedNumber)
+getStdDeviationX self
+  = liftDOM ((self ^. js "stdDeviationX") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEGaussianBlurElement.stdDeviationY Mozilla SVGFEGaussianBlurElement.stdDeviationY documentation> 
+getStdDeviationY ::
+                 (MonadDOM m) =>
+                   SVGFEGaussianBlurElement -> m (Maybe SVGAnimatedNumber)
+getStdDeviationY self
+  = liftDOM ((self ^. js "stdDeviationY") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEGaussianBlurElement.edgeMode Mozilla SVGFEGaussianBlurElement.edgeMode documentation> 
+getEdgeMode ::
+            (MonadDOM m) =>
+              SVGFEGaussianBlurElement -> m (Maybe SVGAnimatedEnumeration)
+getEdgeMode self = liftDOM ((self ^. js "edgeMode") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGFEImageElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGFEImageElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGFEImageElement.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGFEImageElement
+       (getPreserveAspectRatio, SVGFEImageElement,
+        castToSVGFEImageElement, gTypeSVGFEImageElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEImageElement.preserveAspectRatio Mozilla SVGFEImageElement.preserveAspectRatio documentation> 
+getPreserveAspectRatio ::
+                       (MonadDOM m) =>
+                         SVGFEImageElement -> m (Maybe SVGAnimatedPreserveAspectRatio)
+getPreserveAspectRatio self
+  = liftDOM ((self ^. js "preserveAspectRatio") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGFEMergeNodeElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGFEMergeNodeElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGFEMergeNodeElement.hs
@@ -0,0 +1,22 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGFEMergeNodeElement
+       (getIn1, SVGFEMergeNodeElement, castToSVGFEMergeNodeElement,
+        gTypeSVGFEMergeNodeElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEMergeNodeElement.in1 Mozilla SVGFEMergeNodeElement.in1 documentation> 
+getIn1 ::
+       (MonadDOM m) =>
+         SVGFEMergeNodeElement -> m (Maybe SVGAnimatedString)
+getIn1 self = liftDOM ((self ^. js "in1") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGFEMorphologyElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGFEMorphologyElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGFEMorphologyElement.hs
@@ -0,0 +1,53 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGFEMorphologyElement
+       (setRadius, pattern SVG_MORPHOLOGY_OPERATOR_UNKNOWN,
+        pattern SVG_MORPHOLOGY_OPERATOR_ERODE,
+        pattern SVG_MORPHOLOGY_OPERATOR_DILATE, getIn1, getOperator,
+        getRadiusX, getRadiusY, SVGFEMorphologyElement,
+        castToSVGFEMorphologyElement, gTypeSVGFEMorphologyElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEMorphologyElement.setRadius Mozilla SVGFEMorphologyElement.setRadius documentation> 
+setRadius ::
+          (MonadDOM m) => SVGFEMorphologyElement -> Float -> Float -> m ()
+setRadius self radiusX radiusY
+  = liftDOM
+      (void (self ^. jsf "setRadius" [toJSVal radiusX, toJSVal radiusY]))
+pattern SVG_MORPHOLOGY_OPERATOR_UNKNOWN = 0
+pattern SVG_MORPHOLOGY_OPERATOR_ERODE = 1
+pattern SVG_MORPHOLOGY_OPERATOR_DILATE = 2
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEMorphologyElement.in1 Mozilla SVGFEMorphologyElement.in1 documentation> 
+getIn1 ::
+       (MonadDOM m) =>
+         SVGFEMorphologyElement -> m (Maybe SVGAnimatedString)
+getIn1 self = liftDOM ((self ^. js "in1") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEMorphologyElement.operator Mozilla SVGFEMorphologyElement.operator documentation> 
+getOperator ::
+            (MonadDOM m) =>
+              SVGFEMorphologyElement -> m (Maybe SVGAnimatedEnumeration)
+getOperator self = liftDOM ((self ^. js "operator") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEMorphologyElement.radiusX Mozilla SVGFEMorphologyElement.radiusX documentation> 
+getRadiusX ::
+           (MonadDOM m) =>
+             SVGFEMorphologyElement -> m (Maybe SVGAnimatedNumber)
+getRadiusX self = liftDOM ((self ^. js "radiusX") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEMorphologyElement.radiusY Mozilla SVGFEMorphologyElement.radiusY documentation> 
+getRadiusY ::
+           (MonadDOM m) =>
+             SVGFEMorphologyElement -> m (Maybe SVGAnimatedNumber)
+getRadiusY self = liftDOM ((self ^. js "radiusY") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGFEOffsetElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGFEOffsetElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGFEOffsetElement.hs
@@ -0,0 +1,31 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGFEOffsetElement
+       (getIn1, getDx, getDy, SVGFEOffsetElement,
+        castToSVGFEOffsetElement, gTypeSVGFEOffsetElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEOffsetElement.in1 Mozilla SVGFEOffsetElement.in1 documentation> 
+getIn1 ::
+       (MonadDOM m) => SVGFEOffsetElement -> m (Maybe SVGAnimatedString)
+getIn1 self = liftDOM ((self ^. js "in1") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEOffsetElement.dx Mozilla SVGFEOffsetElement.dx documentation> 
+getDx ::
+      (MonadDOM m) => SVGFEOffsetElement -> m (Maybe SVGAnimatedNumber)
+getDx self = liftDOM ((self ^. js "dx") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEOffsetElement.dy Mozilla SVGFEOffsetElement.dy documentation> 
+getDy ::
+      (MonadDOM m) => SVGFEOffsetElement -> m (Maybe SVGAnimatedNumber)
+getDy self = liftDOM ((self ^. js "dy") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGFEPointLightElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGFEPointLightElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGFEPointLightElement.hs
@@ -0,0 +1,34 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGFEPointLightElement
+       (getX, getY, getZ, SVGFEPointLightElement,
+        castToSVGFEPointLightElement, gTypeSVGFEPointLightElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEPointLightElement.x Mozilla SVGFEPointLightElement.x documentation> 
+getX ::
+     (MonadDOM m) =>
+       SVGFEPointLightElement -> m (Maybe SVGAnimatedNumber)
+getX self = liftDOM ((self ^. js "x") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEPointLightElement.y Mozilla SVGFEPointLightElement.y documentation> 
+getY ::
+     (MonadDOM m) =>
+       SVGFEPointLightElement -> m (Maybe SVGAnimatedNumber)
+getY self = liftDOM ((self ^. js "y") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEPointLightElement.z Mozilla SVGFEPointLightElement.z documentation> 
+getZ ::
+     (MonadDOM m) =>
+       SVGFEPointLightElement -> m (Maybe SVGAnimatedNumber)
+getZ self = liftDOM ((self ^. js "z") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGFESpecularLightingElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGFESpecularLightingElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGFESpecularLightingElement.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGFESpecularLightingElement
+       (getIn1, getSurfaceScale, getSpecularConstant, getSpecularExponent,
+        SVGFESpecularLightingElement, castToSVGFESpecularLightingElement,
+        gTypeSVGFESpecularLightingElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpecularLightingElement.in1 Mozilla SVGFESpecularLightingElement.in1 documentation> 
+getIn1 ::
+       (MonadDOM m) =>
+         SVGFESpecularLightingElement -> m (Maybe SVGAnimatedString)
+getIn1 self = liftDOM ((self ^. js "in1") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpecularLightingElement.surfaceScale Mozilla SVGFESpecularLightingElement.surfaceScale documentation> 
+getSurfaceScale ::
+                (MonadDOM m) =>
+                  SVGFESpecularLightingElement -> m (Maybe SVGAnimatedNumber)
+getSurfaceScale self
+  = liftDOM ((self ^. js "surfaceScale") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpecularLightingElement.specularConstant Mozilla SVGFESpecularLightingElement.specularConstant documentation> 
+getSpecularConstant ::
+                    (MonadDOM m) =>
+                      SVGFESpecularLightingElement -> m (Maybe SVGAnimatedNumber)
+getSpecularConstant self
+  = liftDOM ((self ^. js "specularConstant") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpecularLightingElement.specularExponent Mozilla SVGFESpecularLightingElement.specularExponent documentation> 
+getSpecularExponent ::
+                    (MonadDOM m) =>
+                      SVGFESpecularLightingElement -> m (Maybe SVGAnimatedNumber)
+getSpecularExponent self
+  = liftDOM ((self ^. js "specularExponent") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGFESpotLightElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGFESpotLightElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGFESpotLightElement.hs
@@ -0,0 +1,70 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGFESpotLightElement
+       (getX, getY, getZ, getPointsAtX, getPointsAtY, getPointsAtZ,
+        getSpecularExponent, getLimitingConeAngle, SVGFESpotLightElement,
+        castToSVGFESpotLightElement, gTypeSVGFESpotLightElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpotLightElement.x Mozilla SVGFESpotLightElement.x documentation> 
+getX ::
+     (MonadDOM m) =>
+       SVGFESpotLightElement -> m (Maybe SVGAnimatedNumber)
+getX self = liftDOM ((self ^. js "x") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpotLightElement.y Mozilla SVGFESpotLightElement.y documentation> 
+getY ::
+     (MonadDOM m) =>
+       SVGFESpotLightElement -> m (Maybe SVGAnimatedNumber)
+getY self = liftDOM ((self ^. js "y") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpotLightElement.z Mozilla SVGFESpotLightElement.z documentation> 
+getZ ::
+     (MonadDOM m) =>
+       SVGFESpotLightElement -> m (Maybe SVGAnimatedNumber)
+getZ self = liftDOM ((self ^. js "z") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpotLightElement.pointsAtX Mozilla SVGFESpotLightElement.pointsAtX documentation> 
+getPointsAtX ::
+             (MonadDOM m) =>
+               SVGFESpotLightElement -> m (Maybe SVGAnimatedNumber)
+getPointsAtX self
+  = liftDOM ((self ^. js "pointsAtX") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpotLightElement.pointsAtY Mozilla SVGFESpotLightElement.pointsAtY documentation> 
+getPointsAtY ::
+             (MonadDOM m) =>
+               SVGFESpotLightElement -> m (Maybe SVGAnimatedNumber)
+getPointsAtY self
+  = liftDOM ((self ^. js "pointsAtY") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpotLightElement.pointsAtZ Mozilla SVGFESpotLightElement.pointsAtZ documentation> 
+getPointsAtZ ::
+             (MonadDOM m) =>
+               SVGFESpotLightElement -> m (Maybe SVGAnimatedNumber)
+getPointsAtZ self
+  = liftDOM ((self ^. js "pointsAtZ") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpotLightElement.specularExponent Mozilla SVGFESpotLightElement.specularExponent documentation> 
+getSpecularExponent ::
+                    (MonadDOM m) =>
+                      SVGFESpotLightElement -> m (Maybe SVGAnimatedNumber)
+getSpecularExponent self
+  = liftDOM ((self ^. js "specularExponent") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpotLightElement.limitingConeAngle Mozilla SVGFESpotLightElement.limitingConeAngle documentation> 
+getLimitingConeAngle ::
+                     (MonadDOM m) =>
+                       SVGFESpotLightElement -> m (Maybe SVGAnimatedNumber)
+getLimitingConeAngle self
+  = liftDOM ((self ^. js "limitingConeAngle") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGFETileElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGFETileElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGFETileElement.hs
@@ -0,0 +1,21 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGFETileElement
+       (getIn1, SVGFETileElement, castToSVGFETileElement,
+        gTypeSVGFETileElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFETileElement.in1 Mozilla SVGFETileElement.in1 documentation> 
+getIn1 ::
+       (MonadDOM m) => SVGFETileElement -> m (Maybe SVGAnimatedString)
+getIn1 self = liftDOM ((self ^. js "in1") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGFETurbulenceElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGFETurbulenceElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGFETurbulenceElement.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGFETurbulenceElement
+       (pattern SVG_TURBULENCE_TYPE_UNKNOWN,
+        pattern SVG_TURBULENCE_TYPE_FRACTALNOISE,
+        pattern SVG_TURBULENCE_TYPE_TURBULENCE,
+        pattern SVG_STITCHTYPE_UNKNOWN, pattern SVG_STITCHTYPE_STITCH,
+        pattern SVG_STITCHTYPE_NOSTITCH, getBaseFrequencyX,
+        getBaseFrequencyY, getNumOctaves, getSeed, getStitchTiles, getType,
+        SVGFETurbulenceElement, castToSVGFETurbulenceElement,
+        gTypeSVGFETurbulenceElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+pattern SVG_TURBULENCE_TYPE_UNKNOWN = 0
+pattern SVG_TURBULENCE_TYPE_FRACTALNOISE = 1
+pattern SVG_TURBULENCE_TYPE_TURBULENCE = 2
+pattern SVG_STITCHTYPE_UNKNOWN = 0
+pattern SVG_STITCHTYPE_STITCH = 1
+pattern SVG_STITCHTYPE_NOSTITCH = 2
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFETurbulenceElement.baseFrequencyX Mozilla SVGFETurbulenceElement.baseFrequencyX documentation> 
+getBaseFrequencyX ::
+                  (MonadDOM m) =>
+                    SVGFETurbulenceElement -> m (Maybe SVGAnimatedNumber)
+getBaseFrequencyX self
+  = liftDOM ((self ^. js "baseFrequencyX") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFETurbulenceElement.baseFrequencyY Mozilla SVGFETurbulenceElement.baseFrequencyY documentation> 
+getBaseFrequencyY ::
+                  (MonadDOM m) =>
+                    SVGFETurbulenceElement -> m (Maybe SVGAnimatedNumber)
+getBaseFrequencyY self
+  = liftDOM ((self ^. js "baseFrequencyY") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFETurbulenceElement.numOctaves Mozilla SVGFETurbulenceElement.numOctaves documentation> 
+getNumOctaves ::
+              (MonadDOM m) =>
+                SVGFETurbulenceElement -> m (Maybe SVGAnimatedInteger)
+getNumOctaves self
+  = liftDOM ((self ^. js "numOctaves") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFETurbulenceElement.seed Mozilla SVGFETurbulenceElement.seed documentation> 
+getSeed ::
+        (MonadDOM m) =>
+          SVGFETurbulenceElement -> m (Maybe SVGAnimatedNumber)
+getSeed self = liftDOM ((self ^. js "seed") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFETurbulenceElement.stitchTiles Mozilla SVGFETurbulenceElement.stitchTiles documentation> 
+getStitchTiles ::
+               (MonadDOM m) =>
+                 SVGFETurbulenceElement -> m (Maybe SVGAnimatedEnumeration)
+getStitchTiles self
+  = liftDOM ((self ^. js "stitchTiles") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFETurbulenceElement.type Mozilla SVGFETurbulenceElement.type documentation> 
+getType ::
+        (MonadDOM m) =>
+          SVGFETurbulenceElement -> m (Maybe SVGAnimatedEnumeration)
+getType self = liftDOM ((self ^. js "type") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGFilterElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGFilterElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGFilterElement.hs
@@ -0,0 +1,72 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGFilterElement
+       (setFilterRes, getFilterUnits, getPrimitiveUnits, getX, getY,
+        getWidth, getHeight, getFilterResX, getFilterResY,
+        SVGFilterElement, castToSVGFilterElement, gTypeSVGFilterElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterElement.setFilterRes Mozilla SVGFilterElement.setFilterRes documentation> 
+setFilterRes ::
+             (MonadDOM m) => SVGFilterElement -> Word -> Word -> m ()
+setFilterRes self filterResX filterResY
+  = liftDOM
+      (void
+         (self ^. jsf "setFilterRes"
+            [toJSVal filterResX, toJSVal filterResY]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterElement.filterUnits Mozilla SVGFilterElement.filterUnits documentation> 
+getFilterUnits ::
+               (MonadDOM m) =>
+                 SVGFilterElement -> m (Maybe SVGAnimatedEnumeration)
+getFilterUnits self
+  = liftDOM ((self ^. js "filterUnits") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterElement.primitiveUnits Mozilla SVGFilterElement.primitiveUnits documentation> 
+getPrimitiveUnits ::
+                  (MonadDOM m) =>
+                    SVGFilterElement -> m (Maybe SVGAnimatedEnumeration)
+getPrimitiveUnits self
+  = liftDOM ((self ^. js "primitiveUnits") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterElement.x Mozilla SVGFilterElement.x documentation> 
+getX ::
+     (MonadDOM m) => SVGFilterElement -> m (Maybe SVGAnimatedLength)
+getX self = liftDOM ((self ^. js "x") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterElement.y Mozilla SVGFilterElement.y documentation> 
+getY ::
+     (MonadDOM m) => SVGFilterElement -> m (Maybe SVGAnimatedLength)
+getY self = liftDOM ((self ^. js "y") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterElement.width Mozilla SVGFilterElement.width documentation> 
+getWidth ::
+         (MonadDOM m) => SVGFilterElement -> m (Maybe SVGAnimatedLength)
+getWidth self = liftDOM ((self ^. js "width") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterElement.height Mozilla SVGFilterElement.height documentation> 
+getHeight ::
+          (MonadDOM m) => SVGFilterElement -> m (Maybe SVGAnimatedLength)
+getHeight self = liftDOM ((self ^. js "height") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterElement.filterResX Mozilla SVGFilterElement.filterResX documentation> 
+getFilterResX ::
+              (MonadDOM m) => SVGFilterElement -> m (Maybe SVGAnimatedInteger)
+getFilterResX self
+  = liftDOM ((self ^. js "filterResX") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterElement.filterResY Mozilla SVGFilterElement.filterResY documentation> 
+getFilterResY ::
+              (MonadDOM m) => SVGFilterElement -> m (Maybe SVGAnimatedInteger)
+getFilterResY self
+  = liftDOM ((self ^. js "filterResY") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGFilterPrimitiveStandardAttributes.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGFilterPrimitiveStandardAttributes.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGFilterPrimitiveStandardAttributes.hs
@@ -0,0 +1,48 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGFilterPrimitiveStandardAttributes
+       (getX, getY, getWidth, getHeight, getResult,
+        SVGFilterPrimitiveStandardAttributes,
+        castToSVGFilterPrimitiveStandardAttributes,
+        gTypeSVGFilterPrimitiveStandardAttributes)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterPrimitiveStandardAttributes.x Mozilla SVGFilterPrimitiveStandardAttributes.x documentation> 
+getX ::
+     (MonadDOM m) =>
+       SVGFilterPrimitiveStandardAttributes -> m (Maybe SVGAnimatedLength)
+getX self = liftDOM ((self ^. js "x") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterPrimitiveStandardAttributes.y Mozilla SVGFilterPrimitiveStandardAttributes.y documentation> 
+getY ::
+     (MonadDOM m) =>
+       SVGFilterPrimitiveStandardAttributes -> m (Maybe SVGAnimatedLength)
+getY self = liftDOM ((self ^. js "y") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterPrimitiveStandardAttributes.width Mozilla SVGFilterPrimitiveStandardAttributes.width documentation> 
+getWidth ::
+         (MonadDOM m) =>
+           SVGFilterPrimitiveStandardAttributes -> m (Maybe SVGAnimatedLength)
+getWidth self = liftDOM ((self ^. js "width") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterPrimitiveStandardAttributes.height Mozilla SVGFilterPrimitiveStandardAttributes.height documentation> 
+getHeight ::
+          (MonadDOM m) =>
+            SVGFilterPrimitiveStandardAttributes -> m (Maybe SVGAnimatedLength)
+getHeight self = liftDOM ((self ^. js "height") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterPrimitiveStandardAttributes.result Mozilla SVGFilterPrimitiveStandardAttributes.result documentation> 
+getResult ::
+          (MonadDOM m) =>
+            SVGFilterPrimitiveStandardAttributes -> m (Maybe SVGAnimatedString)
+getResult self = liftDOM ((self ^. js "result") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGFitToViewBox.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGFitToViewBox.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGFitToViewBox.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGFitToViewBox
+       (getViewBox, getPreserveAspectRatio, SVGFitToViewBox,
+        castToSVGFitToViewBox, gTypeSVGFitToViewBox)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFitToViewBox.viewBox Mozilla SVGFitToViewBox.viewBox documentation> 
+getViewBox ::
+           (MonadDOM m) => SVGFitToViewBox -> m (Maybe SVGAnimatedRect)
+getViewBox self = liftDOM ((self ^. js "viewBox") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFitToViewBox.preserveAspectRatio Mozilla SVGFitToViewBox.preserveAspectRatio documentation> 
+getPreserveAspectRatio ::
+                       (MonadDOM m) =>
+                         SVGFitToViewBox -> m (Maybe SVGAnimatedPreserveAspectRatio)
+getPreserveAspectRatio self
+  = liftDOM ((self ^. js "preserveAspectRatio") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGForeignObjectElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGForeignObjectElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGForeignObjectElement.hs
@@ -0,0 +1,40 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGForeignObjectElement
+       (getX, getY, getWidth, getHeight, SVGForeignObjectElement,
+        castToSVGForeignObjectElement, gTypeSVGForeignObjectElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGForeignObjectElement.x Mozilla SVGForeignObjectElement.x documentation> 
+getX ::
+     (MonadDOM m) =>
+       SVGForeignObjectElement -> m (Maybe SVGAnimatedLength)
+getX self = liftDOM ((self ^. js "x") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGForeignObjectElement.y Mozilla SVGForeignObjectElement.y documentation> 
+getY ::
+     (MonadDOM m) =>
+       SVGForeignObjectElement -> m (Maybe SVGAnimatedLength)
+getY self = liftDOM ((self ^. js "y") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGForeignObjectElement.width Mozilla SVGForeignObjectElement.width documentation> 
+getWidth ::
+         (MonadDOM m) =>
+           SVGForeignObjectElement -> m (Maybe SVGAnimatedLength)
+getWidth self = liftDOM ((self ^. js "width") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGForeignObjectElement.height Mozilla SVGForeignObjectElement.height documentation> 
+getHeight ::
+          (MonadDOM m) =>
+            SVGForeignObjectElement -> m (Maybe SVGAnimatedLength)
+getHeight self = liftDOM ((self ^. js "height") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGGlyphRefElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGGlyphRefElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGGlyphRefElement.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGGlyphRefElement
+       (setGlyphRef, getGlyphRef, setFormat, getFormat, setX, getX, setY,
+        getY, setDx, getDx, setDy, getDy, SVGGlyphRefElement,
+        castToSVGGlyphRefElement, gTypeSVGGlyphRefElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGlyphRefElement.glyphRef Mozilla SVGGlyphRefElement.glyphRef documentation> 
+setGlyphRef ::
+            (MonadDOM m, ToJSString val) => SVGGlyphRefElement -> val -> m ()
+setGlyphRef self val
+  = liftDOM (self ^. jss "glyphRef" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGlyphRefElement.glyphRef Mozilla SVGGlyphRefElement.glyphRef documentation> 
+getGlyphRef ::
+            (MonadDOM m, FromJSString result) => SVGGlyphRefElement -> m result
+getGlyphRef self
+  = liftDOM ((self ^. js "glyphRef") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGlyphRefElement.format Mozilla SVGGlyphRefElement.format documentation> 
+setFormat ::
+          (MonadDOM m, ToJSString val) => SVGGlyphRefElement -> val -> m ()
+setFormat self val = liftDOM (self ^. jss "format" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGlyphRefElement.format Mozilla SVGGlyphRefElement.format documentation> 
+getFormat ::
+          (MonadDOM m, FromJSString result) => SVGGlyphRefElement -> m result
+getFormat self
+  = liftDOM ((self ^. js "format") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGlyphRefElement.x Mozilla SVGGlyphRefElement.x documentation> 
+setX :: (MonadDOM m) => SVGGlyphRefElement -> Float -> m ()
+setX self val = liftDOM (self ^. jss "x" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGlyphRefElement.x Mozilla SVGGlyphRefElement.x documentation> 
+getX :: (MonadDOM m) => SVGGlyphRefElement -> m Float
+getX self
+  = liftDOM (realToFrac <$> ((self ^. js "x") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGlyphRefElement.y Mozilla SVGGlyphRefElement.y documentation> 
+setY :: (MonadDOM m) => SVGGlyphRefElement -> Float -> m ()
+setY self val = liftDOM (self ^. jss "y" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGlyphRefElement.y Mozilla SVGGlyphRefElement.y documentation> 
+getY :: (MonadDOM m) => SVGGlyphRefElement -> m Float
+getY self
+  = liftDOM (realToFrac <$> ((self ^. js "y") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGlyphRefElement.dx Mozilla SVGGlyphRefElement.dx documentation> 
+setDx :: (MonadDOM m) => SVGGlyphRefElement -> Float -> m ()
+setDx self val = liftDOM (self ^. jss "dx" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGlyphRefElement.dx Mozilla SVGGlyphRefElement.dx documentation> 
+getDx :: (MonadDOM m) => SVGGlyphRefElement -> m Float
+getDx self
+  = liftDOM (realToFrac <$> ((self ^. js "dx") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGlyphRefElement.dy Mozilla SVGGlyphRefElement.dy documentation> 
+setDy :: (MonadDOM m) => SVGGlyphRefElement -> Float -> m ()
+setDy self val = liftDOM (self ^. jss "dy" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGlyphRefElement.dy Mozilla SVGGlyphRefElement.dy documentation> 
+getDy :: (MonadDOM m) => SVGGlyphRefElement -> m Float
+getDy self
+  = liftDOM (realToFrac <$> ((self ^. js "dy") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGGradientElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGGradientElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGGradientElement.hs
@@ -0,0 +1,49 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGGradientElement
+       (pattern SVG_SPREADMETHOD_UNKNOWN, pattern SVG_SPREADMETHOD_PAD,
+        pattern SVG_SPREADMETHOD_REFLECT, pattern SVG_SPREADMETHOD_REPEAT,
+        getGradientUnits, getGradientTransform, getSpreadMethod,
+        SVGGradientElement, castToSVGGradientElement,
+        gTypeSVGGradientElement, IsSVGGradientElement,
+        toSVGGradientElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+pattern SVG_SPREADMETHOD_UNKNOWN = 0
+pattern SVG_SPREADMETHOD_PAD = 1
+pattern SVG_SPREADMETHOD_REFLECT = 2
+pattern SVG_SPREADMETHOD_REPEAT = 3
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGradientElement.gradientUnits Mozilla SVGGradientElement.gradientUnits documentation> 
+getGradientUnits ::
+                 (MonadDOM m, IsSVGGradientElement self) =>
+                   self -> m (Maybe SVGAnimatedEnumeration)
+getGradientUnits self
+  = liftDOM
+      (((toSVGGradientElement self) ^. js "gradientUnits") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGradientElement.gradientTransform Mozilla SVGGradientElement.gradientTransform documentation> 
+getGradientTransform ::
+                     (MonadDOM m, IsSVGGradientElement self) =>
+                       self -> m (Maybe SVGAnimatedTransformList)
+getGradientTransform self
+  = liftDOM
+      (((toSVGGradientElement self) ^. js "gradientTransform") >>=
+         fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGradientElement.spreadMethod Mozilla SVGGradientElement.spreadMethod documentation> 
+getSpreadMethod ::
+                (MonadDOM m, IsSVGGradientElement self) =>
+                  self -> m (Maybe SVGAnimatedEnumeration)
+getSpreadMethod self
+  = liftDOM
+      (((toSVGGradientElement self) ^. js "spreadMethod") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGGraphicsElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGGraphicsElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGGraphicsElement.hs
@@ -0,0 +1,79 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGGraphicsElement
+       (getBBox, getCTM, getScreenCTM, getTransformToElement,
+        getTransform, getNearestViewportElement,
+        getFarthestViewportElement, SVGGraphicsElement,
+        castToSVGGraphicsElement, gTypeSVGGraphicsElement,
+        IsSVGGraphicsElement, toSVGGraphicsElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGraphicsElement.getBBox Mozilla SVGGraphicsElement.getBBox documentation> 
+getBBox ::
+        (MonadDOM m, IsSVGGraphicsElement self) =>
+          self -> m (Maybe SVGRect)
+getBBox self
+  = liftDOM
+      (((toSVGGraphicsElement self) ^. js "getBBox") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGraphicsElement.getCTM Mozilla SVGGraphicsElement.getCTM documentation> 
+getCTM ::
+       (MonadDOM m, IsSVGGraphicsElement self) =>
+         self -> m (Maybe SVGMatrix)
+getCTM self
+  = liftDOM
+      (((toSVGGraphicsElement self) ^. js "getCTM") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGraphicsElement.getScreenCTM Mozilla SVGGraphicsElement.getScreenCTM documentation> 
+getScreenCTM ::
+             (MonadDOM m, IsSVGGraphicsElement self) =>
+               self -> m (Maybe SVGMatrix)
+getScreenCTM self
+  = liftDOM
+      (((toSVGGraphicsElement self) ^. js "getScreenCTM") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGraphicsElement.getTransformToElement Mozilla SVGGraphicsElement.getTransformToElement documentation> 
+getTransformToElement ::
+                      (MonadDOM m, IsSVGGraphicsElement self, IsSVGElement element) =>
+                        self -> Maybe element -> m (Maybe SVGMatrix)
+getTransformToElement self element
+  = liftDOM
+      (((toSVGGraphicsElement self) ^. jsf "getTransformToElement"
+          [toJSVal element])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGraphicsElement.transform Mozilla SVGGraphicsElement.transform documentation> 
+getTransform ::
+             (MonadDOM m, IsSVGGraphicsElement self) =>
+               self -> m (Maybe SVGAnimatedTransformList)
+getTransform self
+  = liftDOM
+      (((toSVGGraphicsElement self) ^. js "transform") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGraphicsElement.nearestViewportElement Mozilla SVGGraphicsElement.nearestViewportElement documentation> 
+getNearestViewportElement ::
+                          (MonadDOM m, IsSVGGraphicsElement self) =>
+                            self -> m (Maybe SVGElement)
+getNearestViewportElement self
+  = liftDOM
+      (((toSVGGraphicsElement self) ^. js "nearestViewportElement") >>=
+         fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGraphicsElement.farthestViewportElement Mozilla SVGGraphicsElement.farthestViewportElement documentation> 
+getFarthestViewportElement ::
+                           (MonadDOM m, IsSVGGraphicsElement self) =>
+                             self -> m (Maybe SVGElement)
+getFarthestViewportElement self
+  = liftDOM
+      (((toSVGGraphicsElement self) ^. js "farthestViewportElement") >>=
+         fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGImageElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGImageElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGImageElement.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGImageElement
+       (getX, getY, getWidth, getHeight, getPreserveAspectRatio,
+        SVGImageElement, castToSVGImageElement, gTypeSVGImageElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGImageElement.x Mozilla SVGImageElement.x documentation> 
+getX ::
+     (MonadDOM m) => SVGImageElement -> m (Maybe SVGAnimatedLength)
+getX self = liftDOM ((self ^. js "x") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGImageElement.y Mozilla SVGImageElement.y documentation> 
+getY ::
+     (MonadDOM m) => SVGImageElement -> m (Maybe SVGAnimatedLength)
+getY self = liftDOM ((self ^. js "y") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGImageElement.width Mozilla SVGImageElement.width documentation> 
+getWidth ::
+         (MonadDOM m) => SVGImageElement -> m (Maybe SVGAnimatedLength)
+getWidth self = liftDOM ((self ^. js "width") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGImageElement.height Mozilla SVGImageElement.height documentation> 
+getHeight ::
+          (MonadDOM m) => SVGImageElement -> m (Maybe SVGAnimatedLength)
+getHeight self = liftDOM ((self ^. js "height") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGImageElement.preserveAspectRatio Mozilla SVGImageElement.preserveAspectRatio documentation> 
+getPreserveAspectRatio ::
+                       (MonadDOM m) =>
+                         SVGImageElement -> m (Maybe SVGAnimatedPreserveAspectRatio)
+getPreserveAspectRatio self
+  = liftDOM ((self ^. js "preserveAspectRatio") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGLength.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGLength.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGLength.hs
@@ -0,0 +1,90 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGLength
+       (newValueSpecifiedUnits, convertToSpecifiedUnits,
+        pattern SVG_LENGTHTYPE_UNKNOWN, pattern SVG_LENGTHTYPE_NUMBER,
+        pattern SVG_LENGTHTYPE_PERCENTAGE, pattern SVG_LENGTHTYPE_EMS,
+        pattern SVG_LENGTHTYPE_EXS, pattern SVG_LENGTHTYPE_PX,
+        pattern SVG_LENGTHTYPE_CM, pattern SVG_LENGTHTYPE_MM,
+        pattern SVG_LENGTHTYPE_IN, pattern SVG_LENGTHTYPE_PT,
+        pattern SVG_LENGTHTYPE_PC, getUnitType, setValue, getValue,
+        setValueInSpecifiedUnits, getValueInSpecifiedUnits,
+        setValueAsString, getValueAsString, SVGLength, castToSVGLength,
+        gTypeSVGLength)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLength.newValueSpecifiedUnits Mozilla SVGLength.newValueSpecifiedUnits documentation> 
+newValueSpecifiedUnits ::
+                       (MonadDOM m) => SVGLength -> Word -> Float -> m ()
+newValueSpecifiedUnits self unitType valueInSpecifiedUnits
+  = liftDOM
+      (void
+         (self ^. jsf "newValueSpecifiedUnits"
+            [toJSVal unitType, toJSVal valueInSpecifiedUnits]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLength.convertToSpecifiedUnits Mozilla SVGLength.convertToSpecifiedUnits documentation> 
+convertToSpecifiedUnits ::
+                        (MonadDOM m) => SVGLength -> Word -> m ()
+convertToSpecifiedUnits self unitType
+  = liftDOM
+      (void (self ^. jsf "convertToSpecifiedUnits" [toJSVal unitType]))
+pattern SVG_LENGTHTYPE_UNKNOWN = 0
+pattern SVG_LENGTHTYPE_NUMBER = 1
+pattern SVG_LENGTHTYPE_PERCENTAGE = 2
+pattern SVG_LENGTHTYPE_EMS = 3
+pattern SVG_LENGTHTYPE_EXS = 4
+pattern SVG_LENGTHTYPE_PX = 5
+pattern SVG_LENGTHTYPE_CM = 6
+pattern SVG_LENGTHTYPE_MM = 7
+pattern SVG_LENGTHTYPE_IN = 8
+pattern SVG_LENGTHTYPE_PT = 9
+pattern SVG_LENGTHTYPE_PC = 10
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLength.unitType Mozilla SVGLength.unitType documentation> 
+getUnitType :: (MonadDOM m) => SVGLength -> m Word
+getUnitType self
+  = liftDOM (round <$> ((self ^. js "unitType") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLength.value Mozilla SVGLength.value documentation> 
+setValue :: (MonadDOM m) => SVGLength -> Float -> m ()
+setValue self val = liftDOM (self ^. jss "value" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLength.value Mozilla SVGLength.value documentation> 
+getValue :: (MonadDOM m) => SVGLength -> m Float
+getValue self
+  = liftDOM (realToFrac <$> ((self ^. js "value") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLength.valueInSpecifiedUnits Mozilla SVGLength.valueInSpecifiedUnits documentation> 
+setValueInSpecifiedUnits ::
+                         (MonadDOM m) => SVGLength -> Float -> m ()
+setValueInSpecifiedUnits self val
+  = liftDOM (self ^. jss "valueInSpecifiedUnits" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLength.valueInSpecifiedUnits Mozilla SVGLength.valueInSpecifiedUnits documentation> 
+getValueInSpecifiedUnits :: (MonadDOM m) => SVGLength -> m Float
+getValueInSpecifiedUnits self
+  = liftDOM
+      (realToFrac <$>
+         ((self ^. js "valueInSpecifiedUnits") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLength.valueAsString Mozilla SVGLength.valueAsString documentation> 
+setValueAsString ::
+                 (MonadDOM m, ToJSString val) => SVGLength -> Maybe val -> m ()
+setValueAsString self val
+  = liftDOM (self ^. jss "valueAsString" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLength.valueAsString Mozilla SVGLength.valueAsString documentation> 
+getValueAsString ::
+                 (MonadDOM m, FromJSString result) => SVGLength -> m (Maybe result)
+getValueAsString self
+  = liftDOM ((self ^. js "valueAsString") >>= fromMaybeJSString)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGLengthList.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGLengthList.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGLengthList.hs
@@ -0,0 +1,72 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGLengthList
+       (clear, initialize, getItem, insertItemBefore, replaceItem,
+        removeItem, appendItem, getNumberOfItems, SVGLengthList,
+        castToSVGLengthList, gTypeSVGLengthList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.clear Mozilla SVGLengthList.clear documentation> 
+clear :: (MonadDOM m) => SVGLengthList -> m ()
+clear self = liftDOM (void (self ^. js "clear"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.initialize Mozilla SVGLengthList.initialize documentation> 
+initialize ::
+           (MonadDOM m) =>
+             SVGLengthList -> Maybe SVGLength -> m (Maybe SVGLength)
+initialize self item
+  = liftDOM ((self ^. jsf "initialize" [toJSVal item]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.getItem Mozilla SVGLengthList.getItem documentation> 
+getItem ::
+        (MonadDOM m) => SVGLengthList -> Word -> m (Maybe SVGLength)
+getItem self index
+  = liftDOM ((self ^. jsf "getItem" [toJSVal index]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.insertItemBefore Mozilla SVGLengthList.insertItemBefore documentation> 
+insertItemBefore ::
+                 (MonadDOM m) =>
+                   SVGLengthList -> Maybe SVGLength -> Word -> m (Maybe SVGLength)
+insertItemBefore self item index
+  = liftDOM
+      ((self ^. jsf "insertItemBefore" [toJSVal item, toJSVal index]) >>=
+         fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.replaceItem Mozilla SVGLengthList.replaceItem documentation> 
+replaceItem ::
+            (MonadDOM m) =>
+              SVGLengthList -> Maybe SVGLength -> Word -> m (Maybe SVGLength)
+replaceItem self item index
+  = liftDOM
+      ((self ^. jsf "replaceItem" [toJSVal item, toJSVal index]) >>=
+         fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.removeItem Mozilla SVGLengthList.removeItem documentation> 
+removeItem ::
+           (MonadDOM m) => SVGLengthList -> Word -> m (Maybe SVGLength)
+removeItem self index
+  = liftDOM
+      ((self ^. jsf "removeItem" [toJSVal index]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.appendItem Mozilla SVGLengthList.appendItem documentation> 
+appendItem ::
+           (MonadDOM m) =>
+             SVGLengthList -> Maybe SVGLength -> m (Maybe SVGLength)
+appendItem self item
+  = liftDOM ((self ^. jsf "appendItem" [toJSVal item]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.numberOfItems Mozilla SVGLengthList.numberOfItems documentation> 
+getNumberOfItems :: (MonadDOM m) => SVGLengthList -> m Word
+getNumberOfItems self
+  = liftDOM
+      (round <$> ((self ^. js "numberOfItems") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGLineElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGLineElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGLineElement.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGLineElement
+       (getX1, getY1, getX2, getY2, SVGLineElement, castToSVGLineElement,
+        gTypeSVGLineElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLineElement.x1 Mozilla SVGLineElement.x1 documentation> 
+getX1 ::
+      (MonadDOM m) => SVGLineElement -> m (Maybe SVGAnimatedLength)
+getX1 self = liftDOM ((self ^. js "x1") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLineElement.y1 Mozilla SVGLineElement.y1 documentation> 
+getY1 ::
+      (MonadDOM m) => SVGLineElement -> m (Maybe SVGAnimatedLength)
+getY1 self = liftDOM ((self ^. js "y1") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLineElement.x2 Mozilla SVGLineElement.x2 documentation> 
+getX2 ::
+      (MonadDOM m) => SVGLineElement -> m (Maybe SVGAnimatedLength)
+getX2 self = liftDOM ((self ^. js "x2") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLineElement.y2 Mozilla SVGLineElement.y2 documentation> 
+getY2 ::
+      (MonadDOM m) => SVGLineElement -> m (Maybe SVGAnimatedLength)
+getY2 self = liftDOM ((self ^. js "y2") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGLinearGradientElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGLinearGradientElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGLinearGradientElement.hs
@@ -0,0 +1,40 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGLinearGradientElement
+       (getX1, getY1, getX2, getY2, SVGLinearGradientElement,
+        castToSVGLinearGradientElement, gTypeSVGLinearGradientElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLinearGradientElement.x1 Mozilla SVGLinearGradientElement.x1 documentation> 
+getX1 ::
+      (MonadDOM m) =>
+        SVGLinearGradientElement -> m (Maybe SVGAnimatedLength)
+getX1 self = liftDOM ((self ^. js "x1") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLinearGradientElement.y1 Mozilla SVGLinearGradientElement.y1 documentation> 
+getY1 ::
+      (MonadDOM m) =>
+        SVGLinearGradientElement -> m (Maybe SVGAnimatedLength)
+getY1 self = liftDOM ((self ^. js "y1") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLinearGradientElement.x2 Mozilla SVGLinearGradientElement.x2 documentation> 
+getX2 ::
+      (MonadDOM m) =>
+        SVGLinearGradientElement -> m (Maybe SVGAnimatedLength)
+getX2 self = liftDOM ((self ^. js "x2") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLinearGradientElement.y2 Mozilla SVGLinearGradientElement.y2 documentation> 
+getY2 ::
+      (MonadDOM m) =>
+        SVGLinearGradientElement -> m (Maybe SVGAnimatedLength)
+getY2 self = liftDOM ((self ^. js "y2") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGMarkerElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGMarkerElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGMarkerElement.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGMarkerElement
+       (setOrientToAuto, setOrientToAngle,
+        pattern SVG_MARKERUNITS_UNKNOWN,
+        pattern SVG_MARKERUNITS_USERSPACEONUSE,
+        pattern SVG_MARKERUNITS_STROKEWIDTH,
+        pattern SVG_MARKER_ORIENT_UNKNOWN, pattern SVG_MARKER_ORIENT_AUTO,
+        pattern SVG_MARKER_ORIENT_ANGLE, getRefX, getRefY, getMarkerUnits,
+        getMarkerWidth, getMarkerHeight, getOrientType, getOrientAngle,
+        SVGMarkerElement, castToSVGMarkerElement, gTypeSVGMarkerElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMarkerElement.setOrientToAuto Mozilla SVGMarkerElement.setOrientToAuto documentation> 
+setOrientToAuto :: (MonadDOM m) => SVGMarkerElement -> m ()
+setOrientToAuto self
+  = liftDOM (void (self ^. js "setOrientToAuto"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMarkerElement.setOrientToAngle Mozilla SVGMarkerElement.setOrientToAngle documentation> 
+setOrientToAngle ::
+                 (MonadDOM m) => SVGMarkerElement -> Maybe SVGAngle -> m ()
+setOrientToAngle self angle
+  = liftDOM (void (self ^. jsf "setOrientToAngle" [toJSVal angle]))
+pattern SVG_MARKERUNITS_UNKNOWN = 0
+pattern SVG_MARKERUNITS_USERSPACEONUSE = 1
+pattern SVG_MARKERUNITS_STROKEWIDTH = 2
+pattern SVG_MARKER_ORIENT_UNKNOWN = 0
+pattern SVG_MARKER_ORIENT_AUTO = 1
+pattern SVG_MARKER_ORIENT_ANGLE = 2
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMarkerElement.refX Mozilla SVGMarkerElement.refX documentation> 
+getRefX ::
+        (MonadDOM m) => SVGMarkerElement -> m (Maybe SVGAnimatedLength)
+getRefX self = liftDOM ((self ^. js "refX") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMarkerElement.refY Mozilla SVGMarkerElement.refY documentation> 
+getRefY ::
+        (MonadDOM m) => SVGMarkerElement -> m (Maybe SVGAnimatedLength)
+getRefY self = liftDOM ((self ^. js "refY") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMarkerElement.markerUnits Mozilla SVGMarkerElement.markerUnits documentation> 
+getMarkerUnits ::
+               (MonadDOM m) =>
+                 SVGMarkerElement -> m (Maybe SVGAnimatedEnumeration)
+getMarkerUnits self
+  = liftDOM ((self ^. js "markerUnits") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMarkerElement.markerWidth Mozilla SVGMarkerElement.markerWidth documentation> 
+getMarkerWidth ::
+               (MonadDOM m) => SVGMarkerElement -> m (Maybe SVGAnimatedLength)
+getMarkerWidth self
+  = liftDOM ((self ^. js "markerWidth") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMarkerElement.markerHeight Mozilla SVGMarkerElement.markerHeight documentation> 
+getMarkerHeight ::
+                (MonadDOM m) => SVGMarkerElement -> m (Maybe SVGAnimatedLength)
+getMarkerHeight self
+  = liftDOM ((self ^. js "markerHeight") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMarkerElement.orientType Mozilla SVGMarkerElement.orientType documentation> 
+getOrientType ::
+              (MonadDOM m) =>
+                SVGMarkerElement -> m (Maybe SVGAnimatedEnumeration)
+getOrientType self
+  = liftDOM ((self ^. js "orientType") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMarkerElement.orientAngle Mozilla SVGMarkerElement.orientAngle documentation> 
+getOrientAngle ::
+               (MonadDOM m) => SVGMarkerElement -> m (Maybe SVGAnimatedAngle)
+getOrientAngle self
+  = liftDOM ((self ^. js "orientAngle") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGMaskElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGMaskElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGMaskElement.hs
@@ -0,0 +1,49 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGMaskElement
+       (getMaskUnits, getMaskContentUnits, getX, getY, getWidth,
+        getHeight, SVGMaskElement, castToSVGMaskElement,
+        gTypeSVGMaskElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMaskElement.maskUnits Mozilla SVGMaskElement.maskUnits documentation> 
+getMaskUnits ::
+             (MonadDOM m) => SVGMaskElement -> m (Maybe SVGAnimatedEnumeration)
+getMaskUnits self
+  = liftDOM ((self ^. js "maskUnits") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMaskElement.maskContentUnits Mozilla SVGMaskElement.maskContentUnits documentation> 
+getMaskContentUnits ::
+                    (MonadDOM m) => SVGMaskElement -> m (Maybe SVGAnimatedEnumeration)
+getMaskContentUnits self
+  = liftDOM ((self ^. js "maskContentUnits") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMaskElement.x Mozilla SVGMaskElement.x documentation> 
+getX ::
+     (MonadDOM m) => SVGMaskElement -> m (Maybe SVGAnimatedLength)
+getX self = liftDOM ((self ^. js "x") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMaskElement.y Mozilla SVGMaskElement.y documentation> 
+getY ::
+     (MonadDOM m) => SVGMaskElement -> m (Maybe SVGAnimatedLength)
+getY self = liftDOM ((self ^. js "y") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMaskElement.width Mozilla SVGMaskElement.width documentation> 
+getWidth ::
+         (MonadDOM m) => SVGMaskElement -> m (Maybe SVGAnimatedLength)
+getWidth self = liftDOM ((self ^. js "width") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMaskElement.height Mozilla SVGMaskElement.height documentation> 
+getHeight ::
+          (MonadDOM m) => SVGMaskElement -> m (Maybe SVGAnimatedLength)
+getHeight self = liftDOM ((self ^. js "height") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGMatrix.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGMatrix.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGMatrix.hs
@@ -0,0 +1,130 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGMatrix
+       (multiply, inverse, translate, scale, scaleNonUniform, rotate,
+        rotateFromVector, flipX, flipY, skewX, skewY, setA, getA, setB,
+        getB, setC, getC, setD, getD, setE, getE, setF, getF, SVGMatrix,
+        castToSVGMatrix, gTypeSVGMatrix)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.multiply Mozilla SVGMatrix.multiply documentation> 
+multiply ::
+         (MonadDOM m) => SVGMatrix -> Maybe SVGMatrix -> m (Maybe SVGMatrix)
+multiply self secondMatrix
+  = liftDOM
+      ((self ^. jsf "multiply" [toJSVal secondMatrix]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.inverse Mozilla SVGMatrix.inverse documentation> 
+inverse :: (MonadDOM m) => SVGMatrix -> m (Maybe SVGMatrix)
+inverse self = liftDOM ((self ^. js "inverse") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.translate Mozilla SVGMatrix.translate documentation> 
+translate ::
+          (MonadDOM m) => SVGMatrix -> Float -> Float -> m (Maybe SVGMatrix)
+translate self x y
+  = liftDOM
+      ((self ^. jsf "translate" [toJSVal x, toJSVal y]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.scale Mozilla SVGMatrix.scale documentation> 
+scale :: (MonadDOM m) => SVGMatrix -> Float -> m (Maybe SVGMatrix)
+scale self scaleFactor
+  = liftDOM
+      ((self ^. jsf "scale" [toJSVal scaleFactor]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.scaleNonUniform Mozilla SVGMatrix.scaleNonUniform documentation> 
+scaleNonUniform ::
+                (MonadDOM m) => SVGMatrix -> Float -> Float -> m (Maybe SVGMatrix)
+scaleNonUniform self scaleFactorX scaleFactorY
+  = liftDOM
+      ((self ^. jsf "scaleNonUniform"
+          [toJSVal scaleFactorX, toJSVal scaleFactorY])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.rotate Mozilla SVGMatrix.rotate documentation> 
+rotate :: (MonadDOM m) => SVGMatrix -> Float -> m (Maybe SVGMatrix)
+rotate self angle
+  = liftDOM ((self ^. jsf "rotate" [toJSVal angle]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.rotateFromVector Mozilla SVGMatrix.rotateFromVector documentation> 
+rotateFromVector ::
+                 (MonadDOM m) => SVGMatrix -> Float -> Float -> m (Maybe SVGMatrix)
+rotateFromVector self x y
+  = liftDOM
+      ((self ^. jsf "rotateFromVector" [toJSVal x, toJSVal y]) >>=
+         fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.flipX Mozilla SVGMatrix.flipX documentation> 
+flipX :: (MonadDOM m) => SVGMatrix -> m (Maybe SVGMatrix)
+flipX self = liftDOM ((self ^. js "flipX") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.flipY Mozilla SVGMatrix.flipY documentation> 
+flipY :: (MonadDOM m) => SVGMatrix -> m (Maybe SVGMatrix)
+flipY self = liftDOM ((self ^. js "flipY") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.skewX Mozilla SVGMatrix.skewX documentation> 
+skewX :: (MonadDOM m) => SVGMatrix -> Float -> m (Maybe SVGMatrix)
+skewX self angle
+  = liftDOM ((self ^. jsf "skewX" [toJSVal angle]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.skewY Mozilla SVGMatrix.skewY documentation> 
+skewY :: (MonadDOM m) => SVGMatrix -> Float -> m (Maybe SVGMatrix)
+skewY self angle
+  = liftDOM ((self ^. jsf "skewY" [toJSVal angle]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.a Mozilla SVGMatrix.a documentation> 
+setA :: (MonadDOM m) => SVGMatrix -> Double -> m ()
+setA self val = liftDOM (self ^. jss "a" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.a Mozilla SVGMatrix.a documentation> 
+getA :: (MonadDOM m) => SVGMatrix -> m Double
+getA self = liftDOM ((self ^. js "a") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.b Mozilla SVGMatrix.b documentation> 
+setB :: (MonadDOM m) => SVGMatrix -> Double -> m ()
+setB self val = liftDOM (self ^. jss "b" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.b Mozilla SVGMatrix.b documentation> 
+getB :: (MonadDOM m) => SVGMatrix -> m Double
+getB self = liftDOM ((self ^. js "b") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.c Mozilla SVGMatrix.c documentation> 
+setC :: (MonadDOM m) => SVGMatrix -> Double -> m ()
+setC self val = liftDOM (self ^. jss "c" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.c Mozilla SVGMatrix.c documentation> 
+getC :: (MonadDOM m) => SVGMatrix -> m Double
+getC self = liftDOM ((self ^. js "c") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.d Mozilla SVGMatrix.d documentation> 
+setD :: (MonadDOM m) => SVGMatrix -> Double -> m ()
+setD self val = liftDOM (self ^. jss "d" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.d Mozilla SVGMatrix.d documentation> 
+getD :: (MonadDOM m) => SVGMatrix -> m Double
+getD self = liftDOM ((self ^. js "d") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.e Mozilla SVGMatrix.e documentation> 
+setE :: (MonadDOM m) => SVGMatrix -> Double -> m ()
+setE self val = liftDOM (self ^. jss "e" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.e Mozilla SVGMatrix.e documentation> 
+getE :: (MonadDOM m) => SVGMatrix -> m Double
+getE self = liftDOM ((self ^. js "e") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.f Mozilla SVGMatrix.f documentation> 
+setF :: (MonadDOM m) => SVGMatrix -> Double -> m ()
+setF self val = liftDOM (self ^. jss "f" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.f Mozilla SVGMatrix.f documentation> 
+getF :: (MonadDOM m) => SVGMatrix -> m Double
+getF self = liftDOM ((self ^. js "f") >>= valToNumber)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGNumber.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGNumber.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGNumber.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGNumber
+       (setValue, getValue, SVGNumber, castToSVGNumber, gTypeSVGNumber)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumber.value Mozilla SVGNumber.value documentation> 
+setValue :: (MonadDOM m) => SVGNumber -> Float -> m ()
+setValue self val = liftDOM (self ^. jss "value" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumber.value Mozilla SVGNumber.value documentation> 
+getValue :: (MonadDOM m) => SVGNumber -> m Float
+getValue self
+  = liftDOM (realToFrac <$> ((self ^. js "value") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGNumberList.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGNumberList.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGNumberList.hs
@@ -0,0 +1,72 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGNumberList
+       (clear, initialize, getItem, insertItemBefore, replaceItem,
+        removeItem, appendItem, getNumberOfItems, SVGNumberList,
+        castToSVGNumberList, gTypeSVGNumberList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.clear Mozilla SVGNumberList.clear documentation> 
+clear :: (MonadDOM m) => SVGNumberList -> m ()
+clear self = liftDOM (void (self ^. js "clear"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.initialize Mozilla SVGNumberList.initialize documentation> 
+initialize ::
+           (MonadDOM m) =>
+             SVGNumberList -> Maybe SVGNumber -> m (Maybe SVGNumber)
+initialize self item
+  = liftDOM ((self ^. jsf "initialize" [toJSVal item]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.getItem Mozilla SVGNumberList.getItem documentation> 
+getItem ::
+        (MonadDOM m) => SVGNumberList -> Word -> m (Maybe SVGNumber)
+getItem self index
+  = liftDOM ((self ^. jsf "getItem" [toJSVal index]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.insertItemBefore Mozilla SVGNumberList.insertItemBefore documentation> 
+insertItemBefore ::
+                 (MonadDOM m) =>
+                   SVGNumberList -> Maybe SVGNumber -> Word -> m (Maybe SVGNumber)
+insertItemBefore self item index
+  = liftDOM
+      ((self ^. jsf "insertItemBefore" [toJSVal item, toJSVal index]) >>=
+         fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.replaceItem Mozilla SVGNumberList.replaceItem documentation> 
+replaceItem ::
+            (MonadDOM m) =>
+              SVGNumberList -> Maybe SVGNumber -> Word -> m (Maybe SVGNumber)
+replaceItem self item index
+  = liftDOM
+      ((self ^. jsf "replaceItem" [toJSVal item, toJSVal index]) >>=
+         fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.removeItem Mozilla SVGNumberList.removeItem documentation> 
+removeItem ::
+           (MonadDOM m) => SVGNumberList -> Word -> m (Maybe SVGNumber)
+removeItem self index
+  = liftDOM
+      ((self ^. jsf "removeItem" [toJSVal index]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.appendItem Mozilla SVGNumberList.appendItem documentation> 
+appendItem ::
+           (MonadDOM m) =>
+             SVGNumberList -> Maybe SVGNumber -> m (Maybe SVGNumber)
+appendItem self item
+  = liftDOM ((self ^. jsf "appendItem" [toJSVal item]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.numberOfItems Mozilla SVGNumberList.numberOfItems documentation> 
+getNumberOfItems :: (MonadDOM m) => SVGNumberList -> m Word
+getNumberOfItems self
+  = liftDOM
+      (round <$> ((self ^. js "numberOfItems") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGPaint.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGPaint.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGPaint.hs
@@ -0,0 +1,60 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGPaint
+       (setUri, setPaint, pattern SVG_PAINTTYPE_UNKNOWN,
+        pattern SVG_PAINTTYPE_RGBCOLOR,
+        pattern SVG_PAINTTYPE_RGBCOLOR_ICCCOLOR,
+        pattern SVG_PAINTTYPE_NONE, pattern SVG_PAINTTYPE_CURRENTCOLOR,
+        pattern SVG_PAINTTYPE_URI_NONE,
+        pattern SVG_PAINTTYPE_URI_CURRENTCOLOR,
+        pattern SVG_PAINTTYPE_URI_RGBCOLOR,
+        pattern SVG_PAINTTYPE_URI_RGBCOLOR_ICCCOLOR,
+        pattern SVG_PAINTTYPE_URI, getPaintType, getUri, SVGPaint,
+        castToSVGPaint, gTypeSVGPaint)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPaint.setUri Mozilla SVGPaint.setUri documentation> 
+setUri :: (MonadDOM m, ToJSString uri) => SVGPaint -> uri -> m ()
+setUri self uri
+  = liftDOM (void (self ^. jsf "setUri" [toJSVal uri]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPaint.setPaint Mozilla SVGPaint.setPaint documentation> 
+setPaint ::
+         (MonadDOM m, ToJSString uri, ToJSString rgbColor,
+          ToJSString iccColor) =>
+           SVGPaint -> Word -> uri -> rgbColor -> iccColor -> m ()
+setPaint self paintType uri rgbColor iccColor
+  = liftDOM
+      (void
+         (self ^. jsf "setPaint"
+            [toJSVal paintType, toJSVal uri, toJSVal rgbColor,
+             toJSVal iccColor]))
+pattern SVG_PAINTTYPE_UNKNOWN = 0
+pattern SVG_PAINTTYPE_RGBCOLOR = 1
+pattern SVG_PAINTTYPE_RGBCOLOR_ICCCOLOR = 2
+pattern SVG_PAINTTYPE_NONE = 101
+pattern SVG_PAINTTYPE_CURRENTCOLOR = 102
+pattern SVG_PAINTTYPE_URI_NONE = 103
+pattern SVG_PAINTTYPE_URI_CURRENTCOLOR = 104
+pattern SVG_PAINTTYPE_URI_RGBCOLOR = 105
+pattern SVG_PAINTTYPE_URI_RGBCOLOR_ICCCOLOR = 106
+pattern SVG_PAINTTYPE_URI = 107
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPaint.paintType Mozilla SVGPaint.paintType documentation> 
+getPaintType :: (MonadDOM m) => SVGPaint -> m Word
+getPaintType self
+  = liftDOM (round <$> ((self ^. js "paintType") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPaint.uri Mozilla SVGPaint.uri documentation> 
+getUri :: (MonadDOM m, FromJSString result) => SVGPaint -> m result
+getUri self = liftDOM ((self ^. js "uri") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGPathElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGPathElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGPathElement.hs
@@ -0,0 +1,309 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGPathElement
+       (getTotalLength, getPointAtLength, getPathSegAtLength,
+        createSVGPathSegClosePath, createSVGPathSegMovetoAbs,
+        createSVGPathSegMovetoRel, createSVGPathSegLinetoAbs,
+        createSVGPathSegLinetoRel, createSVGPathSegCurvetoCubicAbs,
+        createSVGPathSegCurvetoCubicRel,
+        createSVGPathSegCurvetoQuadraticAbs,
+        createSVGPathSegCurvetoQuadraticRel, createSVGPathSegArcAbs,
+        createSVGPathSegArcRel, createSVGPathSegLinetoHorizontalAbs,
+        createSVGPathSegLinetoHorizontalRel,
+        createSVGPathSegLinetoVerticalAbs,
+        createSVGPathSegLinetoVerticalRel,
+        createSVGPathSegCurvetoCubicSmoothAbs,
+        createSVGPathSegCurvetoCubicSmoothRel,
+        createSVGPathSegCurvetoQuadraticSmoothAbs,
+        createSVGPathSegCurvetoQuadraticSmoothRel, getPathLength,
+        getPathSegList, getNormalizedPathSegList, getAnimatedPathSegList,
+        getAnimatedNormalizedPathSegList, SVGPathElement,
+        castToSVGPathElement, gTypeSVGPathElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.getTotalLength Mozilla SVGPathElement.getTotalLength documentation> 
+getTotalLength :: (MonadDOM m) => SVGPathElement -> m Float
+getTotalLength self
+  = liftDOM
+      (realToFrac <$> ((self ^. js "getTotalLength") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.getPointAtLength Mozilla SVGPathElement.getPointAtLength documentation> 
+getPointAtLength ::
+                 (MonadDOM m) => SVGPathElement -> Float -> m (Maybe SVGPoint)
+getPointAtLength self distance
+  = liftDOM
+      ((self ^. jsf "getPointAtLength" [toJSVal distance]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.getPathSegAtLength Mozilla SVGPathElement.getPathSegAtLength documentation> 
+getPathSegAtLength ::
+                   (MonadDOM m) => SVGPathElement -> Float -> m Word
+getPathSegAtLength self distance
+  = liftDOM
+      (round <$>
+         ((self ^. jsf "getPathSegAtLength" [toJSVal distance]) >>=
+            valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegClosePath Mozilla SVGPathElement.createSVGPathSegClosePath documentation> 
+createSVGPathSegClosePath ::
+                          (MonadDOM m) => SVGPathElement -> m (Maybe SVGPathSegClosePath)
+createSVGPathSegClosePath self
+  = liftDOM ((self ^. js "createSVGPathSegClosePath") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegMovetoAbs Mozilla SVGPathElement.createSVGPathSegMovetoAbs documentation> 
+createSVGPathSegMovetoAbs ::
+                          (MonadDOM m) =>
+                            SVGPathElement -> Float -> Float -> m (Maybe SVGPathSegMovetoAbs)
+createSVGPathSegMovetoAbs self x y
+  = liftDOM
+      ((self ^. jsf "createSVGPathSegMovetoAbs" [toJSVal x, toJSVal y])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegMovetoRel Mozilla SVGPathElement.createSVGPathSegMovetoRel documentation> 
+createSVGPathSegMovetoRel ::
+                          (MonadDOM m) =>
+                            SVGPathElement -> Float -> Float -> m (Maybe SVGPathSegMovetoRel)
+createSVGPathSegMovetoRel self x y
+  = liftDOM
+      ((self ^. jsf "createSVGPathSegMovetoRel" [toJSVal x, toJSVal y])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegLinetoAbs Mozilla SVGPathElement.createSVGPathSegLinetoAbs documentation> 
+createSVGPathSegLinetoAbs ::
+                          (MonadDOM m) =>
+                            SVGPathElement -> Float -> Float -> m (Maybe SVGPathSegLinetoAbs)
+createSVGPathSegLinetoAbs self x y
+  = liftDOM
+      ((self ^. jsf "createSVGPathSegLinetoAbs" [toJSVal x, toJSVal y])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegLinetoRel Mozilla SVGPathElement.createSVGPathSegLinetoRel documentation> 
+createSVGPathSegLinetoRel ::
+                          (MonadDOM m) =>
+                            SVGPathElement -> Float -> Float -> m (Maybe SVGPathSegLinetoRel)
+createSVGPathSegLinetoRel self x y
+  = liftDOM
+      ((self ^. jsf "createSVGPathSegLinetoRel" [toJSVal x, toJSVal y])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoCubicAbs Mozilla SVGPathElement.createSVGPathSegCurvetoCubicAbs documentation> 
+createSVGPathSegCurvetoCubicAbs ::
+                                (MonadDOM m) =>
+                                  SVGPathElement ->
+                                    Float ->
+                                      Float ->
+                                        Float ->
+                                          Float ->
+                                            Float -> Float -> m (Maybe SVGPathSegCurvetoCubicAbs)
+createSVGPathSegCurvetoCubicAbs self x y x1 y1 x2 y2
+  = liftDOM
+      ((self ^. jsf "createSVGPathSegCurvetoCubicAbs"
+          [toJSVal x, toJSVal y, toJSVal x1, toJSVal y1, toJSVal x2,
+           toJSVal y2])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoCubicRel Mozilla SVGPathElement.createSVGPathSegCurvetoCubicRel documentation> 
+createSVGPathSegCurvetoCubicRel ::
+                                (MonadDOM m) =>
+                                  SVGPathElement ->
+                                    Float ->
+                                      Float ->
+                                        Float ->
+                                          Float ->
+                                            Float -> Float -> m (Maybe SVGPathSegCurvetoCubicRel)
+createSVGPathSegCurvetoCubicRel self x y x1 y1 x2 y2
+  = liftDOM
+      ((self ^. jsf "createSVGPathSegCurvetoCubicRel"
+          [toJSVal x, toJSVal y, toJSVal x1, toJSVal y1, toJSVal x2,
+           toJSVal y2])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoQuadraticAbs Mozilla SVGPathElement.createSVGPathSegCurvetoQuadraticAbs documentation> 
+createSVGPathSegCurvetoQuadraticAbs ::
+                                    (MonadDOM m) =>
+                                      SVGPathElement ->
+                                        Float ->
+                                          Float ->
+                                            Float ->
+                                              Float -> m (Maybe SVGPathSegCurvetoQuadraticAbs)
+createSVGPathSegCurvetoQuadraticAbs self x y x1 y1
+  = liftDOM
+      ((self ^. jsf "createSVGPathSegCurvetoQuadraticAbs"
+          [toJSVal x, toJSVal y, toJSVal x1, toJSVal y1])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoQuadraticRel Mozilla SVGPathElement.createSVGPathSegCurvetoQuadraticRel documentation> 
+createSVGPathSegCurvetoQuadraticRel ::
+                                    (MonadDOM m) =>
+                                      SVGPathElement ->
+                                        Float ->
+                                          Float ->
+                                            Float ->
+                                              Float -> m (Maybe SVGPathSegCurvetoQuadraticRel)
+createSVGPathSegCurvetoQuadraticRel self x y x1 y1
+  = liftDOM
+      ((self ^. jsf "createSVGPathSegCurvetoQuadraticRel"
+          [toJSVal x, toJSVal y, toJSVal x1, toJSVal y1])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegArcAbs Mozilla SVGPathElement.createSVGPathSegArcAbs documentation> 
+createSVGPathSegArcAbs ::
+                       (MonadDOM m) =>
+                         SVGPathElement ->
+                           Float ->
+                             Float ->
+                               Float ->
+                                 Float -> Float -> Bool -> Bool -> m (Maybe SVGPathSegArcAbs)
+createSVGPathSegArcAbs self x y r1 r2 angle largeArcFlag sweepFlag
+  = liftDOM
+      ((self ^. jsf "createSVGPathSegArcAbs"
+          [toJSVal x, toJSVal y, toJSVal r1, toJSVal r2, toJSVal angle,
+           toJSVal largeArcFlag, toJSVal sweepFlag])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegArcRel Mozilla SVGPathElement.createSVGPathSegArcRel documentation> 
+createSVGPathSegArcRel ::
+                       (MonadDOM m) =>
+                         SVGPathElement ->
+                           Float ->
+                             Float ->
+                               Float ->
+                                 Float -> Float -> Bool -> Bool -> m (Maybe SVGPathSegArcRel)
+createSVGPathSegArcRel self x y r1 r2 angle largeArcFlag sweepFlag
+  = liftDOM
+      ((self ^. jsf "createSVGPathSegArcRel"
+          [toJSVal x, toJSVal y, toJSVal r1, toJSVal r2, toJSVal angle,
+           toJSVal largeArcFlag, toJSVal sweepFlag])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegLinetoHorizontalAbs Mozilla SVGPathElement.createSVGPathSegLinetoHorizontalAbs documentation> 
+createSVGPathSegLinetoHorizontalAbs ::
+                                    (MonadDOM m) =>
+                                      SVGPathElement ->
+                                        Float -> m (Maybe SVGPathSegLinetoHorizontalAbs)
+createSVGPathSegLinetoHorizontalAbs self x
+  = liftDOM
+      ((self ^. jsf "createSVGPathSegLinetoHorizontalAbs" [toJSVal x])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegLinetoHorizontalRel Mozilla SVGPathElement.createSVGPathSegLinetoHorizontalRel documentation> 
+createSVGPathSegLinetoHorizontalRel ::
+                                    (MonadDOM m) =>
+                                      SVGPathElement ->
+                                        Float -> m (Maybe SVGPathSegLinetoHorizontalRel)
+createSVGPathSegLinetoHorizontalRel self x
+  = liftDOM
+      ((self ^. jsf "createSVGPathSegLinetoHorizontalRel" [toJSVal x])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegLinetoVerticalAbs Mozilla SVGPathElement.createSVGPathSegLinetoVerticalAbs documentation> 
+createSVGPathSegLinetoVerticalAbs ::
+                                  (MonadDOM m) =>
+                                    SVGPathElement -> Float -> m (Maybe SVGPathSegLinetoVerticalAbs)
+createSVGPathSegLinetoVerticalAbs self y
+  = liftDOM
+      ((self ^. jsf "createSVGPathSegLinetoVerticalAbs" [toJSVal y]) >>=
+         fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegLinetoVerticalRel Mozilla SVGPathElement.createSVGPathSegLinetoVerticalRel documentation> 
+createSVGPathSegLinetoVerticalRel ::
+                                  (MonadDOM m) =>
+                                    SVGPathElement -> Float -> m (Maybe SVGPathSegLinetoVerticalRel)
+createSVGPathSegLinetoVerticalRel self y
+  = liftDOM
+      ((self ^. jsf "createSVGPathSegLinetoVerticalRel" [toJSVal y]) >>=
+         fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoCubicSmoothAbs Mozilla SVGPathElement.createSVGPathSegCurvetoCubicSmoothAbs documentation> 
+createSVGPathSegCurvetoCubicSmoothAbs ::
+                                      (MonadDOM m) =>
+                                        SVGPathElement ->
+                                          Float ->
+                                            Float ->
+                                              Float ->
+                                                Float -> m (Maybe SVGPathSegCurvetoCubicSmoothAbs)
+createSVGPathSegCurvetoCubicSmoothAbs self x y x2 y2
+  = liftDOM
+      ((self ^. jsf "createSVGPathSegCurvetoCubicSmoothAbs"
+          [toJSVal x, toJSVal y, toJSVal x2, toJSVal y2])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoCubicSmoothRel Mozilla SVGPathElement.createSVGPathSegCurvetoCubicSmoothRel documentation> 
+createSVGPathSegCurvetoCubicSmoothRel ::
+                                      (MonadDOM m) =>
+                                        SVGPathElement ->
+                                          Float ->
+                                            Float ->
+                                              Float ->
+                                                Float -> m (Maybe SVGPathSegCurvetoCubicSmoothRel)
+createSVGPathSegCurvetoCubicSmoothRel self x y x2 y2
+  = liftDOM
+      ((self ^. jsf "createSVGPathSegCurvetoCubicSmoothRel"
+          [toJSVal x, toJSVal y, toJSVal x2, toJSVal y2])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoQuadraticSmoothAbs Mozilla SVGPathElement.createSVGPathSegCurvetoQuadraticSmoothAbs documentation> 
+createSVGPathSegCurvetoQuadraticSmoothAbs ::
+                                          (MonadDOM m) =>
+                                            SVGPathElement ->
+                                              Float ->
+                                                Float ->
+                                                  m (Maybe SVGPathSegCurvetoQuadraticSmoothAbs)
+createSVGPathSegCurvetoQuadraticSmoothAbs self x y
+  = liftDOM
+      ((self ^. jsf "createSVGPathSegCurvetoQuadraticSmoothAbs"
+          [toJSVal x, toJSVal y])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoQuadraticSmoothRel Mozilla SVGPathElement.createSVGPathSegCurvetoQuadraticSmoothRel documentation> 
+createSVGPathSegCurvetoQuadraticSmoothRel ::
+                                          (MonadDOM m) =>
+                                            SVGPathElement ->
+                                              Float ->
+                                                Float ->
+                                                  m (Maybe SVGPathSegCurvetoQuadraticSmoothRel)
+createSVGPathSegCurvetoQuadraticSmoothRel self x y
+  = liftDOM
+      ((self ^. jsf "createSVGPathSegCurvetoQuadraticSmoothRel"
+          [toJSVal x, toJSVal y])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.pathLength Mozilla SVGPathElement.pathLength documentation> 
+getPathLength ::
+              (MonadDOM m) => SVGPathElement -> m (Maybe SVGAnimatedNumber)
+getPathLength self
+  = liftDOM ((self ^. js "pathLength") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.pathSegList Mozilla SVGPathElement.pathSegList documentation> 
+getPathSegList ::
+               (MonadDOM m) => SVGPathElement -> m (Maybe SVGPathSegList)
+getPathSegList self
+  = liftDOM ((self ^. js "pathSegList") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.normalizedPathSegList Mozilla SVGPathElement.normalizedPathSegList documentation> 
+getNormalizedPathSegList ::
+                         (MonadDOM m) => SVGPathElement -> m (Maybe SVGPathSegList)
+getNormalizedPathSegList self
+  = liftDOM ((self ^. js "normalizedPathSegList") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.animatedPathSegList Mozilla SVGPathElement.animatedPathSegList documentation> 
+getAnimatedPathSegList ::
+                       (MonadDOM m) => SVGPathElement -> m (Maybe SVGPathSegList)
+getAnimatedPathSegList self
+  = liftDOM ((self ^. js "animatedPathSegList") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.animatedNormalizedPathSegList Mozilla SVGPathElement.animatedNormalizedPathSegList documentation> 
+getAnimatedNormalizedPathSegList ::
+                                 (MonadDOM m) => SVGPathElement -> m (Maybe SVGPathSegList)
+getAnimatedNormalizedPathSegList self
+  = liftDOM
+      ((self ^. js "animatedNormalizedPathSegList") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGPathSeg.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGPathSeg.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGPathSeg.hs
@@ -0,0 +1,67 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGPathSeg
+       (pattern PATHSEG_UNKNOWN, pattern PATHSEG_CLOSEPATH,
+        pattern PATHSEG_MOVETO_ABS, pattern PATHSEG_MOVETO_REL,
+        pattern PATHSEG_LINETO_ABS, pattern PATHSEG_LINETO_REL,
+        pattern PATHSEG_CURVETO_CUBIC_ABS,
+        pattern PATHSEG_CURVETO_CUBIC_REL,
+        pattern PATHSEG_CURVETO_QUADRATIC_ABS,
+        pattern PATHSEG_CURVETO_QUADRATIC_REL, pattern PATHSEG_ARC_ABS,
+        pattern PATHSEG_ARC_REL, pattern PATHSEG_LINETO_HORIZONTAL_ABS,
+        pattern PATHSEG_LINETO_HORIZONTAL_REL,
+        pattern PATHSEG_LINETO_VERTICAL_ABS,
+        pattern PATHSEG_LINETO_VERTICAL_REL,
+        pattern PATHSEG_CURVETO_CUBIC_SMOOTH_ABS,
+        pattern PATHSEG_CURVETO_CUBIC_SMOOTH_REL,
+        pattern PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS,
+        pattern PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL, getPathSegType,
+        getPathSegTypeAsLetter, SVGPathSeg, castToSVGPathSeg,
+        gTypeSVGPathSeg, IsSVGPathSeg, toSVGPathSeg)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+pattern PATHSEG_UNKNOWN = 0
+pattern PATHSEG_CLOSEPATH = 1
+pattern PATHSEG_MOVETO_ABS = 2
+pattern PATHSEG_MOVETO_REL = 3
+pattern PATHSEG_LINETO_ABS = 4
+pattern PATHSEG_LINETO_REL = 5
+pattern PATHSEG_CURVETO_CUBIC_ABS = 6
+pattern PATHSEG_CURVETO_CUBIC_REL = 7
+pattern PATHSEG_CURVETO_QUADRATIC_ABS = 8
+pattern PATHSEG_CURVETO_QUADRATIC_REL = 9
+pattern PATHSEG_ARC_ABS = 10
+pattern PATHSEG_ARC_REL = 11
+pattern PATHSEG_LINETO_HORIZONTAL_ABS = 12
+pattern PATHSEG_LINETO_HORIZONTAL_REL = 13
+pattern PATHSEG_LINETO_VERTICAL_ABS = 14
+pattern PATHSEG_LINETO_VERTICAL_REL = 15
+pattern PATHSEG_CURVETO_CUBIC_SMOOTH_ABS = 16
+pattern PATHSEG_CURVETO_CUBIC_SMOOTH_REL = 17
+pattern PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS = 18
+pattern PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL = 19
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSeg.pathSegType Mozilla SVGPathSeg.pathSegType documentation> 
+getPathSegType :: (MonadDOM m, IsSVGPathSeg self) => self -> m Word
+getPathSegType self
+  = liftDOM
+      (round <$>
+         (((toSVGPathSeg self) ^. js "pathSegType") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSeg.pathSegTypeAsLetter Mozilla SVGPathSeg.pathSegTypeAsLetter documentation> 
+getPathSegTypeAsLetter ::
+                       (MonadDOM m, IsSVGPathSeg self, FromJSString result) =>
+                         self -> m result
+getPathSegTypeAsLetter self
+  = liftDOM
+      (((toSVGPathSeg self) ^. js "pathSegTypeAsLetter") >>=
+         fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGPathSegArcAbs.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGPathSegArcAbs.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGPathSegArcAbs.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGPathSegArcAbs
+       (setX, getX, setY, getY, setR1, getR1, setR2, getR2, setAngle,
+        getAngle, setLargeArcFlag, getLargeArcFlag, setSweepFlag,
+        getSweepFlag, SVGPathSegArcAbs, castToSVGPathSegArcAbs,
+        gTypeSVGPathSegArcAbs)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcAbs.x Mozilla SVGPathSegArcAbs.x documentation> 
+setX :: (MonadDOM m) => SVGPathSegArcAbs -> Float -> m ()
+setX self val = liftDOM (self ^. jss "x" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcAbs.x Mozilla SVGPathSegArcAbs.x documentation> 
+getX :: (MonadDOM m) => SVGPathSegArcAbs -> m Float
+getX self
+  = liftDOM (realToFrac <$> ((self ^. js "x") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcAbs.y Mozilla SVGPathSegArcAbs.y documentation> 
+setY :: (MonadDOM m) => SVGPathSegArcAbs -> Float -> m ()
+setY self val = liftDOM (self ^. jss "y" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcAbs.y Mozilla SVGPathSegArcAbs.y documentation> 
+getY :: (MonadDOM m) => SVGPathSegArcAbs -> m Float
+getY self
+  = liftDOM (realToFrac <$> ((self ^. js "y") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcAbs.r1 Mozilla SVGPathSegArcAbs.r1 documentation> 
+setR1 :: (MonadDOM m) => SVGPathSegArcAbs -> Float -> m ()
+setR1 self val = liftDOM (self ^. jss "r1" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcAbs.r1 Mozilla SVGPathSegArcAbs.r1 documentation> 
+getR1 :: (MonadDOM m) => SVGPathSegArcAbs -> m Float
+getR1 self
+  = liftDOM (realToFrac <$> ((self ^. js "r1") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcAbs.r2 Mozilla SVGPathSegArcAbs.r2 documentation> 
+setR2 :: (MonadDOM m) => SVGPathSegArcAbs -> Float -> m ()
+setR2 self val = liftDOM (self ^. jss "r2" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcAbs.r2 Mozilla SVGPathSegArcAbs.r2 documentation> 
+getR2 :: (MonadDOM m) => SVGPathSegArcAbs -> m Float
+getR2 self
+  = liftDOM (realToFrac <$> ((self ^. js "r2") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcAbs.angle Mozilla SVGPathSegArcAbs.angle documentation> 
+setAngle :: (MonadDOM m) => SVGPathSegArcAbs -> Float -> m ()
+setAngle self val = liftDOM (self ^. jss "angle" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcAbs.angle Mozilla SVGPathSegArcAbs.angle documentation> 
+getAngle :: (MonadDOM m) => SVGPathSegArcAbs -> m Float
+getAngle self
+  = liftDOM (realToFrac <$> ((self ^. js "angle") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcAbs.largeArcFlag Mozilla SVGPathSegArcAbs.largeArcFlag documentation> 
+setLargeArcFlag :: (MonadDOM m) => SVGPathSegArcAbs -> Bool -> m ()
+setLargeArcFlag self val
+  = liftDOM (self ^. jss "largeArcFlag" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcAbs.largeArcFlag Mozilla SVGPathSegArcAbs.largeArcFlag documentation> 
+getLargeArcFlag :: (MonadDOM m) => SVGPathSegArcAbs -> m Bool
+getLargeArcFlag self
+  = liftDOM ((self ^. js "largeArcFlag") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcAbs.sweepFlag Mozilla SVGPathSegArcAbs.sweepFlag documentation> 
+setSweepFlag :: (MonadDOM m) => SVGPathSegArcAbs -> Bool -> m ()
+setSweepFlag self val
+  = liftDOM (self ^. jss "sweepFlag" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcAbs.sweepFlag Mozilla SVGPathSegArcAbs.sweepFlag documentation> 
+getSweepFlag :: (MonadDOM m) => SVGPathSegArcAbs -> m Bool
+getSweepFlag self
+  = liftDOM ((self ^. js "sweepFlag") >>= valToBool)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGPathSegArcRel.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGPathSegArcRel.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGPathSegArcRel.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGPathSegArcRel
+       (setX, getX, setY, getY, setR1, getR1, setR2, getR2, setAngle,
+        getAngle, setLargeArcFlag, getLargeArcFlag, setSweepFlag,
+        getSweepFlag, SVGPathSegArcRel, castToSVGPathSegArcRel,
+        gTypeSVGPathSegArcRel)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcRel.x Mozilla SVGPathSegArcRel.x documentation> 
+setX :: (MonadDOM m) => SVGPathSegArcRel -> Float -> m ()
+setX self val = liftDOM (self ^. jss "x" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcRel.x Mozilla SVGPathSegArcRel.x documentation> 
+getX :: (MonadDOM m) => SVGPathSegArcRel -> m Float
+getX self
+  = liftDOM (realToFrac <$> ((self ^. js "x") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcRel.y Mozilla SVGPathSegArcRel.y documentation> 
+setY :: (MonadDOM m) => SVGPathSegArcRel -> Float -> m ()
+setY self val = liftDOM (self ^. jss "y" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcRel.y Mozilla SVGPathSegArcRel.y documentation> 
+getY :: (MonadDOM m) => SVGPathSegArcRel -> m Float
+getY self
+  = liftDOM (realToFrac <$> ((self ^. js "y") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcRel.r1 Mozilla SVGPathSegArcRel.r1 documentation> 
+setR1 :: (MonadDOM m) => SVGPathSegArcRel -> Float -> m ()
+setR1 self val = liftDOM (self ^. jss "r1" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcRel.r1 Mozilla SVGPathSegArcRel.r1 documentation> 
+getR1 :: (MonadDOM m) => SVGPathSegArcRel -> m Float
+getR1 self
+  = liftDOM (realToFrac <$> ((self ^. js "r1") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcRel.r2 Mozilla SVGPathSegArcRel.r2 documentation> 
+setR2 :: (MonadDOM m) => SVGPathSegArcRel -> Float -> m ()
+setR2 self val = liftDOM (self ^. jss "r2" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcRel.r2 Mozilla SVGPathSegArcRel.r2 documentation> 
+getR2 :: (MonadDOM m) => SVGPathSegArcRel -> m Float
+getR2 self
+  = liftDOM (realToFrac <$> ((self ^. js "r2") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcRel.angle Mozilla SVGPathSegArcRel.angle documentation> 
+setAngle :: (MonadDOM m) => SVGPathSegArcRel -> Float -> m ()
+setAngle self val = liftDOM (self ^. jss "angle" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcRel.angle Mozilla SVGPathSegArcRel.angle documentation> 
+getAngle :: (MonadDOM m) => SVGPathSegArcRel -> m Float
+getAngle self
+  = liftDOM (realToFrac <$> ((self ^. js "angle") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcRel.largeArcFlag Mozilla SVGPathSegArcRel.largeArcFlag documentation> 
+setLargeArcFlag :: (MonadDOM m) => SVGPathSegArcRel -> Bool -> m ()
+setLargeArcFlag self val
+  = liftDOM (self ^. jss "largeArcFlag" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcRel.largeArcFlag Mozilla SVGPathSegArcRel.largeArcFlag documentation> 
+getLargeArcFlag :: (MonadDOM m) => SVGPathSegArcRel -> m Bool
+getLargeArcFlag self
+  = liftDOM ((self ^. js "largeArcFlag") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcRel.sweepFlag Mozilla SVGPathSegArcRel.sweepFlag documentation> 
+setSweepFlag :: (MonadDOM m) => SVGPathSegArcRel -> Bool -> m ()
+setSweepFlag self val
+  = liftDOM (self ^. jss "sweepFlag" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcRel.sweepFlag Mozilla SVGPathSegArcRel.sweepFlag documentation> 
+getSweepFlag :: (MonadDOM m) => SVGPathSegArcRel -> m Bool
+getSweepFlag self
+  = liftDOM ((self ^. js "sweepFlag") >>= valToBool)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGPathSegCurvetoCubicAbs.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGPathSegCurvetoCubicAbs.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGPathSegCurvetoCubicAbs.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGPathSegCurvetoCubicAbs
+       (setX, getX, setY, getY, setX1, getX1, setY1, getY1, setX2, getX2,
+        setY2, getY2, SVGPathSegCurvetoCubicAbs,
+        castToSVGPathSegCurvetoCubicAbs, gTypeSVGPathSegCurvetoCubicAbs)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicAbs.x Mozilla SVGPathSegCurvetoCubicAbs.x documentation> 
+setX :: (MonadDOM m) => SVGPathSegCurvetoCubicAbs -> Float -> m ()
+setX self val = liftDOM (self ^. jss "x" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicAbs.x Mozilla SVGPathSegCurvetoCubicAbs.x documentation> 
+getX :: (MonadDOM m) => SVGPathSegCurvetoCubicAbs -> m Float
+getX self
+  = liftDOM (realToFrac <$> ((self ^. js "x") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicAbs.y Mozilla SVGPathSegCurvetoCubicAbs.y documentation> 
+setY :: (MonadDOM m) => SVGPathSegCurvetoCubicAbs -> Float -> m ()
+setY self val = liftDOM (self ^. jss "y" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicAbs.y Mozilla SVGPathSegCurvetoCubicAbs.y documentation> 
+getY :: (MonadDOM m) => SVGPathSegCurvetoCubicAbs -> m Float
+getY self
+  = liftDOM (realToFrac <$> ((self ^. js "y") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicAbs.x1 Mozilla SVGPathSegCurvetoCubicAbs.x1 documentation> 
+setX1 :: (MonadDOM m) => SVGPathSegCurvetoCubicAbs -> Float -> m ()
+setX1 self val = liftDOM (self ^. jss "x1" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicAbs.x1 Mozilla SVGPathSegCurvetoCubicAbs.x1 documentation> 
+getX1 :: (MonadDOM m) => SVGPathSegCurvetoCubicAbs -> m Float
+getX1 self
+  = liftDOM (realToFrac <$> ((self ^. js "x1") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicAbs.y1 Mozilla SVGPathSegCurvetoCubicAbs.y1 documentation> 
+setY1 :: (MonadDOM m) => SVGPathSegCurvetoCubicAbs -> Float -> m ()
+setY1 self val = liftDOM (self ^. jss "y1" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicAbs.y1 Mozilla SVGPathSegCurvetoCubicAbs.y1 documentation> 
+getY1 :: (MonadDOM m) => SVGPathSegCurvetoCubicAbs -> m Float
+getY1 self
+  = liftDOM (realToFrac <$> ((self ^. js "y1") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicAbs.x2 Mozilla SVGPathSegCurvetoCubicAbs.x2 documentation> 
+setX2 :: (MonadDOM m) => SVGPathSegCurvetoCubicAbs -> Float -> m ()
+setX2 self val = liftDOM (self ^. jss "x2" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicAbs.x2 Mozilla SVGPathSegCurvetoCubicAbs.x2 documentation> 
+getX2 :: (MonadDOM m) => SVGPathSegCurvetoCubicAbs -> m Float
+getX2 self
+  = liftDOM (realToFrac <$> ((self ^. js "x2") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicAbs.y2 Mozilla SVGPathSegCurvetoCubicAbs.y2 documentation> 
+setY2 :: (MonadDOM m) => SVGPathSegCurvetoCubicAbs -> Float -> m ()
+setY2 self val = liftDOM (self ^. jss "y2" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicAbs.y2 Mozilla SVGPathSegCurvetoCubicAbs.y2 documentation> 
+getY2 :: (MonadDOM m) => SVGPathSegCurvetoCubicAbs -> m Float
+getY2 self
+  = liftDOM (realToFrac <$> ((self ^. js "y2") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGPathSegCurvetoCubicRel.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGPathSegCurvetoCubicRel.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGPathSegCurvetoCubicRel.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGPathSegCurvetoCubicRel
+       (setX, getX, setY, getY, setX1, getX1, setY1, getY1, setX2, getX2,
+        setY2, getY2, SVGPathSegCurvetoCubicRel,
+        castToSVGPathSegCurvetoCubicRel, gTypeSVGPathSegCurvetoCubicRel)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicRel.x Mozilla SVGPathSegCurvetoCubicRel.x documentation> 
+setX :: (MonadDOM m) => SVGPathSegCurvetoCubicRel -> Float -> m ()
+setX self val = liftDOM (self ^. jss "x" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicRel.x Mozilla SVGPathSegCurvetoCubicRel.x documentation> 
+getX :: (MonadDOM m) => SVGPathSegCurvetoCubicRel -> m Float
+getX self
+  = liftDOM (realToFrac <$> ((self ^. js "x") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicRel.y Mozilla SVGPathSegCurvetoCubicRel.y documentation> 
+setY :: (MonadDOM m) => SVGPathSegCurvetoCubicRel -> Float -> m ()
+setY self val = liftDOM (self ^. jss "y" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicRel.y Mozilla SVGPathSegCurvetoCubicRel.y documentation> 
+getY :: (MonadDOM m) => SVGPathSegCurvetoCubicRel -> m Float
+getY self
+  = liftDOM (realToFrac <$> ((self ^. js "y") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicRel.x1 Mozilla SVGPathSegCurvetoCubicRel.x1 documentation> 
+setX1 :: (MonadDOM m) => SVGPathSegCurvetoCubicRel -> Float -> m ()
+setX1 self val = liftDOM (self ^. jss "x1" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicRel.x1 Mozilla SVGPathSegCurvetoCubicRel.x1 documentation> 
+getX1 :: (MonadDOM m) => SVGPathSegCurvetoCubicRel -> m Float
+getX1 self
+  = liftDOM (realToFrac <$> ((self ^. js "x1") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicRel.y1 Mozilla SVGPathSegCurvetoCubicRel.y1 documentation> 
+setY1 :: (MonadDOM m) => SVGPathSegCurvetoCubicRel -> Float -> m ()
+setY1 self val = liftDOM (self ^. jss "y1" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicRel.y1 Mozilla SVGPathSegCurvetoCubicRel.y1 documentation> 
+getY1 :: (MonadDOM m) => SVGPathSegCurvetoCubicRel -> m Float
+getY1 self
+  = liftDOM (realToFrac <$> ((self ^. js "y1") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicRel.x2 Mozilla SVGPathSegCurvetoCubicRel.x2 documentation> 
+setX2 :: (MonadDOM m) => SVGPathSegCurvetoCubicRel -> Float -> m ()
+setX2 self val = liftDOM (self ^. jss "x2" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicRel.x2 Mozilla SVGPathSegCurvetoCubicRel.x2 documentation> 
+getX2 :: (MonadDOM m) => SVGPathSegCurvetoCubicRel -> m Float
+getX2 self
+  = liftDOM (realToFrac <$> ((self ^. js "x2") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicRel.y2 Mozilla SVGPathSegCurvetoCubicRel.y2 documentation> 
+setY2 :: (MonadDOM m) => SVGPathSegCurvetoCubicRel -> Float -> m ()
+setY2 self val = liftDOM (self ^. jss "y2" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicRel.y2 Mozilla SVGPathSegCurvetoCubicRel.y2 documentation> 
+getY2 :: (MonadDOM m) => SVGPathSegCurvetoCubicRel -> m Float
+getY2 self
+  = liftDOM (realToFrac <$> ((self ^. js "y2") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGPathSegCurvetoCubicSmoothAbs.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGPathSegCurvetoCubicSmoothAbs.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGPathSegCurvetoCubicSmoothAbs.hs
@@ -0,0 +1,58 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGPathSegCurvetoCubicSmoothAbs
+       (setX, getX, setY, getY, setX2, getX2, setY2, getY2,
+        SVGPathSegCurvetoCubicSmoothAbs,
+        castToSVGPathSegCurvetoCubicSmoothAbs,
+        gTypeSVGPathSegCurvetoCubicSmoothAbs)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothAbs.x Mozilla SVGPathSegCurvetoCubicSmoothAbs.x documentation> 
+setX ::
+     (MonadDOM m) => SVGPathSegCurvetoCubicSmoothAbs -> Float -> m ()
+setX self val = liftDOM (self ^. jss "x" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothAbs.x Mozilla SVGPathSegCurvetoCubicSmoothAbs.x documentation> 
+getX :: (MonadDOM m) => SVGPathSegCurvetoCubicSmoothAbs -> m Float
+getX self
+  = liftDOM (realToFrac <$> ((self ^. js "x") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothAbs.y Mozilla SVGPathSegCurvetoCubicSmoothAbs.y documentation> 
+setY ::
+     (MonadDOM m) => SVGPathSegCurvetoCubicSmoothAbs -> Float -> m ()
+setY self val = liftDOM (self ^. jss "y" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothAbs.y Mozilla SVGPathSegCurvetoCubicSmoothAbs.y documentation> 
+getY :: (MonadDOM m) => SVGPathSegCurvetoCubicSmoothAbs -> m Float
+getY self
+  = liftDOM (realToFrac <$> ((self ^. js "y") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothAbs.x2 Mozilla SVGPathSegCurvetoCubicSmoothAbs.x2 documentation> 
+setX2 ::
+      (MonadDOM m) => SVGPathSegCurvetoCubicSmoothAbs -> Float -> m ()
+setX2 self val = liftDOM (self ^. jss "x2" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothAbs.x2 Mozilla SVGPathSegCurvetoCubicSmoothAbs.x2 documentation> 
+getX2 :: (MonadDOM m) => SVGPathSegCurvetoCubicSmoothAbs -> m Float
+getX2 self
+  = liftDOM (realToFrac <$> ((self ^. js "x2") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothAbs.y2 Mozilla SVGPathSegCurvetoCubicSmoothAbs.y2 documentation> 
+setY2 ::
+      (MonadDOM m) => SVGPathSegCurvetoCubicSmoothAbs -> Float -> m ()
+setY2 self val = liftDOM (self ^. jss "y2" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothAbs.y2 Mozilla SVGPathSegCurvetoCubicSmoothAbs.y2 documentation> 
+getY2 :: (MonadDOM m) => SVGPathSegCurvetoCubicSmoothAbs -> m Float
+getY2 self
+  = liftDOM (realToFrac <$> ((self ^. js "y2") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGPathSegCurvetoCubicSmoothRel.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGPathSegCurvetoCubicSmoothRel.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGPathSegCurvetoCubicSmoothRel.hs
@@ -0,0 +1,58 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGPathSegCurvetoCubicSmoothRel
+       (setX, getX, setY, getY, setX2, getX2, setY2, getY2,
+        SVGPathSegCurvetoCubicSmoothRel,
+        castToSVGPathSegCurvetoCubicSmoothRel,
+        gTypeSVGPathSegCurvetoCubicSmoothRel)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothRel.x Mozilla SVGPathSegCurvetoCubicSmoothRel.x documentation> 
+setX ::
+     (MonadDOM m) => SVGPathSegCurvetoCubicSmoothRel -> Float -> m ()
+setX self val = liftDOM (self ^. jss "x" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothRel.x Mozilla SVGPathSegCurvetoCubicSmoothRel.x documentation> 
+getX :: (MonadDOM m) => SVGPathSegCurvetoCubicSmoothRel -> m Float
+getX self
+  = liftDOM (realToFrac <$> ((self ^. js "x") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothRel.y Mozilla SVGPathSegCurvetoCubicSmoothRel.y documentation> 
+setY ::
+     (MonadDOM m) => SVGPathSegCurvetoCubicSmoothRel -> Float -> m ()
+setY self val = liftDOM (self ^. jss "y" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothRel.y Mozilla SVGPathSegCurvetoCubicSmoothRel.y documentation> 
+getY :: (MonadDOM m) => SVGPathSegCurvetoCubicSmoothRel -> m Float
+getY self
+  = liftDOM (realToFrac <$> ((self ^. js "y") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothRel.x2 Mozilla SVGPathSegCurvetoCubicSmoothRel.x2 documentation> 
+setX2 ::
+      (MonadDOM m) => SVGPathSegCurvetoCubicSmoothRel -> Float -> m ()
+setX2 self val = liftDOM (self ^. jss "x2" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothRel.x2 Mozilla SVGPathSegCurvetoCubicSmoothRel.x2 documentation> 
+getX2 :: (MonadDOM m) => SVGPathSegCurvetoCubicSmoothRel -> m Float
+getX2 self
+  = liftDOM (realToFrac <$> ((self ^. js "x2") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothRel.y2 Mozilla SVGPathSegCurvetoCubicSmoothRel.y2 documentation> 
+setY2 ::
+      (MonadDOM m) => SVGPathSegCurvetoCubicSmoothRel -> Float -> m ()
+setY2 self val = liftDOM (self ^. jss "y2" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothRel.y2 Mozilla SVGPathSegCurvetoCubicSmoothRel.y2 documentation> 
+getY2 :: (MonadDOM m) => SVGPathSegCurvetoCubicSmoothRel -> m Float
+getY2 self
+  = liftDOM (realToFrac <$> ((self ^. js "y2") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGPathSegCurvetoQuadraticAbs.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGPathSegCurvetoQuadraticAbs.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGPathSegCurvetoQuadraticAbs.hs
@@ -0,0 +1,57 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGPathSegCurvetoQuadraticAbs
+       (setX, getX, setY, getY, setX1, getX1, setY1, getY1,
+        SVGPathSegCurvetoQuadraticAbs, castToSVGPathSegCurvetoQuadraticAbs,
+        gTypeSVGPathSegCurvetoQuadraticAbs)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticAbs.x Mozilla SVGPathSegCurvetoQuadraticAbs.x documentation> 
+setX ::
+     (MonadDOM m) => SVGPathSegCurvetoQuadraticAbs -> Float -> m ()
+setX self val = liftDOM (self ^. jss "x" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticAbs.x Mozilla SVGPathSegCurvetoQuadraticAbs.x documentation> 
+getX :: (MonadDOM m) => SVGPathSegCurvetoQuadraticAbs -> m Float
+getX self
+  = liftDOM (realToFrac <$> ((self ^. js "x") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticAbs.y Mozilla SVGPathSegCurvetoQuadraticAbs.y documentation> 
+setY ::
+     (MonadDOM m) => SVGPathSegCurvetoQuadraticAbs -> Float -> m ()
+setY self val = liftDOM (self ^. jss "y" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticAbs.y Mozilla SVGPathSegCurvetoQuadraticAbs.y documentation> 
+getY :: (MonadDOM m) => SVGPathSegCurvetoQuadraticAbs -> m Float
+getY self
+  = liftDOM (realToFrac <$> ((self ^. js "y") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticAbs.x1 Mozilla SVGPathSegCurvetoQuadraticAbs.x1 documentation> 
+setX1 ::
+      (MonadDOM m) => SVGPathSegCurvetoQuadraticAbs -> Float -> m ()
+setX1 self val = liftDOM (self ^. jss "x1" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticAbs.x1 Mozilla SVGPathSegCurvetoQuadraticAbs.x1 documentation> 
+getX1 :: (MonadDOM m) => SVGPathSegCurvetoQuadraticAbs -> m Float
+getX1 self
+  = liftDOM (realToFrac <$> ((self ^. js "x1") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticAbs.y1 Mozilla SVGPathSegCurvetoQuadraticAbs.y1 documentation> 
+setY1 ::
+      (MonadDOM m) => SVGPathSegCurvetoQuadraticAbs -> Float -> m ()
+setY1 self val = liftDOM (self ^. jss "y1" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticAbs.y1 Mozilla SVGPathSegCurvetoQuadraticAbs.y1 documentation> 
+getY1 :: (MonadDOM m) => SVGPathSegCurvetoQuadraticAbs -> m Float
+getY1 self
+  = liftDOM (realToFrac <$> ((self ^. js "y1") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGPathSegCurvetoQuadraticRel.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGPathSegCurvetoQuadraticRel.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGPathSegCurvetoQuadraticRel.hs
@@ -0,0 +1,57 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGPathSegCurvetoQuadraticRel
+       (setX, getX, setY, getY, setX1, getX1, setY1, getY1,
+        SVGPathSegCurvetoQuadraticRel, castToSVGPathSegCurvetoQuadraticRel,
+        gTypeSVGPathSegCurvetoQuadraticRel)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticRel.x Mozilla SVGPathSegCurvetoQuadraticRel.x documentation> 
+setX ::
+     (MonadDOM m) => SVGPathSegCurvetoQuadraticRel -> Float -> m ()
+setX self val = liftDOM (self ^. jss "x" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticRel.x Mozilla SVGPathSegCurvetoQuadraticRel.x documentation> 
+getX :: (MonadDOM m) => SVGPathSegCurvetoQuadraticRel -> m Float
+getX self
+  = liftDOM (realToFrac <$> ((self ^. js "x") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticRel.y Mozilla SVGPathSegCurvetoQuadraticRel.y documentation> 
+setY ::
+     (MonadDOM m) => SVGPathSegCurvetoQuadraticRel -> Float -> m ()
+setY self val = liftDOM (self ^. jss "y" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticRel.y Mozilla SVGPathSegCurvetoQuadraticRel.y documentation> 
+getY :: (MonadDOM m) => SVGPathSegCurvetoQuadraticRel -> m Float
+getY self
+  = liftDOM (realToFrac <$> ((self ^. js "y") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticRel.x1 Mozilla SVGPathSegCurvetoQuadraticRel.x1 documentation> 
+setX1 ::
+      (MonadDOM m) => SVGPathSegCurvetoQuadraticRel -> Float -> m ()
+setX1 self val = liftDOM (self ^. jss "x1" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticRel.x1 Mozilla SVGPathSegCurvetoQuadraticRel.x1 documentation> 
+getX1 :: (MonadDOM m) => SVGPathSegCurvetoQuadraticRel -> m Float
+getX1 self
+  = liftDOM (realToFrac <$> ((self ^. js "x1") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticRel.y1 Mozilla SVGPathSegCurvetoQuadraticRel.y1 documentation> 
+setY1 ::
+      (MonadDOM m) => SVGPathSegCurvetoQuadraticRel -> Float -> m ()
+setY1 self val = liftDOM (self ^. jss "y1" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticRel.y1 Mozilla SVGPathSegCurvetoQuadraticRel.y1 documentation> 
+getY1 :: (MonadDOM m) => SVGPathSegCurvetoQuadraticRel -> m Float
+getY1 self
+  = liftDOM (realToFrac <$> ((self ^. js "y1") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGPathSegCurvetoQuadraticSmoothAbs.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGPathSegCurvetoQuadraticSmoothAbs.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGPathSegCurvetoQuadraticSmoothAbs.hs
@@ -0,0 +1,41 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGPathSegCurvetoQuadraticSmoothAbs
+       (setX, getX, setY, getY, SVGPathSegCurvetoQuadraticSmoothAbs,
+        castToSVGPathSegCurvetoQuadraticSmoothAbs,
+        gTypeSVGPathSegCurvetoQuadraticSmoothAbs)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticSmoothAbs.x Mozilla SVGPathSegCurvetoQuadraticSmoothAbs.x documentation> 
+setX ::
+     (MonadDOM m) =>
+       SVGPathSegCurvetoQuadraticSmoothAbs -> Float -> m ()
+setX self val = liftDOM (self ^. jss "x" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticSmoothAbs.x Mozilla SVGPathSegCurvetoQuadraticSmoothAbs.x documentation> 
+getX ::
+     (MonadDOM m) => SVGPathSegCurvetoQuadraticSmoothAbs -> m Float
+getX self
+  = liftDOM (realToFrac <$> ((self ^. js "x") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticSmoothAbs.y Mozilla SVGPathSegCurvetoQuadraticSmoothAbs.y documentation> 
+setY ::
+     (MonadDOM m) =>
+       SVGPathSegCurvetoQuadraticSmoothAbs -> Float -> m ()
+setY self val = liftDOM (self ^. jss "y" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticSmoothAbs.y Mozilla SVGPathSegCurvetoQuadraticSmoothAbs.y documentation> 
+getY ::
+     (MonadDOM m) => SVGPathSegCurvetoQuadraticSmoothAbs -> m Float
+getY self
+  = liftDOM (realToFrac <$> ((self ^. js "y") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGPathSegCurvetoQuadraticSmoothRel.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGPathSegCurvetoQuadraticSmoothRel.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGPathSegCurvetoQuadraticSmoothRel.hs
@@ -0,0 +1,41 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGPathSegCurvetoQuadraticSmoothRel
+       (setX, getX, setY, getY, SVGPathSegCurvetoQuadraticSmoothRel,
+        castToSVGPathSegCurvetoQuadraticSmoothRel,
+        gTypeSVGPathSegCurvetoQuadraticSmoothRel)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticSmoothRel.x Mozilla SVGPathSegCurvetoQuadraticSmoothRel.x documentation> 
+setX ::
+     (MonadDOM m) =>
+       SVGPathSegCurvetoQuadraticSmoothRel -> Float -> m ()
+setX self val = liftDOM (self ^. jss "x" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticSmoothRel.x Mozilla SVGPathSegCurvetoQuadraticSmoothRel.x documentation> 
+getX ::
+     (MonadDOM m) => SVGPathSegCurvetoQuadraticSmoothRel -> m Float
+getX self
+  = liftDOM (realToFrac <$> ((self ^. js "x") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticSmoothRel.y Mozilla SVGPathSegCurvetoQuadraticSmoothRel.y documentation> 
+setY ::
+     (MonadDOM m) =>
+       SVGPathSegCurvetoQuadraticSmoothRel -> Float -> m ()
+setY self val = liftDOM (self ^. jss "y" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticSmoothRel.y Mozilla SVGPathSegCurvetoQuadraticSmoothRel.y documentation> 
+getY ::
+     (MonadDOM m) => SVGPathSegCurvetoQuadraticSmoothRel -> m Float
+getY self
+  = liftDOM (realToFrac <$> ((self ^. js "y") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGPathSegLinetoAbs.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGPathSegLinetoAbs.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGPathSegLinetoAbs.hs
@@ -0,0 +1,34 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGPathSegLinetoAbs
+       (setX, getX, setY, getY, SVGPathSegLinetoAbs,
+        castToSVGPathSegLinetoAbs, gTypeSVGPathSegLinetoAbs)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoAbs.x Mozilla SVGPathSegLinetoAbs.x documentation> 
+setX :: (MonadDOM m) => SVGPathSegLinetoAbs -> Float -> m ()
+setX self val = liftDOM (self ^. jss "x" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoAbs.x Mozilla SVGPathSegLinetoAbs.x documentation> 
+getX :: (MonadDOM m) => SVGPathSegLinetoAbs -> m Float
+getX self
+  = liftDOM (realToFrac <$> ((self ^. js "x") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoAbs.y Mozilla SVGPathSegLinetoAbs.y documentation> 
+setY :: (MonadDOM m) => SVGPathSegLinetoAbs -> Float -> m ()
+setY self val = liftDOM (self ^. jss "y" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoAbs.y Mozilla SVGPathSegLinetoAbs.y documentation> 
+getY :: (MonadDOM m) => SVGPathSegLinetoAbs -> m Float
+getY self
+  = liftDOM (realToFrac <$> ((self ^. js "y") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGPathSegLinetoHorizontalAbs.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGPathSegLinetoHorizontalAbs.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGPathSegLinetoHorizontalAbs.hs
@@ -0,0 +1,27 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGPathSegLinetoHorizontalAbs
+       (setX, getX, SVGPathSegLinetoHorizontalAbs,
+        castToSVGPathSegLinetoHorizontalAbs,
+        gTypeSVGPathSegLinetoHorizontalAbs)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoHorizontalAbs.x Mozilla SVGPathSegLinetoHorizontalAbs.x documentation> 
+setX ::
+     (MonadDOM m) => SVGPathSegLinetoHorizontalAbs -> Float -> m ()
+setX self val = liftDOM (self ^. jss "x" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoHorizontalAbs.x Mozilla SVGPathSegLinetoHorizontalAbs.x documentation> 
+getX :: (MonadDOM m) => SVGPathSegLinetoHorizontalAbs -> m Float
+getX self
+  = liftDOM (realToFrac <$> ((self ^. js "x") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGPathSegLinetoHorizontalRel.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGPathSegLinetoHorizontalRel.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGPathSegLinetoHorizontalRel.hs
@@ -0,0 +1,27 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGPathSegLinetoHorizontalRel
+       (setX, getX, SVGPathSegLinetoHorizontalRel,
+        castToSVGPathSegLinetoHorizontalRel,
+        gTypeSVGPathSegLinetoHorizontalRel)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoHorizontalRel.x Mozilla SVGPathSegLinetoHorizontalRel.x documentation> 
+setX ::
+     (MonadDOM m) => SVGPathSegLinetoHorizontalRel -> Float -> m ()
+setX self val = liftDOM (self ^. jss "x" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoHorizontalRel.x Mozilla SVGPathSegLinetoHorizontalRel.x documentation> 
+getX :: (MonadDOM m) => SVGPathSegLinetoHorizontalRel -> m Float
+getX self
+  = liftDOM (realToFrac <$> ((self ^. js "x") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGPathSegLinetoRel.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGPathSegLinetoRel.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGPathSegLinetoRel.hs
@@ -0,0 +1,34 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGPathSegLinetoRel
+       (setX, getX, setY, getY, SVGPathSegLinetoRel,
+        castToSVGPathSegLinetoRel, gTypeSVGPathSegLinetoRel)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoRel.x Mozilla SVGPathSegLinetoRel.x documentation> 
+setX :: (MonadDOM m) => SVGPathSegLinetoRel -> Float -> m ()
+setX self val = liftDOM (self ^. jss "x" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoRel.x Mozilla SVGPathSegLinetoRel.x documentation> 
+getX :: (MonadDOM m) => SVGPathSegLinetoRel -> m Float
+getX self
+  = liftDOM (realToFrac <$> ((self ^. js "x") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoRel.y Mozilla SVGPathSegLinetoRel.y documentation> 
+setY :: (MonadDOM m) => SVGPathSegLinetoRel -> Float -> m ()
+setY self val = liftDOM (self ^. jss "y" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoRel.y Mozilla SVGPathSegLinetoRel.y documentation> 
+getY :: (MonadDOM m) => SVGPathSegLinetoRel -> m Float
+getY self
+  = liftDOM (realToFrac <$> ((self ^. js "y") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGPathSegLinetoVerticalAbs.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGPathSegLinetoVerticalAbs.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGPathSegLinetoVerticalAbs.hs
@@ -0,0 +1,27 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGPathSegLinetoVerticalAbs
+       (setY, getY, SVGPathSegLinetoVerticalAbs,
+        castToSVGPathSegLinetoVerticalAbs,
+        gTypeSVGPathSegLinetoVerticalAbs)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoVerticalAbs.y Mozilla SVGPathSegLinetoVerticalAbs.y documentation> 
+setY ::
+     (MonadDOM m) => SVGPathSegLinetoVerticalAbs -> Float -> m ()
+setY self val = liftDOM (self ^. jss "y" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoVerticalAbs.y Mozilla SVGPathSegLinetoVerticalAbs.y documentation> 
+getY :: (MonadDOM m) => SVGPathSegLinetoVerticalAbs -> m Float
+getY self
+  = liftDOM (realToFrac <$> ((self ^. js "y") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGPathSegLinetoVerticalRel.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGPathSegLinetoVerticalRel.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGPathSegLinetoVerticalRel.hs
@@ -0,0 +1,27 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGPathSegLinetoVerticalRel
+       (setY, getY, SVGPathSegLinetoVerticalRel,
+        castToSVGPathSegLinetoVerticalRel,
+        gTypeSVGPathSegLinetoVerticalRel)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoVerticalRel.y Mozilla SVGPathSegLinetoVerticalRel.y documentation> 
+setY ::
+     (MonadDOM m) => SVGPathSegLinetoVerticalRel -> Float -> m ()
+setY self val = liftDOM (self ^. jss "y" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoVerticalRel.y Mozilla SVGPathSegLinetoVerticalRel.y documentation> 
+getY :: (MonadDOM m) => SVGPathSegLinetoVerticalRel -> m Float
+getY self
+  = liftDOM (realToFrac <$> ((self ^. js "y") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGPathSegList.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGPathSegList.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGPathSegList.hs
@@ -0,0 +1,74 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGPathSegList
+       (clear, initialize, getItem, insertItemBefore, replaceItem,
+        removeItem, appendItem, getNumberOfItems, SVGPathSegList,
+        castToSVGPathSegList, gTypeSVGPathSegList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.clear Mozilla SVGPathSegList.clear documentation> 
+clear :: (MonadDOM m) => SVGPathSegList -> m ()
+clear self = liftDOM (void (self ^. js "clear"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.initialize Mozilla SVGPathSegList.initialize documentation> 
+initialize ::
+           (MonadDOM m, IsSVGPathSeg newItem) =>
+             SVGPathSegList -> Maybe newItem -> m (Maybe SVGPathSeg)
+initialize self newItem
+  = liftDOM
+      ((self ^. jsf "initialize" [toJSVal newItem]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.getItem Mozilla SVGPathSegList.getItem documentation> 
+getItem ::
+        (MonadDOM m) => SVGPathSegList -> Word -> m (Maybe SVGPathSeg)
+getItem self index
+  = liftDOM ((self ^. jsf "getItem" [toJSVal index]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.insertItemBefore Mozilla SVGPathSegList.insertItemBefore documentation> 
+insertItemBefore ::
+                 (MonadDOM m, IsSVGPathSeg newItem) =>
+                   SVGPathSegList -> Maybe newItem -> Word -> m (Maybe SVGPathSeg)
+insertItemBefore self newItem index
+  = liftDOM
+      ((self ^. jsf "insertItemBefore" [toJSVal newItem, toJSVal index])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.replaceItem Mozilla SVGPathSegList.replaceItem documentation> 
+replaceItem ::
+            (MonadDOM m, IsSVGPathSeg newItem) =>
+              SVGPathSegList -> Maybe newItem -> Word -> m (Maybe SVGPathSeg)
+replaceItem self newItem index
+  = liftDOM
+      ((self ^. jsf "replaceItem" [toJSVal newItem, toJSVal index]) >>=
+         fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.removeItem Mozilla SVGPathSegList.removeItem documentation> 
+removeItem ::
+           (MonadDOM m) => SVGPathSegList -> Word -> m (Maybe SVGPathSeg)
+removeItem self index
+  = liftDOM
+      ((self ^. jsf "removeItem" [toJSVal index]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.appendItem Mozilla SVGPathSegList.appendItem documentation> 
+appendItem ::
+           (MonadDOM m, IsSVGPathSeg newItem) =>
+             SVGPathSegList -> Maybe newItem -> m (Maybe SVGPathSeg)
+appendItem self newItem
+  = liftDOM
+      ((self ^. jsf "appendItem" [toJSVal newItem]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.numberOfItems Mozilla SVGPathSegList.numberOfItems documentation> 
+getNumberOfItems :: (MonadDOM m) => SVGPathSegList -> m Word
+getNumberOfItems self
+  = liftDOM
+      (round <$> ((self ^. js "numberOfItems") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGPathSegMovetoAbs.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGPathSegMovetoAbs.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGPathSegMovetoAbs.hs
@@ -0,0 +1,34 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGPathSegMovetoAbs
+       (setX, getX, setY, getY, SVGPathSegMovetoAbs,
+        castToSVGPathSegMovetoAbs, gTypeSVGPathSegMovetoAbs)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegMovetoAbs.x Mozilla SVGPathSegMovetoAbs.x documentation> 
+setX :: (MonadDOM m) => SVGPathSegMovetoAbs -> Float -> m ()
+setX self val = liftDOM (self ^. jss "x" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegMovetoAbs.x Mozilla SVGPathSegMovetoAbs.x documentation> 
+getX :: (MonadDOM m) => SVGPathSegMovetoAbs -> m Float
+getX self
+  = liftDOM (realToFrac <$> ((self ^. js "x") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegMovetoAbs.y Mozilla SVGPathSegMovetoAbs.y documentation> 
+setY :: (MonadDOM m) => SVGPathSegMovetoAbs -> Float -> m ()
+setY self val = liftDOM (self ^. jss "y" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegMovetoAbs.y Mozilla SVGPathSegMovetoAbs.y documentation> 
+getY :: (MonadDOM m) => SVGPathSegMovetoAbs -> m Float
+getY self
+  = liftDOM (realToFrac <$> ((self ^. js "y") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGPathSegMovetoRel.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGPathSegMovetoRel.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGPathSegMovetoRel.hs
@@ -0,0 +1,34 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGPathSegMovetoRel
+       (setX, getX, setY, getY, SVGPathSegMovetoRel,
+        castToSVGPathSegMovetoRel, gTypeSVGPathSegMovetoRel)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegMovetoRel.x Mozilla SVGPathSegMovetoRel.x documentation> 
+setX :: (MonadDOM m) => SVGPathSegMovetoRel -> Float -> m ()
+setX self val = liftDOM (self ^. jss "x" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegMovetoRel.x Mozilla SVGPathSegMovetoRel.x documentation> 
+getX :: (MonadDOM m) => SVGPathSegMovetoRel -> m Float
+getX self
+  = liftDOM (realToFrac <$> ((self ^. js "x") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegMovetoRel.y Mozilla SVGPathSegMovetoRel.y documentation> 
+setY :: (MonadDOM m) => SVGPathSegMovetoRel -> Float -> m ()
+setY self val = liftDOM (self ^. jss "y" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegMovetoRel.y Mozilla SVGPathSegMovetoRel.y documentation> 
+getY :: (MonadDOM m) => SVGPathSegMovetoRel -> m Float
+getY self
+  = liftDOM (realToFrac <$> ((self ^. js "y") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGPatternElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGPatternElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGPatternElement.hs
@@ -0,0 +1,58 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGPatternElement
+       (getPatternUnits, getPatternContentUnits, getPatternTransform,
+        getX, getY, getWidth, getHeight, SVGPatternElement,
+        castToSVGPatternElement, gTypeSVGPatternElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPatternElement.patternUnits Mozilla SVGPatternElement.patternUnits documentation> 
+getPatternUnits ::
+                (MonadDOM m) =>
+                  SVGPatternElement -> m (Maybe SVGAnimatedEnumeration)
+getPatternUnits self
+  = liftDOM ((self ^. js "patternUnits") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPatternElement.patternContentUnits Mozilla SVGPatternElement.patternContentUnits documentation> 
+getPatternContentUnits ::
+                       (MonadDOM m) =>
+                         SVGPatternElement -> m (Maybe SVGAnimatedEnumeration)
+getPatternContentUnits self
+  = liftDOM ((self ^. js "patternContentUnits") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPatternElement.patternTransform Mozilla SVGPatternElement.patternTransform documentation> 
+getPatternTransform ::
+                    (MonadDOM m) =>
+                      SVGPatternElement -> m (Maybe SVGAnimatedTransformList)
+getPatternTransform self
+  = liftDOM ((self ^. js "patternTransform") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPatternElement.x Mozilla SVGPatternElement.x documentation> 
+getX ::
+     (MonadDOM m) => SVGPatternElement -> m (Maybe SVGAnimatedLength)
+getX self = liftDOM ((self ^. js "x") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPatternElement.y Mozilla SVGPatternElement.y documentation> 
+getY ::
+     (MonadDOM m) => SVGPatternElement -> m (Maybe SVGAnimatedLength)
+getY self = liftDOM ((self ^. js "y") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPatternElement.width Mozilla SVGPatternElement.width documentation> 
+getWidth ::
+         (MonadDOM m) => SVGPatternElement -> m (Maybe SVGAnimatedLength)
+getWidth self = liftDOM ((self ^. js "width") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPatternElement.height Mozilla SVGPatternElement.height documentation> 
+getHeight ::
+          (MonadDOM m) => SVGPatternElement -> m (Maybe SVGAnimatedLength)
+getHeight self = liftDOM ((self ^. js "height") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGPoint.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGPoint.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGPoint.hs
@@ -0,0 +1,41 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGPoint
+       (matrixTransform, setX, getX, setY, getY, SVGPoint, castToSVGPoint,
+        gTypeSVGPoint)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPoint.matrixTransform Mozilla SVGPoint.matrixTransform documentation> 
+matrixTransform ::
+                (MonadDOM m) => SVGPoint -> Maybe SVGMatrix -> m (Maybe SVGPoint)
+matrixTransform self matrix
+  = liftDOM
+      ((self ^. jsf "matrixTransform" [toJSVal matrix]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPoint.x Mozilla SVGPoint.x documentation> 
+setX :: (MonadDOM m) => SVGPoint -> Float -> m ()
+setX self val = liftDOM (self ^. jss "x" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPoint.x Mozilla SVGPoint.x documentation> 
+getX :: (MonadDOM m) => SVGPoint -> m Float
+getX self
+  = liftDOM (realToFrac <$> ((self ^. js "x") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPoint.y Mozilla SVGPoint.y documentation> 
+setY :: (MonadDOM m) => SVGPoint -> Float -> m ()
+setY self val = liftDOM (self ^. jss "y" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPoint.y Mozilla SVGPoint.y documentation> 
+getY :: (MonadDOM m) => SVGPoint -> m Float
+getY self
+  = liftDOM (realToFrac <$> ((self ^. js "y") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGPointList.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGPointList.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGPointList.hs
@@ -0,0 +1,72 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGPointList
+       (clear, initialize, getItem, insertItemBefore, replaceItem,
+        removeItem, appendItem, getNumberOfItems, SVGPointList,
+        castToSVGPointList, gTypeSVGPointList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.clear Mozilla SVGPointList.clear documentation> 
+clear :: (MonadDOM m) => SVGPointList -> m ()
+clear self = liftDOM (void (self ^. js "clear"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.initialize Mozilla SVGPointList.initialize documentation> 
+initialize ::
+           (MonadDOM m) =>
+             SVGPointList -> Maybe SVGPoint -> m (Maybe SVGPoint)
+initialize self item
+  = liftDOM ((self ^. jsf "initialize" [toJSVal item]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.getItem Mozilla SVGPointList.getItem documentation> 
+getItem ::
+        (MonadDOM m) => SVGPointList -> Word -> m (Maybe SVGPoint)
+getItem self index
+  = liftDOM ((self ^. jsf "getItem" [toJSVal index]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.insertItemBefore Mozilla SVGPointList.insertItemBefore documentation> 
+insertItemBefore ::
+                 (MonadDOM m) =>
+                   SVGPointList -> Maybe SVGPoint -> Word -> m (Maybe SVGPoint)
+insertItemBefore self item index
+  = liftDOM
+      ((self ^. jsf "insertItemBefore" [toJSVal item, toJSVal index]) >>=
+         fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.replaceItem Mozilla SVGPointList.replaceItem documentation> 
+replaceItem ::
+            (MonadDOM m) =>
+              SVGPointList -> Maybe SVGPoint -> Word -> m (Maybe SVGPoint)
+replaceItem self item index
+  = liftDOM
+      ((self ^. jsf "replaceItem" [toJSVal item, toJSVal index]) >>=
+         fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.removeItem Mozilla SVGPointList.removeItem documentation> 
+removeItem ::
+           (MonadDOM m) => SVGPointList -> Word -> m (Maybe SVGPoint)
+removeItem self index
+  = liftDOM
+      ((self ^. jsf "removeItem" [toJSVal index]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.appendItem Mozilla SVGPointList.appendItem documentation> 
+appendItem ::
+           (MonadDOM m) =>
+             SVGPointList -> Maybe SVGPoint -> m (Maybe SVGPoint)
+appendItem self item
+  = liftDOM ((self ^. jsf "appendItem" [toJSVal item]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.numberOfItems Mozilla SVGPointList.numberOfItems documentation> 
+getNumberOfItems :: (MonadDOM m) => SVGPointList -> m Word
+getNumberOfItems self
+  = liftDOM
+      (round <$> ((self ^. js "numberOfItems") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGPolygonElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGPolygonElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGPolygonElement.hs
@@ -0,0 +1,27 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGPolygonElement
+       (getPoints, getAnimatedPoints, SVGPolygonElement,
+        castToSVGPolygonElement, gTypeSVGPolygonElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPolygonElement.points Mozilla SVGPolygonElement.points documentation> 
+getPoints ::
+          (MonadDOM m) => SVGPolygonElement -> m (Maybe SVGPointList)
+getPoints self = liftDOM ((self ^. js "points") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPolygonElement.animatedPoints Mozilla SVGPolygonElement.animatedPoints documentation> 
+getAnimatedPoints ::
+                  (MonadDOM m) => SVGPolygonElement -> m (Maybe SVGPointList)
+getAnimatedPoints self
+  = liftDOM ((self ^. js "animatedPoints") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGPolylineElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGPolylineElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGPolylineElement.hs
@@ -0,0 +1,27 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGPolylineElement
+       (getPoints, getAnimatedPoints, SVGPolylineElement,
+        castToSVGPolylineElement, gTypeSVGPolylineElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPolylineElement.points Mozilla SVGPolylineElement.points documentation> 
+getPoints ::
+          (MonadDOM m) => SVGPolylineElement -> m (Maybe SVGPointList)
+getPoints self = liftDOM ((self ^. js "points") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPolylineElement.animatedPoints Mozilla SVGPolylineElement.animatedPoints documentation> 
+getAnimatedPoints ::
+                  (MonadDOM m) => SVGPolylineElement -> m (Maybe SVGPointList)
+getAnimatedPoints self
+  = liftDOM ((self ^. js "animatedPoints") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGPreserveAspectRatio.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGPreserveAspectRatio.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGPreserveAspectRatio.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGPreserveAspectRatio
+       (pattern SVG_PRESERVEASPECTRATIO_UNKNOWN,
+        pattern SVG_PRESERVEASPECTRATIO_NONE,
+        pattern SVG_PRESERVEASPECTRATIO_XMINYMIN,
+        pattern SVG_PRESERVEASPECTRATIO_XMIDYMIN,
+        pattern SVG_PRESERVEASPECTRATIO_XMAXYMIN,
+        pattern SVG_PRESERVEASPECTRATIO_XMINYMID,
+        pattern SVG_PRESERVEASPECTRATIO_XMIDYMID,
+        pattern SVG_PRESERVEASPECTRATIO_XMAXYMID,
+        pattern SVG_PRESERVEASPECTRATIO_XMINYMAX,
+        pattern SVG_PRESERVEASPECTRATIO_XMIDYMAX,
+        pattern SVG_PRESERVEASPECTRATIO_XMAXYMAX,
+        pattern SVG_MEETORSLICE_UNKNOWN, pattern SVG_MEETORSLICE_MEET,
+        pattern SVG_MEETORSLICE_SLICE, setAlign, getAlign, setMeetOrSlice,
+        getMeetOrSlice, SVGPreserveAspectRatio,
+        castToSVGPreserveAspectRatio, gTypeSVGPreserveAspectRatio)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+pattern SVG_PRESERVEASPECTRATIO_UNKNOWN = 0
+pattern SVG_PRESERVEASPECTRATIO_NONE = 1
+pattern SVG_PRESERVEASPECTRATIO_XMINYMIN = 2
+pattern SVG_PRESERVEASPECTRATIO_XMIDYMIN = 3
+pattern SVG_PRESERVEASPECTRATIO_XMAXYMIN = 4
+pattern SVG_PRESERVEASPECTRATIO_XMINYMID = 5
+pattern SVG_PRESERVEASPECTRATIO_XMIDYMID = 6
+pattern SVG_PRESERVEASPECTRATIO_XMAXYMID = 7
+pattern SVG_PRESERVEASPECTRATIO_XMINYMAX = 8
+pattern SVG_PRESERVEASPECTRATIO_XMIDYMAX = 9
+pattern SVG_PRESERVEASPECTRATIO_XMAXYMAX = 10
+pattern SVG_MEETORSLICE_UNKNOWN = 0
+pattern SVG_MEETORSLICE_MEET = 1
+pattern SVG_MEETORSLICE_SLICE = 2
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPreserveAspectRatio.align Mozilla SVGPreserveAspectRatio.align documentation> 
+setAlign :: (MonadDOM m) => SVGPreserveAspectRatio -> Word -> m ()
+setAlign self val = liftDOM (self ^. jss "align" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPreserveAspectRatio.align Mozilla SVGPreserveAspectRatio.align documentation> 
+getAlign :: (MonadDOM m) => SVGPreserveAspectRatio -> m Word
+getAlign self
+  = liftDOM (round <$> ((self ^. js "align") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPreserveAspectRatio.meetOrSlice Mozilla SVGPreserveAspectRatio.meetOrSlice documentation> 
+setMeetOrSlice ::
+               (MonadDOM m) => SVGPreserveAspectRatio -> Word -> m ()
+setMeetOrSlice self val
+  = liftDOM (self ^. jss "meetOrSlice" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPreserveAspectRatio.meetOrSlice Mozilla SVGPreserveAspectRatio.meetOrSlice documentation> 
+getMeetOrSlice :: (MonadDOM m) => SVGPreserveAspectRatio -> m Word
+getMeetOrSlice self
+  = liftDOM (round <$> ((self ^. js "meetOrSlice") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGRadialGradientElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGRadialGradientElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGRadialGradientElement.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGRadialGradientElement
+       (getCx, getCy, getR, getFx, getFy, getFr, SVGRadialGradientElement,
+        castToSVGRadialGradientElement, gTypeSVGRadialGradientElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRadialGradientElement.cx Mozilla SVGRadialGradientElement.cx documentation> 
+getCx ::
+      (MonadDOM m) =>
+        SVGRadialGradientElement -> m (Maybe SVGAnimatedLength)
+getCx self = liftDOM ((self ^. js "cx") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRadialGradientElement.cy Mozilla SVGRadialGradientElement.cy documentation> 
+getCy ::
+      (MonadDOM m) =>
+        SVGRadialGradientElement -> m (Maybe SVGAnimatedLength)
+getCy self = liftDOM ((self ^. js "cy") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRadialGradientElement.r Mozilla SVGRadialGradientElement.r documentation> 
+getR ::
+     (MonadDOM m) =>
+       SVGRadialGradientElement -> m (Maybe SVGAnimatedLength)
+getR self = liftDOM ((self ^. js "r") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRadialGradientElement.fx Mozilla SVGRadialGradientElement.fx documentation> 
+getFx ::
+      (MonadDOM m) =>
+        SVGRadialGradientElement -> m (Maybe SVGAnimatedLength)
+getFx self = liftDOM ((self ^. js "fx") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRadialGradientElement.fy Mozilla SVGRadialGradientElement.fy documentation> 
+getFy ::
+      (MonadDOM m) =>
+        SVGRadialGradientElement -> m (Maybe SVGAnimatedLength)
+getFy self = liftDOM ((self ^. js "fy") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRadialGradientElement.fr Mozilla SVGRadialGradientElement.fr documentation> 
+getFr ::
+      (MonadDOM m) =>
+        SVGRadialGradientElement -> m (Maybe SVGAnimatedLength)
+getFr self = liftDOM ((self ^. js "fr") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGRect.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGRect.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGRect.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGRect
+       (setX, getX, setY, getY, setWidth, getWidth, setHeight, getHeight,
+        SVGRect, castToSVGRect, gTypeSVGRect)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRect.x Mozilla SVGRect.x documentation> 
+setX :: (MonadDOM m) => SVGRect -> Float -> m ()
+setX self val = liftDOM (self ^. jss "x" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRect.x Mozilla SVGRect.x documentation> 
+getX :: (MonadDOM m) => SVGRect -> m Float
+getX self
+  = liftDOM (realToFrac <$> ((self ^. js "x") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRect.y Mozilla SVGRect.y documentation> 
+setY :: (MonadDOM m) => SVGRect -> Float -> m ()
+setY self val = liftDOM (self ^. jss "y" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRect.y Mozilla SVGRect.y documentation> 
+getY :: (MonadDOM m) => SVGRect -> m Float
+getY self
+  = liftDOM (realToFrac <$> ((self ^. js "y") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRect.width Mozilla SVGRect.width documentation> 
+setWidth :: (MonadDOM m) => SVGRect -> Float -> m ()
+setWidth self val = liftDOM (self ^. jss "width" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRect.width Mozilla SVGRect.width documentation> 
+getWidth :: (MonadDOM m) => SVGRect -> m Float
+getWidth self
+  = liftDOM (realToFrac <$> ((self ^. js "width") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRect.height Mozilla SVGRect.height documentation> 
+setHeight :: (MonadDOM m) => SVGRect -> Float -> m ()
+setHeight self val = liftDOM (self ^. jss "height" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRect.height Mozilla SVGRect.height documentation> 
+getHeight :: (MonadDOM m) => SVGRect -> m Float
+getHeight self
+  = liftDOM (realToFrac <$> ((self ^. js "height") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGRectElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGRectElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGRectElement.hs
@@ -0,0 +1,46 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGRectElement
+       (getX, getY, getWidth, getHeight, getRx, getRy, SVGRectElement,
+        castToSVGRectElement, gTypeSVGRectElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRectElement.x Mozilla SVGRectElement.x documentation> 
+getX ::
+     (MonadDOM m) => SVGRectElement -> m (Maybe SVGAnimatedLength)
+getX self = liftDOM ((self ^. js "x") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRectElement.y Mozilla SVGRectElement.y documentation> 
+getY ::
+     (MonadDOM m) => SVGRectElement -> m (Maybe SVGAnimatedLength)
+getY self = liftDOM ((self ^. js "y") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRectElement.width Mozilla SVGRectElement.width documentation> 
+getWidth ::
+         (MonadDOM m) => SVGRectElement -> m (Maybe SVGAnimatedLength)
+getWidth self = liftDOM ((self ^. js "width") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRectElement.height Mozilla SVGRectElement.height documentation> 
+getHeight ::
+          (MonadDOM m) => SVGRectElement -> m (Maybe SVGAnimatedLength)
+getHeight self = liftDOM ((self ^. js "height") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRectElement.rx Mozilla SVGRectElement.rx documentation> 
+getRx ::
+      (MonadDOM m) => SVGRectElement -> m (Maybe SVGAnimatedLength)
+getRx self = liftDOM ((self ^. js "rx") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRectElement.ry Mozilla SVGRectElement.ry documentation> 
+getRy ::
+      (MonadDOM m) => SVGRectElement -> m (Maybe SVGAnimatedLength)
+getRy self = liftDOM ((self ^. js "ry") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGRenderingIntent.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGRenderingIntent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGRenderingIntent.hs
@@ -0,0 +1,26 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGRenderingIntent
+       (pattern RENDERING_INTENT_UNKNOWN, pattern RENDERING_INTENT_AUTO,
+        pattern RENDERING_INTENT_PERCEPTUAL,
+        pattern RENDERING_INTENT_RELATIVE_COLORIMETRIC,
+        pattern RENDERING_INTENT_SATURATION,
+        pattern RENDERING_INTENT_ABSOLUTE_COLORIMETRIC, SVGRenderingIntent,
+        castToSVGRenderingIntent, gTypeSVGRenderingIntent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+pattern RENDERING_INTENT_UNKNOWN = 0
+pattern RENDERING_INTENT_AUTO = 1
+pattern RENDERING_INTENT_PERCEPTUAL = 2
+pattern RENDERING_INTENT_RELATIVE_COLORIMETRIC = 3
+pattern RENDERING_INTENT_SATURATION = 4
+pattern RENDERING_INTENT_ABSOLUTE_COLORIMETRIC = 5
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGSVGElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGSVGElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGSVGElement.hs
@@ -0,0 +1,287 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGSVGElement
+       (suspendRedraw, unsuspendRedraw, unsuspendRedrawAll, forceRedraw,
+        pauseAnimations, unpauseAnimations, animationsPaused,
+        getCurrentTime, setCurrentTime, getIntersectionList,
+        getEnclosureList, checkIntersection, checkEnclosure, deselectAll,
+        createSVGNumber, createSVGLength, createSVGAngle, createSVGPoint,
+        createSVGMatrix, createSVGRect, createSVGTransform,
+        createSVGTransformFromMatrix, getElementById, getX, getY, getWidth,
+        getHeight, setContentScriptType, getContentScriptType,
+        setContentStyleType, getContentStyleType, getViewport,
+        getPixelUnitToMillimeterX, getPixelUnitToMillimeterY,
+        getScreenPixelToMillimeterX, getScreenPixelToMillimeterY,
+        getUseCurrentView, getCurrentView, setCurrentScale,
+        getCurrentScale, getCurrentTranslate, SVGSVGElement,
+        castToSVGSVGElement, gTypeSVGSVGElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.suspendRedraw Mozilla SVGSVGElement.suspendRedraw documentation> 
+suspendRedraw :: (MonadDOM m) => SVGSVGElement -> Word -> m Word
+suspendRedraw self maxWaitMilliseconds
+  = liftDOM
+      (round <$>
+         ((self ^. jsf "suspendRedraw" [toJSVal maxWaitMilliseconds]) >>=
+            valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.unsuspendRedraw Mozilla SVGSVGElement.unsuspendRedraw documentation> 
+unsuspendRedraw :: (MonadDOM m) => SVGSVGElement -> Word -> m ()
+unsuspendRedraw self suspendHandleId
+  = liftDOM
+      (void (self ^. jsf "unsuspendRedraw" [toJSVal suspendHandleId]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.unsuspendRedrawAll Mozilla SVGSVGElement.unsuspendRedrawAll documentation> 
+unsuspendRedrawAll :: (MonadDOM m) => SVGSVGElement -> m ()
+unsuspendRedrawAll self
+  = liftDOM (void (self ^. js "unsuspendRedrawAll"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.forceRedraw Mozilla SVGSVGElement.forceRedraw documentation> 
+forceRedraw :: (MonadDOM m) => SVGSVGElement -> m ()
+forceRedraw self = liftDOM (void (self ^. js "forceRedraw"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.pauseAnimations Mozilla SVGSVGElement.pauseAnimations documentation> 
+pauseAnimations :: (MonadDOM m) => SVGSVGElement -> m ()
+pauseAnimations self
+  = liftDOM (void (self ^. js "pauseAnimations"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.unpauseAnimations Mozilla SVGSVGElement.unpauseAnimations documentation> 
+unpauseAnimations :: (MonadDOM m) => SVGSVGElement -> m ()
+unpauseAnimations self
+  = liftDOM (void (self ^. js "unpauseAnimations"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.animationsPaused Mozilla SVGSVGElement.animationsPaused documentation> 
+animationsPaused :: (MonadDOM m) => SVGSVGElement -> m Bool
+animationsPaused self
+  = liftDOM ((self ^. js "animationsPaused") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.getCurrentTime Mozilla SVGSVGElement.getCurrentTime documentation> 
+getCurrentTime :: (MonadDOM m) => SVGSVGElement -> m Float
+getCurrentTime self
+  = liftDOM
+      (realToFrac <$> ((self ^. js "getCurrentTime") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.setCurrentTime Mozilla SVGSVGElement.setCurrentTime documentation> 
+setCurrentTime :: (MonadDOM m) => SVGSVGElement -> Float -> m ()
+setCurrentTime self seconds
+  = liftDOM (void (self ^. jsf "setCurrentTime" [toJSVal seconds]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.getIntersectionList Mozilla SVGSVGElement.getIntersectionList documentation> 
+getIntersectionList ::
+                    (MonadDOM m, IsSVGElement referenceElement) =>
+                      SVGSVGElement ->
+                        Maybe SVGRect -> Maybe referenceElement -> m (Maybe NodeList)
+getIntersectionList self rect referenceElement
+  = liftDOM
+      ((self ^. jsf "getIntersectionList"
+          [toJSVal rect, toJSVal referenceElement])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.getEnclosureList Mozilla SVGSVGElement.getEnclosureList documentation> 
+getEnclosureList ::
+                 (MonadDOM m, IsSVGElement referenceElement) =>
+                   SVGSVGElement ->
+                     Maybe SVGRect -> Maybe referenceElement -> m (Maybe NodeList)
+getEnclosureList self rect referenceElement
+  = liftDOM
+      ((self ^. jsf "getEnclosureList"
+          [toJSVal rect, toJSVal referenceElement])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.checkIntersection Mozilla SVGSVGElement.checkIntersection documentation> 
+checkIntersection ::
+                  (MonadDOM m, IsSVGElement element) =>
+                    SVGSVGElement -> Maybe element -> Maybe SVGRect -> m Bool
+checkIntersection self element rect
+  = liftDOM
+      ((self ^. jsf "checkIntersection" [toJSVal element, toJSVal rect])
+         >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.checkEnclosure Mozilla SVGSVGElement.checkEnclosure documentation> 
+checkEnclosure ::
+               (MonadDOM m, IsSVGElement element) =>
+                 SVGSVGElement -> Maybe element -> Maybe SVGRect -> m Bool
+checkEnclosure self element rect
+  = liftDOM
+      ((self ^. jsf "checkEnclosure" [toJSVal element, toJSVal rect]) >>=
+         valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.deselectAll Mozilla SVGSVGElement.deselectAll documentation> 
+deselectAll :: (MonadDOM m) => SVGSVGElement -> m ()
+deselectAll self = liftDOM (void (self ^. js "deselectAll"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGNumber Mozilla SVGSVGElement.createSVGNumber documentation> 
+createSVGNumber ::
+                (MonadDOM m) => SVGSVGElement -> m (Maybe SVGNumber)
+createSVGNumber self
+  = liftDOM ((self ^. js "createSVGNumber") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGLength Mozilla SVGSVGElement.createSVGLength documentation> 
+createSVGLength ::
+                (MonadDOM m) => SVGSVGElement -> m (Maybe SVGLength)
+createSVGLength self
+  = liftDOM ((self ^. js "createSVGLength") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGAngle Mozilla SVGSVGElement.createSVGAngle documentation> 
+createSVGAngle ::
+               (MonadDOM m) => SVGSVGElement -> m (Maybe SVGAngle)
+createSVGAngle self
+  = liftDOM ((self ^. js "createSVGAngle") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGPoint Mozilla SVGSVGElement.createSVGPoint documentation> 
+createSVGPoint ::
+               (MonadDOM m) => SVGSVGElement -> m (Maybe SVGPoint)
+createSVGPoint self
+  = liftDOM ((self ^. js "createSVGPoint") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGMatrix Mozilla SVGSVGElement.createSVGMatrix documentation> 
+createSVGMatrix ::
+                (MonadDOM m) => SVGSVGElement -> m (Maybe SVGMatrix)
+createSVGMatrix self
+  = liftDOM ((self ^. js "createSVGMatrix") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGRect Mozilla SVGSVGElement.createSVGRect documentation> 
+createSVGRect :: (MonadDOM m) => SVGSVGElement -> m (Maybe SVGRect)
+createSVGRect self
+  = liftDOM ((self ^. js "createSVGRect") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGTransform Mozilla SVGSVGElement.createSVGTransform documentation> 
+createSVGTransform ::
+                   (MonadDOM m) => SVGSVGElement -> m (Maybe SVGTransform)
+createSVGTransform self
+  = liftDOM ((self ^. js "createSVGTransform") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGTransformFromMatrix Mozilla SVGSVGElement.createSVGTransformFromMatrix documentation> 
+createSVGTransformFromMatrix ::
+                             (MonadDOM m) =>
+                               SVGSVGElement -> Maybe SVGMatrix -> m (Maybe SVGTransform)
+createSVGTransformFromMatrix self matrix
+  = liftDOM
+      ((self ^. jsf "createSVGTransformFromMatrix" [toJSVal matrix]) >>=
+         fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.getElementById Mozilla SVGSVGElement.getElementById documentation> 
+getElementById ::
+               (MonadDOM m, ToJSString elementId) =>
+                 SVGSVGElement -> elementId -> m (Maybe Element)
+getElementById self elementId
+  = liftDOM
+      ((self ^. jsf "getElementById" [toJSVal elementId]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.x Mozilla SVGSVGElement.x documentation> 
+getX ::
+     (MonadDOM m) => SVGSVGElement -> m (Maybe SVGAnimatedLength)
+getX self = liftDOM ((self ^. js "x") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.y Mozilla SVGSVGElement.y documentation> 
+getY ::
+     (MonadDOM m) => SVGSVGElement -> m (Maybe SVGAnimatedLength)
+getY self = liftDOM ((self ^. js "y") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.width Mozilla SVGSVGElement.width documentation> 
+getWidth ::
+         (MonadDOM m) => SVGSVGElement -> m (Maybe SVGAnimatedLength)
+getWidth self = liftDOM ((self ^. js "width") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.height Mozilla SVGSVGElement.height documentation> 
+getHeight ::
+          (MonadDOM m) => SVGSVGElement -> m (Maybe SVGAnimatedLength)
+getHeight self = liftDOM ((self ^. js "height") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.contentScriptType Mozilla SVGSVGElement.contentScriptType documentation> 
+setContentScriptType ::
+                     (MonadDOM m, ToJSString val) => SVGSVGElement -> val -> m ()
+setContentScriptType self val
+  = liftDOM (self ^. jss "contentScriptType" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.contentScriptType Mozilla SVGSVGElement.contentScriptType documentation> 
+getContentScriptType ::
+                     (MonadDOM m, FromJSString result) => SVGSVGElement -> m result
+getContentScriptType self
+  = liftDOM ((self ^. js "contentScriptType") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.contentStyleType Mozilla SVGSVGElement.contentStyleType documentation> 
+setContentStyleType ::
+                    (MonadDOM m, ToJSString val) => SVGSVGElement -> val -> m ()
+setContentStyleType self val
+  = liftDOM (self ^. jss "contentStyleType" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.contentStyleType Mozilla SVGSVGElement.contentStyleType documentation> 
+getContentStyleType ::
+                    (MonadDOM m, FromJSString result) => SVGSVGElement -> m result
+getContentStyleType self
+  = liftDOM ((self ^. js "contentStyleType") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.viewport Mozilla SVGSVGElement.viewport documentation> 
+getViewport :: (MonadDOM m) => SVGSVGElement -> m (Maybe SVGRect)
+getViewport self = liftDOM ((self ^. js "viewport") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.pixelUnitToMillimeterX Mozilla SVGSVGElement.pixelUnitToMillimeterX documentation> 
+getPixelUnitToMillimeterX ::
+                          (MonadDOM m) => SVGSVGElement -> m Float
+getPixelUnitToMillimeterX self
+  = liftDOM
+      (realToFrac <$>
+         ((self ^. js "pixelUnitToMillimeterX") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.pixelUnitToMillimeterY Mozilla SVGSVGElement.pixelUnitToMillimeterY documentation> 
+getPixelUnitToMillimeterY ::
+                          (MonadDOM m) => SVGSVGElement -> m Float
+getPixelUnitToMillimeterY self
+  = liftDOM
+      (realToFrac <$>
+         ((self ^. js "pixelUnitToMillimeterY") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.screenPixelToMillimeterX Mozilla SVGSVGElement.screenPixelToMillimeterX documentation> 
+getScreenPixelToMillimeterX ::
+                            (MonadDOM m) => SVGSVGElement -> m Float
+getScreenPixelToMillimeterX self
+  = liftDOM
+      (realToFrac <$>
+         ((self ^. js "screenPixelToMillimeterX") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.screenPixelToMillimeterY Mozilla SVGSVGElement.screenPixelToMillimeterY documentation> 
+getScreenPixelToMillimeterY ::
+                            (MonadDOM m) => SVGSVGElement -> m Float
+getScreenPixelToMillimeterY self
+  = liftDOM
+      (realToFrac <$>
+         ((self ^. js "screenPixelToMillimeterY") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.useCurrentView Mozilla SVGSVGElement.useCurrentView documentation> 
+getUseCurrentView :: (MonadDOM m) => SVGSVGElement -> m Bool
+getUseCurrentView self
+  = liftDOM ((self ^. js "useCurrentView") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.currentView Mozilla SVGSVGElement.currentView documentation> 
+getCurrentView ::
+               (MonadDOM m) => SVGSVGElement -> m (Maybe SVGViewSpec)
+getCurrentView self
+  = liftDOM ((self ^. js "currentView") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.currentScale Mozilla SVGSVGElement.currentScale documentation> 
+setCurrentScale :: (MonadDOM m) => SVGSVGElement -> Float -> m ()
+setCurrentScale self val
+  = liftDOM (self ^. jss "currentScale" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.currentScale Mozilla SVGSVGElement.currentScale documentation> 
+getCurrentScale :: (MonadDOM m) => SVGSVGElement -> m Float
+getCurrentScale self
+  = liftDOM
+      (realToFrac <$> ((self ^. js "currentScale") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.currentTranslate Mozilla SVGSVGElement.currentTranslate documentation> 
+getCurrentTranslate ::
+                    (MonadDOM m) => SVGSVGElement -> m (Maybe SVGPoint)
+getCurrentTranslate self
+  = liftDOM ((self ^. js "currentTranslate") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGScriptElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGScriptElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGScriptElement.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGScriptElement
+       (setType, getType, SVGScriptElement, castToSVGScriptElement,
+        gTypeSVGScriptElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGScriptElement.type Mozilla SVGScriptElement.type documentation> 
+setType ::
+        (MonadDOM m, ToJSString val) =>
+          SVGScriptElement -> Maybe val -> m ()
+setType self val = liftDOM (self ^. jss "type" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGScriptElement.type Mozilla SVGScriptElement.type documentation> 
+getType ::
+        (MonadDOM m, FromJSString result) =>
+          SVGScriptElement -> m (Maybe result)
+getType self = liftDOM ((self ^. js "type") >>= fromMaybeJSString)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGStopElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGStopElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGStopElement.hs
@@ -0,0 +1,21 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGStopElement
+       (getOffset, SVGStopElement, castToSVGStopElement,
+        gTypeSVGStopElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStopElement.offset Mozilla SVGStopElement.offset documentation> 
+getOffset ::
+          (MonadDOM m) => SVGStopElement -> m (Maybe SVGAnimatedNumber)
+getOffset self = liftDOM ((self ^. js "offset") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGStringList.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGStringList.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGStringList.hs
@@ -0,0 +1,77 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGStringList
+       (clear, initialize, getItem, insertItemBefore, replaceItem,
+        removeItem, appendItem, getNumberOfItems, SVGStringList,
+        castToSVGStringList, gTypeSVGStringList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStringList.clear Mozilla SVGStringList.clear documentation> 
+clear :: (MonadDOM m) => SVGStringList -> m ()
+clear self = liftDOM (void (self ^. js "clear"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStringList.initialize Mozilla SVGStringList.initialize documentation> 
+initialize ::
+           (MonadDOM m, ToJSString item, FromJSString result) =>
+             SVGStringList -> item -> m result
+initialize self item
+  = liftDOM
+      ((self ^. jsf "initialize" [toJSVal item]) >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStringList.getItem Mozilla SVGStringList.getItem documentation> 
+getItem ::
+        (MonadDOM m, FromJSString result) =>
+          SVGStringList -> Word -> m result
+getItem self index
+  = liftDOM
+      ((self ^. jsf "getItem" [toJSVal index]) >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStringList.insertItemBefore Mozilla SVGStringList.insertItemBefore documentation> 
+insertItemBefore ::
+                 (MonadDOM m, ToJSString item, FromJSString result) =>
+                   SVGStringList -> item -> Word -> m result
+insertItemBefore self item index
+  = liftDOM
+      ((self ^. jsf "insertItemBefore" [toJSVal item, toJSVal index]) >>=
+         fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStringList.replaceItem Mozilla SVGStringList.replaceItem documentation> 
+replaceItem ::
+            (MonadDOM m, ToJSString item, FromJSString result) =>
+              SVGStringList -> item -> Word -> m result
+replaceItem self item index
+  = liftDOM
+      ((self ^. jsf "replaceItem" [toJSVal item, toJSVal index]) >>=
+         fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStringList.removeItem Mozilla SVGStringList.removeItem documentation> 
+removeItem ::
+           (MonadDOM m, FromJSString result) =>
+             SVGStringList -> Word -> m result
+removeItem self index
+  = liftDOM
+      ((self ^. jsf "removeItem" [toJSVal index]) >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStringList.appendItem Mozilla SVGStringList.appendItem documentation> 
+appendItem ::
+           (MonadDOM m, ToJSString item, FromJSString result) =>
+             SVGStringList -> item -> m result
+appendItem self item
+  = liftDOM
+      ((self ^. jsf "appendItem" [toJSVal item]) >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStringList.numberOfItems Mozilla SVGStringList.numberOfItems documentation> 
+getNumberOfItems :: (MonadDOM m) => SVGStringList -> m Word
+getNumberOfItems self
+  = liftDOM
+      (round <$> ((self ^. js "numberOfItems") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGStyleElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGStyleElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGStyleElement.hs
@@ -0,0 +1,58 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGStyleElement
+       (setDisabled, getDisabled, setType, getType, setMedia, getMedia,
+        setTitle, getTitle, SVGStyleElement, castToSVGStyleElement,
+        gTypeSVGStyleElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStyleElement.disabled Mozilla SVGStyleElement.disabled documentation> 
+setDisabled :: (MonadDOM m) => SVGStyleElement -> Bool -> m ()
+setDisabled self val
+  = liftDOM (self ^. jss "disabled" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStyleElement.disabled Mozilla SVGStyleElement.disabled documentation> 
+getDisabled :: (MonadDOM m) => SVGStyleElement -> m Bool
+getDisabled self = liftDOM ((self ^. js "disabled") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStyleElement.type Mozilla SVGStyleElement.type documentation> 
+setType ::
+        (MonadDOM m, ToJSString val) => SVGStyleElement -> val -> m ()
+setType self val = liftDOM (self ^. jss "type" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStyleElement.type Mozilla SVGStyleElement.type documentation> 
+getType ::
+        (MonadDOM m, FromJSString result) => SVGStyleElement -> m result
+getType self = liftDOM ((self ^. js "type") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStyleElement.media Mozilla SVGStyleElement.media documentation> 
+setMedia ::
+         (MonadDOM m, ToJSString val) => SVGStyleElement -> val -> m ()
+setMedia self val = liftDOM (self ^. jss "media" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStyleElement.media Mozilla SVGStyleElement.media documentation> 
+getMedia ::
+         (MonadDOM m, FromJSString result) => SVGStyleElement -> m result
+getMedia self
+  = liftDOM ((self ^. js "media") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStyleElement.title Mozilla SVGStyleElement.title documentation> 
+setTitle ::
+         (MonadDOM m, ToJSString val) => SVGStyleElement -> val -> m ()
+setTitle self val = liftDOM (self ^. jss "title" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStyleElement.title Mozilla SVGStyleElement.title documentation> 
+getTitle ::
+         (MonadDOM m, FromJSString result) => SVGStyleElement -> m result
+getTitle self
+  = liftDOM ((self ^. js "title") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGTests.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGTests.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGTests.hs
@@ -0,0 +1,42 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGTests
+       (hasExtension, getRequiredFeatures, getRequiredExtensions,
+        getSystemLanguage, SVGTests, castToSVGTests, gTypeSVGTests)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTests.hasExtension Mozilla SVGTests.hasExtension documentation> 
+hasExtension ::
+             (MonadDOM m, ToJSString extension) =>
+               SVGTests -> extension -> m Bool
+hasExtension self extension
+  = liftDOM
+      ((self ^. jsf "hasExtension" [toJSVal extension]) >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTests.requiredFeatures Mozilla SVGTests.requiredFeatures documentation> 
+getRequiredFeatures ::
+                    (MonadDOM m) => SVGTests -> m (Maybe SVGStringList)
+getRequiredFeatures self
+  = liftDOM ((self ^. js "requiredFeatures") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTests.requiredExtensions Mozilla SVGTests.requiredExtensions documentation> 
+getRequiredExtensions ::
+                      (MonadDOM m) => SVGTests -> m (Maybe SVGStringList)
+getRequiredExtensions self
+  = liftDOM ((self ^. js "requiredExtensions") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTests.systemLanguage Mozilla SVGTests.systemLanguage documentation> 
+getSystemLanguage ::
+                  (MonadDOM m) => SVGTests -> m (Maybe SVGStringList)
+getSystemLanguage self
+  = liftDOM ((self ^. js "systemLanguage") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGTextContentElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGTextContentElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGTextContentElement.hs
@@ -0,0 +1,133 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGTextContentElement
+       (getNumberOfChars, getComputedTextLength, getSubStringLength,
+        getStartPositionOfChar, getEndPositionOfChar, getExtentOfChar,
+        getRotationOfChar, getCharNumAtPosition, selectSubString,
+        pattern LENGTHADJUST_UNKNOWN, pattern LENGTHADJUST_SPACING,
+        pattern LENGTHADJUST_SPACINGANDGLYPHS, getTextLength,
+        getLengthAdjust, SVGTextContentElement,
+        castToSVGTextContentElement, gTypeSVGTextContentElement,
+        IsSVGTextContentElement, toSVGTextContentElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getNumberOfChars Mozilla SVGTextContentElement.getNumberOfChars documentation> 
+getNumberOfChars ::
+                 (MonadDOM m, IsSVGTextContentElement self) => self -> m Int
+getNumberOfChars self
+  = liftDOM
+      (round <$>
+         (((toSVGTextContentElement self) ^. js "getNumberOfChars") >>=
+            valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getComputedTextLength Mozilla SVGTextContentElement.getComputedTextLength documentation> 
+getComputedTextLength ::
+                      (MonadDOM m, IsSVGTextContentElement self) => self -> m Float
+getComputedTextLength self
+  = liftDOM
+      (realToFrac <$>
+         (((toSVGTextContentElement self) ^. js "getComputedTextLength") >>=
+            valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getSubStringLength Mozilla SVGTextContentElement.getSubStringLength documentation> 
+getSubStringLength ::
+                   (MonadDOM m, IsSVGTextContentElement self) =>
+                     self -> Word -> Word -> m Float
+getSubStringLength self offset length
+  = liftDOM
+      (realToFrac <$>
+         (((toSVGTextContentElement self) ^. jsf "getSubStringLength"
+             [toJSVal offset, toJSVal length])
+            >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getStartPositionOfChar Mozilla SVGTextContentElement.getStartPositionOfChar documentation> 
+getStartPositionOfChar ::
+                       (MonadDOM m, IsSVGTextContentElement self) =>
+                         self -> Word -> m (Maybe SVGPoint)
+getStartPositionOfChar self offset
+  = liftDOM
+      (((toSVGTextContentElement self) ^. jsf "getStartPositionOfChar"
+          [toJSVal offset])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getEndPositionOfChar Mozilla SVGTextContentElement.getEndPositionOfChar documentation> 
+getEndPositionOfChar ::
+                     (MonadDOM m, IsSVGTextContentElement self) =>
+                       self -> Word -> m (Maybe SVGPoint)
+getEndPositionOfChar self offset
+  = liftDOM
+      (((toSVGTextContentElement self) ^. jsf "getEndPositionOfChar"
+          [toJSVal offset])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getExtentOfChar Mozilla SVGTextContentElement.getExtentOfChar documentation> 
+getExtentOfChar ::
+                (MonadDOM m, IsSVGTextContentElement self) =>
+                  self -> Word -> m (Maybe SVGRect)
+getExtentOfChar self offset
+  = liftDOM
+      (((toSVGTextContentElement self) ^. jsf "getExtentOfChar"
+          [toJSVal offset])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getRotationOfChar Mozilla SVGTextContentElement.getRotationOfChar documentation> 
+getRotationOfChar ::
+                  (MonadDOM m, IsSVGTextContentElement self) =>
+                    self -> Word -> m Float
+getRotationOfChar self offset
+  = liftDOM
+      (realToFrac <$>
+         (((toSVGTextContentElement self) ^. jsf "getRotationOfChar"
+             [toJSVal offset])
+            >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getCharNumAtPosition Mozilla SVGTextContentElement.getCharNumAtPosition documentation> 
+getCharNumAtPosition ::
+                     (MonadDOM m, IsSVGTextContentElement self) =>
+                       self -> Maybe SVGPoint -> m Int
+getCharNumAtPosition self point
+  = liftDOM
+      (round <$>
+         (((toSVGTextContentElement self) ^. jsf "getCharNumAtPosition"
+             [toJSVal point])
+            >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.selectSubString Mozilla SVGTextContentElement.selectSubString documentation> 
+selectSubString ::
+                (MonadDOM m, IsSVGTextContentElement self) =>
+                  self -> Word -> Word -> m ()
+selectSubString self offset length
+  = liftDOM
+      (void
+         ((toSVGTextContentElement self) ^. jsf "selectSubString"
+            [toJSVal offset, toJSVal length]))
+pattern LENGTHADJUST_UNKNOWN = 0
+pattern LENGTHADJUST_SPACING = 1
+pattern LENGTHADJUST_SPACINGANDGLYPHS = 2
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.textLength Mozilla SVGTextContentElement.textLength documentation> 
+getTextLength ::
+              (MonadDOM m, IsSVGTextContentElement self) =>
+                self -> m (Maybe SVGAnimatedLength)
+getTextLength self
+  = liftDOM
+      (((toSVGTextContentElement self) ^. js "textLength") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.lengthAdjust Mozilla SVGTextContentElement.lengthAdjust documentation> 
+getLengthAdjust ::
+                (MonadDOM m, IsSVGTextContentElement self) =>
+                  self -> m (Maybe SVGAnimatedEnumeration)
+getLengthAdjust self
+  = liftDOM
+      (((toSVGTextContentElement self) ^. js "lengthAdjust") >>=
+         fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGTextPathElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGTextPathElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGTextPathElement.hs
@@ -0,0 +1,46 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGTextPathElement
+       (pattern TEXTPATH_METHODTYPE_UNKNOWN,
+        pattern TEXTPATH_METHODTYPE_ALIGN,
+        pattern TEXTPATH_METHODTYPE_STRETCH,
+        pattern TEXTPATH_SPACINGTYPE_UNKNOWN,
+        pattern TEXTPATH_SPACINGTYPE_AUTO,
+        pattern TEXTPATH_SPACINGTYPE_EXACT, getStartOffset, getMethod,
+        getSpacing, SVGTextPathElement, castToSVGTextPathElement,
+        gTypeSVGTextPathElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+pattern TEXTPATH_METHODTYPE_UNKNOWN = 0
+pattern TEXTPATH_METHODTYPE_ALIGN = 1
+pattern TEXTPATH_METHODTYPE_STRETCH = 2
+pattern TEXTPATH_SPACINGTYPE_UNKNOWN = 0
+pattern TEXTPATH_SPACINGTYPE_AUTO = 1
+pattern TEXTPATH_SPACINGTYPE_EXACT = 2
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextPathElement.startOffset Mozilla SVGTextPathElement.startOffset documentation> 
+getStartOffset ::
+               (MonadDOM m) => SVGTextPathElement -> m (Maybe SVGAnimatedLength)
+getStartOffset self
+  = liftDOM ((self ^. js "startOffset") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextPathElement.method Mozilla SVGTextPathElement.method documentation> 
+getMethod ::
+          (MonadDOM m) =>
+            SVGTextPathElement -> m (Maybe SVGAnimatedEnumeration)
+getMethod self = liftDOM ((self ^. js "method") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextPathElement.spacing Mozilla SVGTextPathElement.spacing documentation> 
+getSpacing ::
+           (MonadDOM m) =>
+             SVGTextPathElement -> m (Maybe SVGAnimatedEnumeration)
+getSpacing self = liftDOM ((self ^. js "spacing") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGTextPositioningElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGTextPositioningElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGTextPositioningElement.hs
@@ -0,0 +1,57 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGTextPositioningElement
+       (getX, getY, getDx, getDy, getRotate, SVGTextPositioningElement,
+        castToSVGTextPositioningElement, gTypeSVGTextPositioningElement,
+        IsSVGTextPositioningElement, toSVGTextPositioningElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextPositioningElement.x Mozilla SVGTextPositioningElement.x documentation> 
+getX ::
+     (MonadDOM m, IsSVGTextPositioningElement self) =>
+       self -> m (Maybe SVGAnimatedLengthList)
+getX self
+  = liftDOM
+      (((toSVGTextPositioningElement self) ^. js "x") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextPositioningElement.y Mozilla SVGTextPositioningElement.y documentation> 
+getY ::
+     (MonadDOM m, IsSVGTextPositioningElement self) =>
+       self -> m (Maybe SVGAnimatedLengthList)
+getY self
+  = liftDOM
+      (((toSVGTextPositioningElement self) ^. js "y") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextPositioningElement.dx Mozilla SVGTextPositioningElement.dx documentation> 
+getDx ::
+      (MonadDOM m, IsSVGTextPositioningElement self) =>
+        self -> m (Maybe SVGAnimatedLengthList)
+getDx self
+  = liftDOM
+      (((toSVGTextPositioningElement self) ^. js "dx") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextPositioningElement.dy Mozilla SVGTextPositioningElement.dy documentation> 
+getDy ::
+      (MonadDOM m, IsSVGTextPositioningElement self) =>
+        self -> m (Maybe SVGAnimatedLengthList)
+getDy self
+  = liftDOM
+      (((toSVGTextPositioningElement self) ^. js "dy") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextPositioningElement.rotate Mozilla SVGTextPositioningElement.rotate documentation> 
+getRotate ::
+          (MonadDOM m, IsSVGTextPositioningElement self) =>
+            self -> m (Maybe SVGAnimatedNumberList)
+getRotate self
+  = liftDOM
+      (((toSVGTextPositioningElement self) ^. js "rotate") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGTransform.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGTransform.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGTransform.hs
@@ -0,0 +1,77 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGTransform
+       (setMatrix, setTranslate, setScale, setRotate, setSkewX, setSkewY,
+        pattern SVG_TRANSFORM_UNKNOWN, pattern SVG_TRANSFORM_MATRIX,
+        pattern SVG_TRANSFORM_TRANSLATE, pattern SVG_TRANSFORM_SCALE,
+        pattern SVG_TRANSFORM_ROTATE, pattern SVG_TRANSFORM_SKEWX,
+        pattern SVG_TRANSFORM_SKEWY, getType, getMatrix, getAngle,
+        SVGTransform, castToSVGTransform, gTypeSVGTransform)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransform.setMatrix Mozilla SVGTransform.setMatrix documentation> 
+setMatrix ::
+          (MonadDOM m) => SVGTransform -> Maybe SVGMatrix -> m ()
+setMatrix self matrix
+  = liftDOM (void (self ^. jsf "setMatrix" [toJSVal matrix]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransform.setTranslate Mozilla SVGTransform.setTranslate documentation> 
+setTranslate ::
+             (MonadDOM m) => SVGTransform -> Float -> Float -> m ()
+setTranslate self tx ty
+  = liftDOM
+      (void (self ^. jsf "setTranslate" [toJSVal tx, toJSVal ty]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransform.setScale Mozilla SVGTransform.setScale documentation> 
+setScale :: (MonadDOM m) => SVGTransform -> Float -> Float -> m ()
+setScale self sx sy
+  = liftDOM (void (self ^. jsf "setScale" [toJSVal sx, toJSVal sy]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransform.setRotate Mozilla SVGTransform.setRotate documentation> 
+setRotate ::
+          (MonadDOM m) => SVGTransform -> Float -> Float -> Float -> m ()
+setRotate self angle cx cy
+  = liftDOM
+      (void
+         (self ^. jsf "setRotate" [toJSVal angle, toJSVal cx, toJSVal cy]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransform.setSkewX Mozilla SVGTransform.setSkewX documentation> 
+setSkewX :: (MonadDOM m) => SVGTransform -> Float -> m ()
+setSkewX self angle
+  = liftDOM (void (self ^. jsf "setSkewX" [toJSVal angle]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransform.setSkewY Mozilla SVGTransform.setSkewY documentation> 
+setSkewY :: (MonadDOM m) => SVGTransform -> Float -> m ()
+setSkewY self angle
+  = liftDOM (void (self ^. jsf "setSkewY" [toJSVal angle]))
+pattern SVG_TRANSFORM_UNKNOWN = 0
+pattern SVG_TRANSFORM_MATRIX = 1
+pattern SVG_TRANSFORM_TRANSLATE = 2
+pattern SVG_TRANSFORM_SCALE = 3
+pattern SVG_TRANSFORM_ROTATE = 4
+pattern SVG_TRANSFORM_SKEWX = 5
+pattern SVG_TRANSFORM_SKEWY = 6
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransform.type Mozilla SVGTransform.type documentation> 
+getType :: (MonadDOM m) => SVGTransform -> m Word
+getType self
+  = liftDOM (round <$> ((self ^. js "type") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransform.matrix Mozilla SVGTransform.matrix documentation> 
+getMatrix :: (MonadDOM m) => SVGTransform -> m (Maybe SVGMatrix)
+getMatrix self = liftDOM ((self ^. js "matrix") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransform.angle Mozilla SVGTransform.angle documentation> 
+getAngle :: (MonadDOM m) => SVGTransform -> m Float
+getAngle self
+  = liftDOM (realToFrac <$> ((self ^. js "angle") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGTransformList.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGTransformList.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGTransformList.hs
@@ -0,0 +1,90 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGTransformList
+       (clear, initialize, getItem, insertItemBefore, replaceItem,
+        removeItem, appendItem, createSVGTransformFromMatrix, consolidate,
+        getNumberOfItems, SVGTransformList, castToSVGTransformList,
+        gTypeSVGTransformList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.clear Mozilla SVGTransformList.clear documentation> 
+clear :: (MonadDOM m) => SVGTransformList -> m ()
+clear self = liftDOM (void (self ^. js "clear"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.initialize Mozilla SVGTransformList.initialize documentation> 
+initialize ::
+           (MonadDOM m) =>
+             SVGTransformList -> Maybe SVGTransform -> m (Maybe SVGTransform)
+initialize self item
+  = liftDOM ((self ^. jsf "initialize" [toJSVal item]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.getItem Mozilla SVGTransformList.getItem documentation> 
+getItem ::
+        (MonadDOM m) => SVGTransformList -> Word -> m (Maybe SVGTransform)
+getItem self index
+  = liftDOM ((self ^. jsf "getItem" [toJSVal index]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.insertItemBefore Mozilla SVGTransformList.insertItemBefore documentation> 
+insertItemBefore ::
+                 (MonadDOM m) =>
+                   SVGTransformList ->
+                     Maybe SVGTransform -> Word -> m (Maybe SVGTransform)
+insertItemBefore self item index
+  = liftDOM
+      ((self ^. jsf "insertItemBefore" [toJSVal item, toJSVal index]) >>=
+         fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.replaceItem Mozilla SVGTransformList.replaceItem documentation> 
+replaceItem ::
+            (MonadDOM m) =>
+              SVGTransformList ->
+                Maybe SVGTransform -> Word -> m (Maybe SVGTransform)
+replaceItem self item index
+  = liftDOM
+      ((self ^. jsf "replaceItem" [toJSVal item, toJSVal index]) >>=
+         fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.removeItem Mozilla SVGTransformList.removeItem documentation> 
+removeItem ::
+           (MonadDOM m) => SVGTransformList -> Word -> m (Maybe SVGTransform)
+removeItem self index
+  = liftDOM
+      ((self ^. jsf "removeItem" [toJSVal index]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.appendItem Mozilla SVGTransformList.appendItem documentation> 
+appendItem ::
+           (MonadDOM m) =>
+             SVGTransformList -> Maybe SVGTransform -> m (Maybe SVGTransform)
+appendItem self item
+  = liftDOM ((self ^. jsf "appendItem" [toJSVal item]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.createSVGTransformFromMatrix Mozilla SVGTransformList.createSVGTransformFromMatrix documentation> 
+createSVGTransformFromMatrix ::
+                             (MonadDOM m) =>
+                               SVGTransformList -> Maybe SVGMatrix -> m (Maybe SVGTransform)
+createSVGTransformFromMatrix self matrix
+  = liftDOM
+      ((self ^. jsf "createSVGTransformFromMatrix" [toJSVal matrix]) >>=
+         fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.consolidate Mozilla SVGTransformList.consolidate documentation> 
+consolidate ::
+            (MonadDOM m) => SVGTransformList -> m (Maybe SVGTransform)
+consolidate self
+  = liftDOM ((self ^. js "consolidate") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.numberOfItems Mozilla SVGTransformList.numberOfItems documentation> 
+getNumberOfItems :: (MonadDOM m) => SVGTransformList -> m Word
+getNumberOfItems self
+  = liftDOM
+      (round <$> ((self ^. js "numberOfItems") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGURIReference.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGURIReference.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGURIReference.hs
@@ -0,0 +1,21 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGURIReference
+       (getHref, SVGURIReference, castToSVGURIReference,
+        gTypeSVGURIReference)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGURIReference.href Mozilla SVGURIReference.href documentation> 
+getHref ::
+        (MonadDOM m) => SVGURIReference -> m (Maybe SVGAnimatedString)
+getHref self = liftDOM ((self ^. js "href") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGUnitTypes.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGUnitTypes.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGUnitTypes.hs
@@ -0,0 +1,21 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGUnitTypes
+       (pattern SVG_UNIT_TYPE_UNKNOWN,
+        pattern SVG_UNIT_TYPE_USERSPACEONUSE,
+        pattern SVG_UNIT_TYPE_OBJECTBOUNDINGBOX, SVGUnitTypes,
+        castToSVGUnitTypes, gTypeSVGUnitTypes)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+pattern SVG_UNIT_TYPE_UNKNOWN = 0
+pattern SVG_UNIT_TYPE_USERSPACEONUSE = 1
+pattern SVG_UNIT_TYPE_OBJECTBOUNDINGBOX = 2
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGUseElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGUseElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGUseElement.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGUseElement
+       (getX, getY, getWidth, getHeight, SVGUseElement,
+        castToSVGUseElement, gTypeSVGUseElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGUseElement.x Mozilla SVGUseElement.x documentation> 
+getX ::
+     (MonadDOM m) => SVGUseElement -> m (Maybe SVGAnimatedLength)
+getX self = liftDOM ((self ^. js "x") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGUseElement.y Mozilla SVGUseElement.y documentation> 
+getY ::
+     (MonadDOM m) => SVGUseElement -> m (Maybe SVGAnimatedLength)
+getY self = liftDOM ((self ^. js "y") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGUseElement.width Mozilla SVGUseElement.width documentation> 
+getWidth ::
+         (MonadDOM m) => SVGUseElement -> m (Maybe SVGAnimatedLength)
+getWidth self = liftDOM ((self ^. js "width") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGUseElement.height Mozilla SVGUseElement.height documentation> 
+getHeight ::
+          (MonadDOM m) => SVGUseElement -> m (Maybe SVGAnimatedLength)
+getHeight self = liftDOM ((self ^. js "height") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGViewElement.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGViewElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGViewElement.hs
@@ -0,0 +1,22 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGViewElement
+       (getViewTarget, SVGViewElement, castToSVGViewElement,
+        gTypeSVGViewElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGViewElement.viewTarget Mozilla SVGViewElement.viewTarget documentation> 
+getViewTarget ::
+              (MonadDOM m) => SVGViewElement -> m (Maybe SVGStringList)
+getViewTarget self
+  = liftDOM ((self ^. js "viewTarget") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGViewSpec.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGViewSpec.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGViewSpec.hs
@@ -0,0 +1,65 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGViewSpec
+       (getTransform, getViewTarget, getViewBoxString,
+        getPreserveAspectRatioString, getTransformString,
+        getViewTargetString, setZoomAndPan, getZoomAndPan, SVGViewSpec,
+        castToSVGViewSpec, gTypeSVGViewSpec)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGViewSpec.transform Mozilla SVGViewSpec.transform documentation> 
+getTransform ::
+             (MonadDOM m) => SVGViewSpec -> m (Maybe SVGTransformList)
+getTransform self
+  = liftDOM ((self ^. js "transform") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGViewSpec.viewTarget Mozilla SVGViewSpec.viewTarget documentation> 
+getViewTarget ::
+              (MonadDOM m) => SVGViewSpec -> m (Maybe SVGElement)
+getViewTarget self
+  = liftDOM ((self ^. js "viewTarget") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGViewSpec.viewBoxString Mozilla SVGViewSpec.viewBoxString documentation> 
+getViewBoxString ::
+                 (MonadDOM m, FromJSString result) => SVGViewSpec -> m result
+getViewBoxString self
+  = liftDOM ((self ^. js "viewBoxString") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGViewSpec.preserveAspectRatioString Mozilla SVGViewSpec.preserveAspectRatioString documentation> 
+getPreserveAspectRatioString ::
+                             (MonadDOM m, FromJSString result) => SVGViewSpec -> m result
+getPreserveAspectRatioString self
+  = liftDOM
+      ((self ^. js "preserveAspectRatioString") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGViewSpec.transformString Mozilla SVGViewSpec.transformString documentation> 
+getTransformString ::
+                   (MonadDOM m, FromJSString result) => SVGViewSpec -> m result
+getTransformString self
+  = liftDOM ((self ^. js "transformString") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGViewSpec.viewTargetString Mozilla SVGViewSpec.viewTargetString documentation> 
+getViewTargetString ::
+                    (MonadDOM m, FromJSString result) => SVGViewSpec -> m result
+getViewTargetString self
+  = liftDOM ((self ^. js "viewTargetString") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGViewSpec.zoomAndPan Mozilla SVGViewSpec.zoomAndPan documentation> 
+setZoomAndPan :: (MonadDOM m) => SVGViewSpec -> Word -> m ()
+setZoomAndPan self val
+  = liftDOM (self ^. jss "zoomAndPan" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGViewSpec.zoomAndPan Mozilla SVGViewSpec.zoomAndPan documentation> 
+getZoomAndPan :: (MonadDOM m) => SVGViewSpec -> m Word
+getZoomAndPan self
+  = liftDOM (round <$> ((self ^. js "zoomAndPan") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGZoomAndPan.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGZoomAndPan.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGZoomAndPan.hs
@@ -0,0 +1,30 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGZoomAndPan
+       (pattern SVG_ZOOMANDPAN_UNKNOWN, pattern SVG_ZOOMANDPAN_DISABLE,
+        pattern SVG_ZOOMANDPAN_MAGNIFY, setZoomAndPan, getZoomAndPan,
+        SVGZoomAndPan, castToSVGZoomAndPan, gTypeSVGZoomAndPan)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+pattern SVG_ZOOMANDPAN_UNKNOWN = 0
+pattern SVG_ZOOMANDPAN_DISABLE = 1
+pattern SVG_ZOOMANDPAN_MAGNIFY = 2
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGZoomAndPan.zoomAndPan Mozilla SVGZoomAndPan.zoomAndPan documentation> 
+setZoomAndPan :: (MonadDOM m) => SVGZoomAndPan -> Word -> m ()
+setZoomAndPan self val
+  = liftDOM (self ^. jss "zoomAndPan" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGZoomAndPan.zoomAndPan Mozilla SVGZoomAndPan.zoomAndPan documentation> 
+getZoomAndPan :: (MonadDOM m) => SVGZoomAndPan -> m Word
+getZoomAndPan self
+  = liftDOM (round <$> ((self ^. js "zoomAndPan") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SVGZoomEvent.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SVGZoomEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SVGZoomEvent.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SVGZoomEvent
+       (getZoomRectScreen, getPreviousScale, getPreviousTranslate,
+        getNewScale, getNewTranslate, SVGZoomEvent, castToSVGZoomEvent,
+        gTypeSVGZoomEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGZoomEvent.zoomRectScreen Mozilla SVGZoomEvent.zoomRectScreen documentation> 
+getZoomRectScreen ::
+                  (MonadDOM m) => SVGZoomEvent -> m (Maybe SVGRect)
+getZoomRectScreen self
+  = liftDOM ((self ^. js "zoomRectScreen") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGZoomEvent.previousScale Mozilla SVGZoomEvent.previousScale documentation> 
+getPreviousScale :: (MonadDOM m) => SVGZoomEvent -> m Float
+getPreviousScale self
+  = liftDOM
+      (realToFrac <$> ((self ^. js "previousScale") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGZoomEvent.previousTranslate Mozilla SVGZoomEvent.previousTranslate documentation> 
+getPreviousTranslate ::
+                     (MonadDOM m) => SVGZoomEvent -> m (Maybe SVGPoint)
+getPreviousTranslate self
+  = liftDOM ((self ^. js "previousTranslate") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGZoomEvent.newScale Mozilla SVGZoomEvent.newScale documentation> 
+getNewScale :: (MonadDOM m) => SVGZoomEvent -> m Float
+getNewScale self
+  = liftDOM
+      (realToFrac <$> ((self ^. js "newScale") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGZoomEvent.newTranslate Mozilla SVGZoomEvent.newTranslate documentation> 
+getNewTranslate ::
+                (MonadDOM m) => SVGZoomEvent -> m (Maybe SVGPoint)
+getNewTranslate self
+  = liftDOM ((self ^. js "newTranslate") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/Screen.hs b/src/Language/Javascript/JSaddle/DOM/Generated/Screen.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/Screen.hs
@@ -0,0 +1,57 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.Screen
+       (getHeight, getWidth, getColorDepth, getPixelDepth, getAvailLeft,
+        getAvailTop, getAvailHeight, getAvailWidth, Screen, castToScreen,
+        gTypeScreen)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Screen.height Mozilla Screen.height documentation> 
+getHeight :: (MonadDOM m) => Screen -> m Word
+getHeight self
+  = liftDOM (round <$> ((self ^. js "height") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Screen.width Mozilla Screen.width documentation> 
+getWidth :: (MonadDOM m) => Screen -> m Word
+getWidth self
+  = liftDOM (round <$> ((self ^. js "width") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Screen.colorDepth Mozilla Screen.colorDepth documentation> 
+getColorDepth :: (MonadDOM m) => Screen -> m Word
+getColorDepth self
+  = liftDOM (round <$> ((self ^. js "colorDepth") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Screen.pixelDepth Mozilla Screen.pixelDepth documentation> 
+getPixelDepth :: (MonadDOM m) => Screen -> m Word
+getPixelDepth self
+  = liftDOM (round <$> ((self ^. js "pixelDepth") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Screen.availLeft Mozilla Screen.availLeft documentation> 
+getAvailLeft :: (MonadDOM m) => Screen -> m Int
+getAvailLeft self
+  = liftDOM (round <$> ((self ^. js "availLeft") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Screen.availTop Mozilla Screen.availTop documentation> 
+getAvailTop :: (MonadDOM m) => Screen -> m Int
+getAvailTop self
+  = liftDOM (round <$> ((self ^. js "availTop") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Screen.availHeight Mozilla Screen.availHeight documentation> 
+getAvailHeight :: (MonadDOM m) => Screen -> m Word
+getAvailHeight self
+  = liftDOM (round <$> ((self ^. js "availHeight") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Screen.availWidth Mozilla Screen.availWidth documentation> 
+getAvailWidth :: (MonadDOM m) => Screen -> m Word
+getAvailWidth self
+  = liftDOM (round <$> ((self ^. js "availWidth") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/ScriptProcessorNode.hs b/src/Language/Javascript/JSaddle/DOM/Generated/ScriptProcessorNode.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/ScriptProcessorNode.hs
@@ -0,0 +1,25 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.ScriptProcessorNode
+       (audioProcess, getBufferSize, ScriptProcessorNode,
+        castToScriptProcessorNode, gTypeScriptProcessorNode)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ScriptProcessorNode.onaudioprocess Mozilla ScriptProcessorNode.onaudioprocess documentation> 
+audioProcess :: EventName ScriptProcessorNode AudioProcessingEvent
+audioProcess = unsafeEventName (toJSString "audioprocess")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ScriptProcessorNode.bufferSize Mozilla ScriptProcessorNode.bufferSize documentation> 
+getBufferSize :: (MonadDOM m) => ScriptProcessorNode -> m Int
+getBufferSize self
+  = liftDOM (round <$> ((self ^. js "bufferSize") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/ScriptProfile.hs b/src/Language/Javascript/JSaddle/DOM/Generated/ScriptProfile.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/ScriptProfile.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.ScriptProfile
+       (getTitle, getUid, getRootNode, ScriptProfile, castToScriptProfile,
+        gTypeScriptProfile)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ScriptProfile.title Mozilla ScriptProfile.title documentation> 
+getTitle ::
+         (MonadDOM m, FromJSString result) => ScriptProfile -> m result
+getTitle self
+  = liftDOM ((self ^. js "title") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ScriptProfile.uid Mozilla ScriptProfile.uid documentation> 
+getUid :: (MonadDOM m) => ScriptProfile -> m Word
+getUid self
+  = liftDOM (round <$> ((self ^. js "uid") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ScriptProfile.rootNode Mozilla ScriptProfile.rootNode documentation> 
+getRootNode ::
+            (MonadDOM m) => ScriptProfile -> m (Maybe ScriptProfileNode)
+getRootNode self = liftDOM ((self ^. js "rootNode") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/ScriptProfileNode.hs b/src/Language/Javascript/JSaddle/DOM/Generated/ScriptProfileNode.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/ScriptProfileNode.hs
@@ -0,0 +1,48 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.ScriptProfileNode
+       (children, getId, getFunctionName, getUrl, getLineNumber,
+        getColumnNumber, ScriptProfileNode, castToScriptProfileNode,
+        gTypeScriptProfileNode)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ScriptProfileNode.children Mozilla ScriptProfileNode.children documentation> 
+children ::
+         (MonadDOM m) => ScriptProfileNode -> m [Maybe ScriptProfileNode]
+children self = liftDOM ((self ^. js "children") >>= fromJSArray)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ScriptProfileNode.id Mozilla ScriptProfileNode.id documentation> 
+getId :: (MonadDOM m) => ScriptProfileNode -> m Word
+getId self
+  = liftDOM (round <$> ((self ^. js "id") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ScriptProfileNode.functionName Mozilla ScriptProfileNode.functionName documentation> 
+getFunctionName ::
+                (MonadDOM m, FromJSString result) => ScriptProfileNode -> m result
+getFunctionName self
+  = liftDOM ((self ^. js "functionName") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ScriptProfileNode.url Mozilla ScriptProfileNode.url documentation> 
+getUrl ::
+       (MonadDOM m, FromJSString result) => ScriptProfileNode -> m result
+getUrl self = liftDOM ((self ^. js "url") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ScriptProfileNode.lineNumber Mozilla ScriptProfileNode.lineNumber documentation> 
+getLineNumber :: (MonadDOM m) => ScriptProfileNode -> m Word
+getLineNumber self
+  = liftDOM (round <$> ((self ^. js "lineNumber") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ScriptProfileNode.columnNumber Mozilla ScriptProfileNode.columnNumber documentation> 
+getColumnNumber :: (MonadDOM m) => ScriptProfileNode -> m Word
+getColumnNumber self
+  = liftDOM (round <$> ((self ^. js "columnNumber") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SecurityPolicy.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SecurityPolicy.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SecurityPolicy.hs
@@ -0,0 +1,115 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SecurityPolicy
+       (allowsConnectionTo, allowsFontFrom, allowsFormAction,
+        allowsFrameFrom, allowsImageFrom, allowsMediaFrom,
+        allowsObjectFrom, allowsPluginType, allowsScriptFrom,
+        allowsStyleFrom, getAllowsEval, getAllowsInlineScript,
+        getAllowsInlineStyle, getIsActive, getReportURIs, SecurityPolicy,
+        castToSecurityPolicy, gTypeSecurityPolicy)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicy.allowsConnectionTo Mozilla SecurityPolicy.allowsConnectionTo documentation> 
+allowsConnectionTo ::
+                   (MonadDOM m, ToJSString url) => SecurityPolicy -> url -> m Bool
+allowsConnectionTo self url
+  = liftDOM
+      ((self ^. jsf "allowsConnectionTo" [toJSVal url]) >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicy.allowsFontFrom Mozilla SecurityPolicy.allowsFontFrom documentation> 
+allowsFontFrom ::
+               (MonadDOM m, ToJSString url) => SecurityPolicy -> url -> m Bool
+allowsFontFrom self url
+  = liftDOM
+      ((self ^. jsf "allowsFontFrom" [toJSVal url]) >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicy.allowsFormAction Mozilla SecurityPolicy.allowsFormAction documentation> 
+allowsFormAction ::
+                 (MonadDOM m, ToJSString url) => SecurityPolicy -> url -> m Bool
+allowsFormAction self url
+  = liftDOM
+      ((self ^. jsf "allowsFormAction" [toJSVal url]) >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicy.allowsFrameFrom Mozilla SecurityPolicy.allowsFrameFrom documentation> 
+allowsFrameFrom ::
+                (MonadDOM m, ToJSString url) => SecurityPolicy -> url -> m Bool
+allowsFrameFrom self url
+  = liftDOM
+      ((self ^. jsf "allowsFrameFrom" [toJSVal url]) >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicy.allowsImageFrom Mozilla SecurityPolicy.allowsImageFrom documentation> 
+allowsImageFrom ::
+                (MonadDOM m, ToJSString url) => SecurityPolicy -> url -> m Bool
+allowsImageFrom self url
+  = liftDOM
+      ((self ^. jsf "allowsImageFrom" [toJSVal url]) >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicy.allowsMediaFrom Mozilla SecurityPolicy.allowsMediaFrom documentation> 
+allowsMediaFrom ::
+                (MonadDOM m, ToJSString url) => SecurityPolicy -> url -> m Bool
+allowsMediaFrom self url
+  = liftDOM
+      ((self ^. jsf "allowsMediaFrom" [toJSVal url]) >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicy.allowsObjectFrom Mozilla SecurityPolicy.allowsObjectFrom documentation> 
+allowsObjectFrom ::
+                 (MonadDOM m, ToJSString url) => SecurityPolicy -> url -> m Bool
+allowsObjectFrom self url
+  = liftDOM
+      ((self ^. jsf "allowsObjectFrom" [toJSVal url]) >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicy.allowsPluginType Mozilla SecurityPolicy.allowsPluginType documentation> 
+allowsPluginType ::
+                 (MonadDOM m, ToJSString type') => SecurityPolicy -> type' -> m Bool
+allowsPluginType self type'
+  = liftDOM
+      ((self ^. jsf "allowsPluginType" [toJSVal type']) >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicy.allowsScriptFrom Mozilla SecurityPolicy.allowsScriptFrom documentation> 
+allowsScriptFrom ::
+                 (MonadDOM m, ToJSString url) => SecurityPolicy -> url -> m Bool
+allowsScriptFrom self url
+  = liftDOM
+      ((self ^. jsf "allowsScriptFrom" [toJSVal url]) >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicy.allowsStyleFrom Mozilla SecurityPolicy.allowsStyleFrom documentation> 
+allowsStyleFrom ::
+                (MonadDOM m, ToJSString url) => SecurityPolicy -> url -> m Bool
+allowsStyleFrom self url
+  = liftDOM
+      ((self ^. jsf "allowsStyleFrom" [toJSVal url]) >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicy.allowsEval Mozilla SecurityPolicy.allowsEval documentation> 
+getAllowsEval :: (MonadDOM m) => SecurityPolicy -> m Bool
+getAllowsEval self
+  = liftDOM ((self ^. js "allowsEval") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicy.allowsInlineScript Mozilla SecurityPolicy.allowsInlineScript documentation> 
+getAllowsInlineScript :: (MonadDOM m) => SecurityPolicy -> m Bool
+getAllowsInlineScript self
+  = liftDOM ((self ^. js "allowsInlineScript") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicy.allowsInlineStyle Mozilla SecurityPolicy.allowsInlineStyle documentation> 
+getAllowsInlineStyle :: (MonadDOM m) => SecurityPolicy -> m Bool
+getAllowsInlineStyle self
+  = liftDOM ((self ^. js "allowsInlineStyle") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicy.isActive Mozilla SecurityPolicy.isActive documentation> 
+getIsActive :: (MonadDOM m) => SecurityPolicy -> m Bool
+getIsActive self = liftDOM ((self ^. js "isActive") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicy.reportURIs Mozilla SecurityPolicy.reportURIs documentation> 
+getReportURIs ::
+              (MonadDOM m) => SecurityPolicy -> m (Maybe DOMStringList)
+getReportURIs self
+  = liftDOM ((self ^. js "reportURIs") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SecurityPolicyViolationEvent.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SecurityPolicyViolationEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SecurityPolicyViolationEvent.hs
@@ -0,0 +1,75 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SecurityPolicyViolationEvent
+       (getDocumentURI, getReferrer, getBlockedURI, getViolatedDirective,
+        getEffectiveDirective, getOriginalPolicy, getSourceFile,
+        getLineNumber, SecurityPolicyViolationEvent,
+        castToSecurityPolicyViolationEvent,
+        gTypeSecurityPolicyViolationEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicyViolationEvent.documentURI Mozilla SecurityPolicyViolationEvent.documentURI documentation> 
+getDocumentURI ::
+               (MonadDOM m, FromJSString result) =>
+                 SecurityPolicyViolationEvent -> m result
+getDocumentURI self
+  = liftDOM ((self ^. js "documentURI") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicyViolationEvent.referrer Mozilla SecurityPolicyViolationEvent.referrer documentation> 
+getReferrer ::
+            (MonadDOM m, FromJSString result) =>
+              SecurityPolicyViolationEvent -> m result
+getReferrer self
+  = liftDOM ((self ^. js "referrer") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicyViolationEvent.blockedURI Mozilla SecurityPolicyViolationEvent.blockedURI documentation> 
+getBlockedURI ::
+              (MonadDOM m, FromJSString result) =>
+                SecurityPolicyViolationEvent -> m result
+getBlockedURI self
+  = liftDOM ((self ^. js "blockedURI") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicyViolationEvent.violatedDirective Mozilla SecurityPolicyViolationEvent.violatedDirective documentation> 
+getViolatedDirective ::
+                     (MonadDOM m, FromJSString result) =>
+                       SecurityPolicyViolationEvent -> m result
+getViolatedDirective self
+  = liftDOM ((self ^. js "violatedDirective") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicyViolationEvent.effectiveDirective Mozilla SecurityPolicyViolationEvent.effectiveDirective documentation> 
+getEffectiveDirective ::
+                      (MonadDOM m, FromJSString result) =>
+                        SecurityPolicyViolationEvent -> m result
+getEffectiveDirective self
+  = liftDOM
+      ((self ^. js "effectiveDirective") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicyViolationEvent.originalPolicy Mozilla SecurityPolicyViolationEvent.originalPolicy documentation> 
+getOriginalPolicy ::
+                  (MonadDOM m, FromJSString result) =>
+                    SecurityPolicyViolationEvent -> m result
+getOriginalPolicy self
+  = liftDOM ((self ^. js "originalPolicy") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicyViolationEvent.sourceFile Mozilla SecurityPolicyViolationEvent.sourceFile documentation> 
+getSourceFile ::
+              (MonadDOM m, FromJSString result) =>
+                SecurityPolicyViolationEvent -> m result
+getSourceFile self
+  = liftDOM ((self ^. js "sourceFile") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicyViolationEvent.lineNumber Mozilla SecurityPolicyViolationEvent.lineNumber documentation> 
+getLineNumber ::
+              (MonadDOM m) => SecurityPolicyViolationEvent -> m Int
+getLineNumber self
+  = liftDOM (round <$> ((self ^. js "lineNumber") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/Selection.hs b/src/Language/Javascript/JSaddle/DOM/Generated/Selection.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/Selection.hs
@@ -0,0 +1,174 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.Selection
+       (collapse, collapseToEnd, collapseToStart, deleteFromDocument,
+        containsNode, selectAllChildren, extend, getRangeAt,
+        removeAllRanges, addRange, toString, modify, setBaseAndExtent,
+        setPosition, empty, getAnchorNode, getAnchorOffset, getFocusNode,
+        getFocusOffset, getIsCollapsed, getRangeCount, getBaseNode,
+        getBaseOffset, getExtentNode, getExtentOffset, getType, Selection,
+        castToSelection, gTypeSelection)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.collapse Mozilla Selection.collapse documentation> 
+collapse ::
+         (MonadDOM m, IsNode node) => Selection -> Maybe node -> Int -> m ()
+collapse self node index
+  = liftDOM
+      (void (self ^. jsf "collapse" [toJSVal node, toJSVal index]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.collapseToEnd Mozilla Selection.collapseToEnd documentation> 
+collapseToEnd :: (MonadDOM m) => Selection -> m ()
+collapseToEnd self = liftDOM (void (self ^. js "collapseToEnd"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.collapseToStart Mozilla Selection.collapseToStart documentation> 
+collapseToStart :: (MonadDOM m) => Selection -> m ()
+collapseToStart self
+  = liftDOM (void (self ^. js "collapseToStart"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.deleteFromDocument Mozilla Selection.deleteFromDocument documentation> 
+deleteFromDocument :: (MonadDOM m) => Selection -> m ()
+deleteFromDocument self
+  = liftDOM (void (self ^. js "deleteFromDocument"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.containsNode Mozilla Selection.containsNode documentation> 
+containsNode ::
+             (MonadDOM m, IsNode node) =>
+               Selection -> Maybe node -> Bool -> m Bool
+containsNode self node allowPartial
+  = liftDOM
+      ((self ^. jsf "containsNode" [toJSVal node, toJSVal allowPartial])
+         >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.selectAllChildren Mozilla Selection.selectAllChildren documentation> 
+selectAllChildren ::
+                  (MonadDOM m, IsNode node) => Selection -> Maybe node -> m ()
+selectAllChildren self node
+  = liftDOM (void (self ^. jsf "selectAllChildren" [toJSVal node]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.extend Mozilla Selection.extend documentation> 
+extend ::
+       (MonadDOM m, IsNode node) => Selection -> Maybe node -> Int -> m ()
+extend self node offset
+  = liftDOM
+      (void (self ^. jsf "extend" [toJSVal node, toJSVal offset]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.getRangeAt Mozilla Selection.getRangeAt documentation> 
+getRangeAt :: (MonadDOM m) => Selection -> Int -> m (Maybe Range)
+getRangeAt self index
+  = liftDOM
+      ((self ^. jsf "getRangeAt" [toJSVal index]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.removeAllRanges Mozilla Selection.removeAllRanges documentation> 
+removeAllRanges :: (MonadDOM m) => Selection -> m ()
+removeAllRanges self
+  = liftDOM (void (self ^. js "removeAllRanges"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.addRange Mozilla Selection.addRange documentation> 
+addRange :: (MonadDOM m) => Selection -> Maybe Range -> m ()
+addRange self range
+  = liftDOM (void (self ^. jsf "addRange" [toJSVal range]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.toString Mozilla Selection.toString documentation> 
+toString ::
+         (MonadDOM m, FromJSString result) => Selection -> m result
+toString self
+  = liftDOM ((self ^. js "toString") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.modify Mozilla Selection.modify documentation> 
+modify ::
+       (MonadDOM m, ToJSString alter, ToJSString direction,
+        ToJSString granularity) =>
+         Selection -> alter -> direction -> granularity -> m ()
+modify self alter direction granularity
+  = liftDOM
+      (void
+         (self ^. jsf "modify"
+            [toJSVal alter, toJSVal direction, toJSVal granularity]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.setBaseAndExtent Mozilla Selection.setBaseAndExtent documentation> 
+setBaseAndExtent ::
+                 (MonadDOM m, IsNode baseNode, IsNode extentNode) =>
+                   Selection ->
+                     Maybe baseNode -> Int -> Maybe extentNode -> Int -> m ()
+setBaseAndExtent self baseNode baseOffset extentNode extentOffset
+  = liftDOM
+      (void
+         (self ^. jsf "setBaseAndExtent"
+            [toJSVal baseNode, toJSVal baseOffset, toJSVal extentNode,
+             toJSVal extentOffset]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.setPosition Mozilla Selection.setPosition documentation> 
+setPosition ::
+            (MonadDOM m, IsNode node) => Selection -> Maybe node -> Int -> m ()
+setPosition self node offset
+  = liftDOM
+      (void (self ^. jsf "setPosition" [toJSVal node, toJSVal offset]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.empty Mozilla Selection.empty documentation> 
+empty :: (MonadDOM m) => Selection -> m ()
+empty self = liftDOM (void (self ^. js "empty"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.anchorNode Mozilla Selection.anchorNode documentation> 
+getAnchorNode :: (MonadDOM m) => Selection -> m (Maybe Node)
+getAnchorNode self
+  = liftDOM ((self ^. js "anchorNode") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.anchorOffset Mozilla Selection.anchorOffset documentation> 
+getAnchorOffset :: (MonadDOM m) => Selection -> m Int
+getAnchorOffset self
+  = liftDOM (round <$> ((self ^. js "anchorOffset") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.focusNode Mozilla Selection.focusNode documentation> 
+getFocusNode :: (MonadDOM m) => Selection -> m (Maybe Node)
+getFocusNode self
+  = liftDOM ((self ^. js "focusNode") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.focusOffset Mozilla Selection.focusOffset documentation> 
+getFocusOffset :: (MonadDOM m) => Selection -> m Int
+getFocusOffset self
+  = liftDOM (round <$> ((self ^. js "focusOffset") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.isCollapsed Mozilla Selection.isCollapsed documentation> 
+getIsCollapsed :: (MonadDOM m) => Selection -> m Bool
+getIsCollapsed self
+  = liftDOM ((self ^. js "isCollapsed") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.rangeCount Mozilla Selection.rangeCount documentation> 
+getRangeCount :: (MonadDOM m) => Selection -> m Int
+getRangeCount self
+  = liftDOM (round <$> ((self ^. js "rangeCount") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.baseNode Mozilla Selection.baseNode documentation> 
+getBaseNode :: (MonadDOM m) => Selection -> m (Maybe Node)
+getBaseNode self = liftDOM ((self ^. js "baseNode") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.baseOffset Mozilla Selection.baseOffset documentation> 
+getBaseOffset :: (MonadDOM m) => Selection -> m Int
+getBaseOffset self
+  = liftDOM (round <$> ((self ^. js "baseOffset") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.extentNode Mozilla Selection.extentNode documentation> 
+getExtentNode :: (MonadDOM m) => Selection -> m (Maybe Node)
+getExtentNode self
+  = liftDOM ((self ^. js "extentNode") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.extentOffset Mozilla Selection.extentOffset documentation> 
+getExtentOffset :: (MonadDOM m) => Selection -> m Int
+getExtentOffset self
+  = liftDOM (round <$> ((self ^. js "extentOffset") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.type Mozilla Selection.type documentation> 
+getType ::
+        (MonadDOM m, FromJSString result) => Selection -> m result
+getType self = liftDOM ((self ^. js "type") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SourceBuffer.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SourceBuffer.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SourceBuffer.hs
@@ -0,0 +1,111 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SourceBuffer
+       (appendBuffer, appendBufferView, abort, remove, setMode, getMode,
+        getUpdating, getBuffered, setTimestampOffset, getTimestampOffset,
+        getAudioTracks, getVideoTracks, getTextTracks,
+        setAppendWindowStart, getAppendWindowStart, setAppendWindowEnd,
+        getAppendWindowEnd, SourceBuffer, castToSourceBuffer,
+        gTypeSourceBuffer)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.appendBuffer Mozilla SourceBuffer.appendBuffer documentation> 
+appendBuffer ::
+             (MonadDOM m, IsArrayBuffer data') =>
+               SourceBuffer -> Maybe data' -> m ()
+appendBuffer self data'
+  = liftDOM (void (self ^. jsf "appendBuffer" [toJSVal data']))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.appendBuffer Mozilla SourceBuffer.appendBuffer documentation> 
+appendBufferView ::
+                 (MonadDOM m, IsArrayBufferView data') =>
+                   SourceBuffer -> Maybe data' -> m ()
+appendBufferView self data'
+  = liftDOM (void (self ^. jsf "appendBuffer" [toJSVal data']))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.abort Mozilla SourceBuffer.abort documentation> 
+abort :: (MonadDOM m) => SourceBuffer -> m ()
+abort self = liftDOM (void (self ^. js "abort"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.remove Mozilla SourceBuffer.remove documentation> 
+remove :: (MonadDOM m) => SourceBuffer -> Double -> Double -> m ()
+remove self start end
+  = liftDOM
+      (void (self ^. jsf "remove" [toJSVal start, toJSVal end]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.mode Mozilla SourceBuffer.mode documentation> 
+setMode :: (MonadDOM m) => SourceBuffer -> AppendMode -> m ()
+setMode self val = liftDOM (self ^. jss "mode" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.mode Mozilla SourceBuffer.mode documentation> 
+getMode :: (MonadDOM m) => SourceBuffer -> m AppendMode
+getMode self = liftDOM ((self ^. js "mode") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.updating Mozilla SourceBuffer.updating documentation> 
+getUpdating :: (MonadDOM m) => SourceBuffer -> m Bool
+getUpdating self = liftDOM ((self ^. js "updating") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.buffered Mozilla SourceBuffer.buffered documentation> 
+getBuffered :: (MonadDOM m) => SourceBuffer -> m (Maybe TimeRanges)
+getBuffered self = liftDOM ((self ^. js "buffered") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.timestampOffset Mozilla SourceBuffer.timestampOffset documentation> 
+setTimestampOffset ::
+                   (MonadDOM m) => SourceBuffer -> Double -> m ()
+setTimestampOffset self val
+  = liftDOM (self ^. jss "timestampOffset" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.timestampOffset Mozilla SourceBuffer.timestampOffset documentation> 
+getTimestampOffset :: (MonadDOM m) => SourceBuffer -> m Double
+getTimestampOffset self
+  = liftDOM ((self ^. js "timestampOffset") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.audioTracks Mozilla SourceBuffer.audioTracks documentation> 
+getAudioTracks ::
+               (MonadDOM m) => SourceBuffer -> m (Maybe AudioTrackList)
+getAudioTracks self
+  = liftDOM ((self ^. js "audioTracks") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.videoTracks Mozilla SourceBuffer.videoTracks documentation> 
+getVideoTracks ::
+               (MonadDOM m) => SourceBuffer -> m (Maybe VideoTrackList)
+getVideoTracks self
+  = liftDOM ((self ^. js "videoTracks") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.textTracks Mozilla SourceBuffer.textTracks documentation> 
+getTextTracks ::
+              (MonadDOM m) => SourceBuffer -> m (Maybe TextTrackList)
+getTextTracks self
+  = liftDOM ((self ^. js "textTracks") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.appendWindowStart Mozilla SourceBuffer.appendWindowStart documentation> 
+setAppendWindowStart ::
+                     (MonadDOM m) => SourceBuffer -> Double -> m ()
+setAppendWindowStart self val
+  = liftDOM (self ^. jss "appendWindowStart" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.appendWindowStart Mozilla SourceBuffer.appendWindowStart documentation> 
+getAppendWindowStart :: (MonadDOM m) => SourceBuffer -> m Double
+getAppendWindowStart self
+  = liftDOM ((self ^. js "appendWindowStart") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.appendWindowEnd Mozilla SourceBuffer.appendWindowEnd documentation> 
+setAppendWindowEnd ::
+                   (MonadDOM m) => SourceBuffer -> Double -> m ()
+setAppendWindowEnd self val
+  = liftDOM (self ^. jss "appendWindowEnd" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.appendWindowEnd Mozilla SourceBuffer.appendWindowEnd documentation> 
+getAppendWindowEnd :: (MonadDOM m) => SourceBuffer -> m Double
+getAppendWindowEnd self
+  = liftDOM ((self ^. js "appendWindowEnd") >>= valToNumber)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SourceBufferList.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SourceBufferList.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SourceBufferList.hs
@@ -0,0 +1,27 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SourceBufferList
+       (item, getLength, SourceBufferList, castToSourceBufferList,
+        gTypeSourceBufferList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBufferList.item Mozilla SourceBufferList.item documentation> 
+item ::
+     (MonadDOM m) => SourceBufferList -> Word -> m (Maybe SourceBuffer)
+item self index
+  = liftDOM ((self ^. jsf "item" [toJSVal index]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBufferList.length Mozilla SourceBufferList.length documentation> 
+getLength :: (MonadDOM m) => SourceBufferList -> m Word
+getLength self
+  = liftDOM (round <$> ((self ^. js "length") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SourceInfo.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SourceInfo.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SourceInfo.hs
@@ -0,0 +1,33 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SourceInfo
+       (getSourceId, getKind, getLabel, SourceInfo, castToSourceInfo,
+        gTypeSourceInfo)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceInfo.sourceId Mozilla SourceInfo.sourceId documentation> 
+getSourceId ::
+            (MonadDOM m, FromJSString result) => SourceInfo -> m result
+getSourceId self
+  = liftDOM ((self ^. js "sourceId") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceInfo.kind Mozilla SourceInfo.kind documentation> 
+getKind ::
+        (MonadDOM m, FromJSString result) => SourceInfo -> m result
+getKind self = liftDOM ((self ^. js "kind") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceInfo.label Mozilla SourceInfo.label documentation> 
+getLabel ::
+         (MonadDOM m, FromJSString result) => SourceInfo -> m result
+getLabel self
+  = liftDOM ((self ^. js "label") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SpeechSynthesis.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SpeechSynthesis.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SpeechSynthesis.hs
@@ -0,0 +1,53 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SpeechSynthesis
+       (speak, cancel, pause, resume, getVoices, getPending, getSpeaking,
+        getPaused, SpeechSynthesis, castToSpeechSynthesis,
+        gTypeSpeechSynthesis)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesis.speak Mozilla SpeechSynthesis.speak documentation> 
+speak ::
+      (MonadDOM m) =>
+        SpeechSynthesis -> Maybe SpeechSynthesisUtterance -> m ()
+speak self utterance
+  = liftDOM (void (self ^. jsf "speak" [toJSVal utterance]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesis.cancel Mozilla SpeechSynthesis.cancel documentation> 
+cancel :: (MonadDOM m) => SpeechSynthesis -> m ()
+cancel self = liftDOM (void (self ^. js "cancel"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesis.pause Mozilla SpeechSynthesis.pause documentation> 
+pause :: (MonadDOM m) => SpeechSynthesis -> m ()
+pause self = liftDOM (void (self ^. js "pause"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesis.resume Mozilla SpeechSynthesis.resume documentation> 
+resume :: (MonadDOM m) => SpeechSynthesis -> m ()
+resume self = liftDOM (void (self ^. js "resume"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesis.getVoices Mozilla SpeechSynthesis.getVoices documentation> 
+getVoices ::
+          (MonadDOM m) => SpeechSynthesis -> m [Maybe SpeechSynthesisVoice]
+getVoices self = liftDOM ((self ^. js "getVoices") >>= fromJSArray)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesis.pending Mozilla SpeechSynthesis.pending documentation> 
+getPending :: (MonadDOM m) => SpeechSynthesis -> m Bool
+getPending self = liftDOM ((self ^. js "pending") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesis.speaking Mozilla SpeechSynthesis.speaking documentation> 
+getSpeaking :: (MonadDOM m) => SpeechSynthesis -> m Bool
+getSpeaking self = liftDOM ((self ^. js "speaking") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesis.paused Mozilla SpeechSynthesis.paused documentation> 
+getPaused :: (MonadDOM m) => SpeechSynthesis -> m Bool
+getPaused self = liftDOM ((self ^. js "paused") >>= valToBool)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SpeechSynthesisEvent.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SpeechSynthesisEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SpeechSynthesisEvent.hs
@@ -0,0 +1,33 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SpeechSynthesisEvent
+       (getCharIndex, getElapsedTime, getName, SpeechSynthesisEvent,
+        castToSpeechSynthesisEvent, gTypeSpeechSynthesisEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisEvent.charIndex Mozilla SpeechSynthesisEvent.charIndex documentation> 
+getCharIndex :: (MonadDOM m) => SpeechSynthesisEvent -> m Word
+getCharIndex self
+  = liftDOM (round <$> ((self ^. js "charIndex") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisEvent.elapsedTime Mozilla SpeechSynthesisEvent.elapsedTime documentation> 
+getElapsedTime :: (MonadDOM m) => SpeechSynthesisEvent -> m Float
+getElapsedTime self
+  = liftDOM
+      (realToFrac <$> ((self ^. js "elapsedTime") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisEvent.name Mozilla SpeechSynthesisEvent.name documentation> 
+getName ::
+        (MonadDOM m, FromJSString result) =>
+          SpeechSynthesisEvent -> m result
+getName self = liftDOM ((self ^. js "name") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SpeechSynthesisUtterance.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SpeechSynthesisUtterance.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SpeechSynthesisUtterance.hs
@@ -0,0 +1,121 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SpeechSynthesisUtterance
+       (newSpeechSynthesisUtterance, setText, getText, setLang, getLang,
+        setVoice, getVoice, setVolume, getVolume, setRate, getRate,
+        setPitch, getPitch, start, end, error, pause, resume, mark,
+        boundary, SpeechSynthesisUtterance, castToSpeechSynthesisUtterance,
+        gTypeSpeechSynthesisUtterance)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance Mozilla SpeechSynthesisUtterance documentation> 
+newSpeechSynthesisUtterance ::
+                            (MonadDOM m, ToJSString text) => text -> m SpeechSynthesisUtterance
+newSpeechSynthesisUtterance text
+  = liftDOM
+      (SpeechSynthesisUtterance <$>
+         new (jsg "SpeechSynthesisUtterance") [toJSVal text])
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.text Mozilla SpeechSynthesisUtterance.text documentation> 
+setText ::
+        (MonadDOM m, ToJSString val) =>
+          SpeechSynthesisUtterance -> val -> m ()
+setText self val = liftDOM (self ^. jss "text" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.text Mozilla SpeechSynthesisUtterance.text documentation> 
+getText ::
+        (MonadDOM m, FromJSString result) =>
+          SpeechSynthesisUtterance -> m result
+getText self = liftDOM ((self ^. js "text") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.lang Mozilla SpeechSynthesisUtterance.lang documentation> 
+setLang ::
+        (MonadDOM m, ToJSString val) =>
+          SpeechSynthesisUtterance -> val -> m ()
+setLang self val = liftDOM (self ^. jss "lang" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.lang Mozilla SpeechSynthesisUtterance.lang documentation> 
+getLang ::
+        (MonadDOM m, FromJSString result) =>
+          SpeechSynthesisUtterance -> m result
+getLang self = liftDOM ((self ^. js "lang") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.voice Mozilla SpeechSynthesisUtterance.voice documentation> 
+setVoice ::
+         (MonadDOM m) =>
+           SpeechSynthesisUtterance -> Maybe SpeechSynthesisVoice -> m ()
+setVoice self val = liftDOM (self ^. jss "voice" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.voice Mozilla SpeechSynthesisUtterance.voice documentation> 
+getVoice ::
+         (MonadDOM m) =>
+           SpeechSynthesisUtterance -> m (Maybe SpeechSynthesisVoice)
+getVoice self = liftDOM ((self ^. js "voice") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.volume Mozilla SpeechSynthesisUtterance.volume documentation> 
+setVolume ::
+          (MonadDOM m) => SpeechSynthesisUtterance -> Float -> m ()
+setVolume self val = liftDOM (self ^. jss "volume" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.volume Mozilla SpeechSynthesisUtterance.volume documentation> 
+getVolume :: (MonadDOM m) => SpeechSynthesisUtterance -> m Float
+getVolume self
+  = liftDOM (realToFrac <$> ((self ^. js "volume") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.rate Mozilla SpeechSynthesisUtterance.rate documentation> 
+setRate ::
+        (MonadDOM m) => SpeechSynthesisUtterance -> Float -> m ()
+setRate self val = liftDOM (self ^. jss "rate" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.rate Mozilla SpeechSynthesisUtterance.rate documentation> 
+getRate :: (MonadDOM m) => SpeechSynthesisUtterance -> m Float
+getRate self
+  = liftDOM (realToFrac <$> ((self ^. js "rate") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.pitch Mozilla SpeechSynthesisUtterance.pitch documentation> 
+setPitch ::
+         (MonadDOM m) => SpeechSynthesisUtterance -> Float -> m ()
+setPitch self val = liftDOM (self ^. jss "pitch" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.pitch Mozilla SpeechSynthesisUtterance.pitch documentation> 
+getPitch :: (MonadDOM m) => SpeechSynthesisUtterance -> m Float
+getPitch self
+  = liftDOM (realToFrac <$> ((self ^. js "pitch") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.onstart Mozilla SpeechSynthesisUtterance.onstart documentation> 
+start :: EventName SpeechSynthesisUtterance Event
+start = unsafeEventName (toJSString "start")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.onend Mozilla SpeechSynthesisUtterance.onend documentation> 
+end :: EventName SpeechSynthesisUtterance Event
+end = unsafeEventName (toJSString "end")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.onerror Mozilla SpeechSynthesisUtterance.onerror documentation> 
+error :: EventName SpeechSynthesisUtterance UIEvent
+error = unsafeEventName (toJSString "error")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.onpause Mozilla SpeechSynthesisUtterance.onpause documentation> 
+pause :: EventName SpeechSynthesisUtterance Event
+pause = unsafeEventName (toJSString "pause")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.onresume Mozilla SpeechSynthesisUtterance.onresume documentation> 
+resume :: EventName SpeechSynthesisUtterance Event
+resume = unsafeEventName (toJSString "resume")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.onmark Mozilla SpeechSynthesisUtterance.onmark documentation> 
+mark :: EventName SpeechSynthesisUtterance Event
+mark = unsafeEventName (toJSString "mark")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.onboundary Mozilla SpeechSynthesisUtterance.onboundary documentation> 
+boundary :: EventName SpeechSynthesisUtterance Event
+boundary = unsafeEventName (toJSString "boundary")
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SpeechSynthesisVoice.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SpeechSynthesisVoice.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SpeechSynthesisVoice.hs
@@ -0,0 +1,45 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SpeechSynthesisVoice
+       (getVoiceURI, getName, getLang, getLocalService, getDefault,
+        SpeechSynthesisVoice, castToSpeechSynthesisVoice,
+        gTypeSpeechSynthesisVoice)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisVoice.voiceURI Mozilla SpeechSynthesisVoice.voiceURI documentation> 
+getVoiceURI ::
+            (MonadDOM m, FromJSString result) =>
+              SpeechSynthesisVoice -> m result
+getVoiceURI self
+  = liftDOM ((self ^. js "voiceURI") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisVoice.name Mozilla SpeechSynthesisVoice.name documentation> 
+getName ::
+        (MonadDOM m, FromJSString result) =>
+          SpeechSynthesisVoice -> m result
+getName self = liftDOM ((self ^. js "name") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisVoice.lang Mozilla SpeechSynthesisVoice.lang documentation> 
+getLang ::
+        (MonadDOM m, FromJSString result) =>
+          SpeechSynthesisVoice -> m result
+getLang self = liftDOM ((self ^. js "lang") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisVoice.localService Mozilla SpeechSynthesisVoice.localService documentation> 
+getLocalService :: (MonadDOM m) => SpeechSynthesisVoice -> m Bool
+getLocalService self
+  = liftDOM ((self ^. js "localService") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisVoice.default Mozilla SpeechSynthesisVoice.default documentation> 
+getDefault :: (MonadDOM m) => SpeechSynthesisVoice -> m Bool
+getDefault self = liftDOM ((self ^. js "default") >>= valToBool)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/Storage.hs b/src/Language/Javascript/JSaddle/DOM/Generated/Storage.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/Storage.hs
@@ -0,0 +1,55 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.Storage
+       (key, getItem, setItem, removeItem, clear, getLength, Storage,
+        castToStorage, gTypeStorage)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Storage.key Mozilla Storage.key documentation> 
+key ::
+    (MonadDOM m, FromJSString result) =>
+      Storage -> Word -> m (Maybe result)
+key self index
+  = liftDOM
+      ((self ^. jsf "key" [toJSVal index]) >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Storage.getItem Mozilla Storage.getItem documentation> 
+getItem ::
+        (MonadDOM m, ToJSString key, FromJSString result) =>
+          Storage -> key -> m (Maybe result)
+getItem self key
+  = liftDOM
+      ((self ^. jsf "getItem" [toJSVal key]) >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Storage.setItem Mozilla Storage.setItem documentation> 
+setItem ::
+        (MonadDOM m, ToJSString key, ToJSString data') =>
+          Storage -> key -> data' -> m ()
+setItem self key data'
+  = liftDOM
+      (void (self ^. jsf "setItem" [toJSVal key, toJSVal data']))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Storage.removeItem Mozilla Storage.removeItem documentation> 
+removeItem ::
+           (MonadDOM m, ToJSString key) => Storage -> key -> m ()
+removeItem self key
+  = liftDOM (void (self ^. jsf "removeItem" [toJSVal key]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Storage.clear Mozilla Storage.clear documentation> 
+clear :: (MonadDOM m) => Storage -> m ()
+clear self = liftDOM (void (self ^. js "clear"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Storage.length Mozilla Storage.length documentation> 
+getLength :: (MonadDOM m) => Storage -> m Word
+getLength self
+  = liftDOM (round <$> ((self ^. js "length") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/StorageErrorCallback.hs b/src/Language/Javascript/JSaddle/DOM/Generated/StorageErrorCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/StorageErrorCallback.hs
@@ -0,0 +1,46 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.StorageErrorCallback
+       (newStorageErrorCallback, newStorageErrorCallbackSync,
+        newStorageErrorCallbackAsync, StorageErrorCallback)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageErrorCallback Mozilla StorageErrorCallback documentation> 
+newStorageErrorCallback ::
+                        (MonadDOM m) =>
+                          (Maybe DOMException -> JSM ()) -> m StorageErrorCallback
+newStorageErrorCallback callback
+  = liftDOM
+      (StorageErrorCallback . Callback <$>
+         function ""
+           (\ _ _ [error] -> fromJSVal error >>= \ error' -> callback error'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageErrorCallback Mozilla StorageErrorCallback documentation> 
+newStorageErrorCallbackSync ::
+                            (MonadDOM m) =>
+                              (Maybe DOMException -> JSM ()) -> m StorageErrorCallback
+newStorageErrorCallbackSync callback
+  = liftDOM
+      (StorageErrorCallback . Callback <$>
+         function ""
+           (\ _ _ [error] -> fromJSVal error >>= \ error' -> callback error'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageErrorCallback Mozilla StorageErrorCallback documentation> 
+newStorageErrorCallbackAsync ::
+                             (MonadDOM m) =>
+                               (Maybe DOMException -> JSM ()) -> m StorageErrorCallback
+newStorageErrorCallbackAsync callback
+  = liftDOM
+      (StorageErrorCallback . Callback <$>
+         function ""
+           (\ _ _ [error] -> fromJSVal error >>= \ error' -> callback error'))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/StorageEvent.hs b/src/Language/Javascript/JSaddle/DOM/Generated/StorageEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/StorageEvent.hs
@@ -0,0 +1,67 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.StorageEvent
+       (initStorageEvent, getKey, getOldValue, getNewValue, getUrl,
+        getStorageArea, StorageEvent, castToStorageEvent,
+        gTypeStorageEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageEvent.initStorageEvent Mozilla StorageEvent.initStorageEvent documentation> 
+initStorageEvent ::
+                 (MonadDOM m, ToJSString typeArg, ToJSString keyArg,
+                  ToJSString oldValueArg, ToJSString newValueArg,
+                  ToJSString urlArg) =>
+                   StorageEvent ->
+                     typeArg ->
+                       Bool ->
+                         Bool ->
+                           keyArg ->
+                             Maybe oldValueArg ->
+                               Maybe newValueArg -> urlArg -> Maybe Storage -> m ()
+initStorageEvent self typeArg canBubbleArg cancelableArg keyArg
+  oldValueArg newValueArg urlArg storageAreaArg
+  = liftDOM
+      (void
+         (self ^. jsf "initStorageEvent"
+            [toJSVal typeArg, toJSVal canBubbleArg, toJSVal cancelableArg,
+             toJSVal keyArg, toJSVal oldValueArg, toJSVal newValueArg,
+             toJSVal urlArg, toJSVal storageAreaArg]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageEvent.key Mozilla StorageEvent.key documentation> 
+getKey ::
+       (MonadDOM m, FromJSString result) => StorageEvent -> m result
+getKey self = liftDOM ((self ^. js "key") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageEvent.oldValue Mozilla StorageEvent.oldValue documentation> 
+getOldValue ::
+            (MonadDOM m, FromJSString result) =>
+              StorageEvent -> m (Maybe result)
+getOldValue self
+  = liftDOM ((self ^. js "oldValue") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageEvent.newValue Mozilla StorageEvent.newValue documentation> 
+getNewValue ::
+            (MonadDOM m, FromJSString result) =>
+              StorageEvent -> m (Maybe result)
+getNewValue self
+  = liftDOM ((self ^. js "newValue") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageEvent.url Mozilla StorageEvent.url documentation> 
+getUrl ::
+       (MonadDOM m, FromJSString result) => StorageEvent -> m result
+getUrl self = liftDOM ((self ^. js "url") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageEvent.storageArea Mozilla StorageEvent.storageArea documentation> 
+getStorageArea :: (MonadDOM m) => StorageEvent -> m (Maybe Storage)
+getStorageArea self
+  = liftDOM ((self ^. js "storageArea") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/StorageInfo.hs b/src/Language/Javascript/JSaddle/DOM/Generated/StorageInfo.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/StorageInfo.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.StorageInfo
+       (queryUsageAndQuota, requestQuota, pattern TEMPORARY,
+        pattern PERSISTENT, StorageInfo, castToStorageInfo,
+        gTypeStorageInfo)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageInfo.queryUsageAndQuota Mozilla StorageInfo.queryUsageAndQuota documentation> 
+queryUsageAndQuota ::
+                   (MonadDOM m) =>
+                     StorageInfo ->
+                       Word ->
+                         Maybe StorageUsageCallback -> Maybe StorageErrorCallback -> m ()
+queryUsageAndQuota self storageType usageCallback errorCallback
+  = liftDOM
+      (void
+         (self ^. jsf "queryUsageAndQuota"
+            [toJSVal storageType, toJSVal usageCallback,
+             toJSVal errorCallback]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageInfo.requestQuota Mozilla StorageInfo.requestQuota documentation> 
+requestQuota ::
+             (MonadDOM m) =>
+               StorageInfo ->
+                 Word ->
+                   Word64 ->
+                     Maybe StorageQuotaCallback -> Maybe StorageErrorCallback -> m ()
+requestQuota self storageType newQuotaInBytes quotaCallback
+  errorCallback
+  = liftDOM
+      (void
+         (self ^. jsf "requestQuota"
+            [toJSVal storageType, toJSVal newQuotaInBytes,
+             toJSVal quotaCallback, toJSVal errorCallback]))
+pattern TEMPORARY = 0
+pattern PERSISTENT = 1
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/StorageQuota.hs b/src/Language/Javascript/JSaddle/DOM/Generated/StorageQuota.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/StorageQuota.hs
@@ -0,0 +1,40 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.StorageQuota
+       (queryUsageAndQuota, requestQuota, StorageQuota,
+        castToStorageQuota, gTypeStorageQuota)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageQuota.queryUsageAndQuota Mozilla StorageQuota.queryUsageAndQuota documentation> 
+queryUsageAndQuota ::
+                   (MonadDOM m) =>
+                     StorageQuota ->
+                       Maybe StorageUsageCallback -> Maybe StorageErrorCallback -> m ()
+queryUsageAndQuota self usageCallback errorCallback
+  = liftDOM
+      (void
+         (self ^. jsf "queryUsageAndQuota"
+            [toJSVal usageCallback, toJSVal errorCallback]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageQuota.requestQuota Mozilla StorageQuota.requestQuota documentation> 
+requestQuota ::
+             (MonadDOM m) =>
+               StorageQuota ->
+                 Word64 ->
+                   Maybe StorageQuotaCallback -> Maybe StorageErrorCallback -> m ()
+requestQuota self newQuotaInBytes quotaCallback errorCallback
+  = liftDOM
+      (void
+         (self ^. jsf "requestQuota"
+            [toJSVal newQuotaInBytes, toJSVal quotaCallback,
+             toJSVal errorCallback]))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/StorageQuotaCallback.hs b/src/Language/Javascript/JSaddle/DOM/Generated/StorageQuotaCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/StorageQuotaCallback.hs
@@ -0,0 +1,49 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.StorageQuotaCallback
+       (newStorageQuotaCallback, newStorageQuotaCallbackSync,
+        newStorageQuotaCallbackAsync, StorageQuotaCallback)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageQuotaCallback Mozilla StorageQuotaCallback documentation> 
+newStorageQuotaCallback ::
+                        (MonadDOM m) => (Double -> JSM ()) -> m StorageQuotaCallback
+newStorageQuotaCallback callback
+  = liftDOM
+      (StorageQuotaCallback . Callback <$>
+         function ""
+           (\ _ _ [grantedQuotaInBytes] ->
+              fromJSValUnchecked grantedQuotaInBytes >>=
+                \ grantedQuotaInBytes' -> callback grantedQuotaInBytes'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageQuotaCallback Mozilla StorageQuotaCallback documentation> 
+newStorageQuotaCallbackSync ::
+                            (MonadDOM m) => (Double -> JSM ()) -> m StorageQuotaCallback
+newStorageQuotaCallbackSync callback
+  = liftDOM
+      (StorageQuotaCallback . Callback <$>
+         function ""
+           (\ _ _ [grantedQuotaInBytes] ->
+              fromJSValUnchecked grantedQuotaInBytes >>=
+                \ grantedQuotaInBytes' -> callback grantedQuotaInBytes'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageQuotaCallback Mozilla StorageQuotaCallback documentation> 
+newStorageQuotaCallbackAsync ::
+                             (MonadDOM m) => (Double -> JSM ()) -> m StorageQuotaCallback
+newStorageQuotaCallbackAsync callback
+  = liftDOM
+      (StorageQuotaCallback . Callback <$>
+         function ""
+           (\ _ _ [grantedQuotaInBytes] ->
+              fromJSValUnchecked grantedQuotaInBytes >>=
+                \ grantedQuotaInBytes' -> callback grantedQuotaInBytes'))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/StorageUsageCallback.hs b/src/Language/Javascript/JSaddle/DOM/Generated/StorageUsageCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/StorageUsageCallback.hs
@@ -0,0 +1,61 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.StorageUsageCallback
+       (newStorageUsageCallback, newStorageUsageCallbackSync,
+        newStorageUsageCallbackAsync, StorageUsageCallback)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageUsageCallback Mozilla StorageUsageCallback documentation> 
+newStorageUsageCallback ::
+                        (MonadDOM m) =>
+                          (Double -> Double -> JSM ()) -> m StorageUsageCallback
+newStorageUsageCallback callback
+  = liftDOM
+      (StorageUsageCallback . Callback <$>
+         function ""
+           (\ _ _ [currentUsageInBytes, currentQuotaInBytes] ->
+              fromJSValUnchecked currentQuotaInBytes >>=
+                \ currentQuotaInBytes' ->
+                  fromJSValUnchecked currentUsageInBytes >>=
+                    \ currentUsageInBytes' -> callback currentUsageInBytes'
+                    currentQuotaInBytes'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageUsageCallback Mozilla StorageUsageCallback documentation> 
+newStorageUsageCallbackSync ::
+                            (MonadDOM m) =>
+                              (Double -> Double -> JSM ()) -> m StorageUsageCallback
+newStorageUsageCallbackSync callback
+  = liftDOM
+      (StorageUsageCallback . Callback <$>
+         function ""
+           (\ _ _ [currentUsageInBytes, currentQuotaInBytes] ->
+              fromJSValUnchecked currentQuotaInBytes >>=
+                \ currentQuotaInBytes' ->
+                  fromJSValUnchecked currentUsageInBytes >>=
+                    \ currentUsageInBytes' -> callback currentUsageInBytes'
+                    currentQuotaInBytes'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageUsageCallback Mozilla StorageUsageCallback documentation> 
+newStorageUsageCallbackAsync ::
+                             (MonadDOM m) =>
+                               (Double -> Double -> JSM ()) -> m StorageUsageCallback
+newStorageUsageCallbackAsync callback
+  = liftDOM
+      (StorageUsageCallback . Callback <$>
+         function ""
+           (\ _ _ [currentUsageInBytes, currentQuotaInBytes] ->
+              fromJSValUnchecked currentQuotaInBytes >>=
+                \ currentQuotaInBytes' ->
+                  fromJSValUnchecked currentUsageInBytes >>=
+                    \ currentUsageInBytes' -> callback currentUsageInBytes'
+                    currentQuotaInBytes'))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/StringCallback.hs b/src/Language/Javascript/JSaddle/DOM/Generated/StringCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/StringCallback.hs
@@ -0,0 +1,49 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.StringCallback
+       (newStringCallback, newStringCallbackSync, newStringCallbackAsync,
+        StringCallback)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StringCallback Mozilla StringCallback documentation> 
+newStringCallback ::
+                  (MonadDOM m, FromJSString data') =>
+                    (data' -> JSM ()) -> m (StringCallback data')
+newStringCallback callback
+  = liftDOM
+      (StringCallback . Callback <$>
+         function ""
+           (\ _ _ [data'] ->
+              fromJSValUnchecked data' >>= \ data'' -> callback data''))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StringCallback Mozilla StringCallback documentation> 
+newStringCallbackSync ::
+                      (MonadDOM m, FromJSString data') =>
+                        (data' -> JSM ()) -> m (StringCallback data')
+newStringCallbackSync callback
+  = liftDOM
+      (StringCallback . Callback <$>
+         function ""
+           (\ _ _ [data'] ->
+              fromJSValUnchecked data' >>= \ data'' -> callback data''))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StringCallback Mozilla StringCallback documentation> 
+newStringCallbackAsync ::
+                       (MonadDOM m, FromJSString data') =>
+                         (data' -> JSM ()) -> m (StringCallback data')
+newStringCallbackAsync callback
+  = liftDOM
+      (StringCallback . Callback <$>
+         function ""
+           (\ _ _ [data'] ->
+              fromJSValUnchecked data' >>= \ data'' -> callback data''))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/StyleMedia.hs b/src/Language/Javascript/JSaddle/DOM/Generated/StyleMedia.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/StyleMedia.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.StyleMedia
+       (matchMedium, getType, StyleMedia, castToStyleMedia,
+        gTypeStyleMedia)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleMedia.matchMedium Mozilla StyleMedia.matchMedium documentation> 
+matchMedium ::
+            (MonadDOM m, ToJSString mediaquery) =>
+              StyleMedia -> mediaquery -> m Bool
+matchMedium self mediaquery
+  = liftDOM
+      ((self ^. jsf "matchMedium" [toJSVal mediaquery]) >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleMedia.type Mozilla StyleMedia.type documentation> 
+getType ::
+        (MonadDOM m, FromJSString result) => StyleMedia -> m result
+getType self = liftDOM ((self ^. js "type") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/StyleSheet.hs b/src/Language/Javascript/JSaddle/DOM/Generated/StyleSheet.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/StyleSheet.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.StyleSheet
+       (getType, setDisabled, getDisabled, getOwnerNode,
+        getParentStyleSheet, getHref, getTitle, getMedia, StyleSheet,
+        castToStyleSheet, gTypeStyleSheet, IsStyleSheet, toStyleSheet)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet.type Mozilla StyleSheet.type documentation> 
+getType ::
+        (MonadDOM m, IsStyleSheet self, FromJSString result) =>
+          self -> m (Maybe result)
+getType self
+  = liftDOM
+      (((toStyleSheet self) ^. js "type") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet.disabled Mozilla StyleSheet.disabled documentation> 
+setDisabled ::
+            (MonadDOM m, IsStyleSheet self) => self -> Bool -> m ()
+setDisabled self val
+  = liftDOM ((toStyleSheet self) ^. jss "disabled" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet.disabled Mozilla StyleSheet.disabled documentation> 
+getDisabled :: (MonadDOM m, IsStyleSheet self) => self -> m Bool
+getDisabled self
+  = liftDOM (((toStyleSheet self) ^. js "disabled") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet.ownerNode Mozilla StyleSheet.ownerNode documentation> 
+getOwnerNode ::
+             (MonadDOM m, IsStyleSheet self) => self -> m (Maybe Node)
+getOwnerNode self
+  = liftDOM (((toStyleSheet self) ^. js "ownerNode") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet.parentStyleSheet Mozilla StyleSheet.parentStyleSheet documentation> 
+getParentStyleSheet ::
+                    (MonadDOM m, IsStyleSheet self) => self -> m (Maybe StyleSheet)
+getParentStyleSheet self
+  = liftDOM
+      (((toStyleSheet self) ^. js "parentStyleSheet") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet.href Mozilla StyleSheet.href documentation> 
+getHref ::
+        (MonadDOM m, IsStyleSheet self, FromJSString result) =>
+          self -> m (Maybe result)
+getHref self
+  = liftDOM
+      (((toStyleSheet self) ^. js "href") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet.title Mozilla StyleSheet.title documentation> 
+getTitle ::
+         (MonadDOM m, IsStyleSheet self, FromJSString result) =>
+           self -> m (Maybe result)
+getTitle self
+  = liftDOM
+      (((toStyleSheet self) ^. js "title") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet.media Mozilla StyleSheet.media documentation> 
+getMedia ::
+         (MonadDOM m, IsStyleSheet self) => self -> m (Maybe MediaList)
+getMedia self
+  = liftDOM (((toStyleSheet self) ^. js "media") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/StyleSheetList.hs b/src/Language/Javascript/JSaddle/DOM/Generated/StyleSheetList.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/StyleSheetList.hs
@@ -0,0 +1,34 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.StyleSheetList
+       (item, _get, getLength, StyleSheetList, castToStyleSheetList,
+        gTypeStyleSheetList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheetList.item Mozilla StyleSheetList.item documentation> 
+item ::
+     (MonadDOM m) => StyleSheetList -> Word -> m (Maybe StyleSheet)
+item self index
+  = liftDOM ((self ^. jsf "item" [toJSVal index]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheetList._get Mozilla StyleSheetList._get documentation> 
+_get ::
+     (MonadDOM m, ToJSString name) =>
+       StyleSheetList -> name -> m (Maybe CSSStyleSheet)
+_get self name
+  = liftDOM ((self ^. jsf "_get" [toJSVal name]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheetList.length Mozilla StyleSheetList.length documentation> 
+getLength :: (MonadDOM m) => StyleSheetList -> m Word
+getLength self
+  = liftDOM (round <$> ((self ^. js "length") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/SubtleCrypto.hs b/src/Language/Javascript/JSaddle/DOM/Generated/SubtleCrypto.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/SubtleCrypto.hs
@@ -0,0 +1,143 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.SubtleCrypto
+       (encrypt, decrypt, sign, verify, digest, generateKey, importKey,
+        exportKey, wrapKey, unwrapKey, SubtleCrypto, castToSubtleCrypto,
+        gTypeSubtleCrypto)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.encrypt Mozilla WebKitSubtleCrypto.encrypt documentation> 
+encrypt ::
+        (MonadDOM m, ToJSString algorithm, IsCryptoOperationData data') =>
+          SubtleCrypto ->
+            algorithm -> Maybe CryptoKey -> [Maybe data'] -> m (Maybe Promise)
+encrypt self algorithm key data'
+  = liftDOM
+      ((self ^. jsf "encrypt"
+          [toJSVal algorithm, toJSVal key, toJSVal (array data')])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.decrypt Mozilla WebKitSubtleCrypto.decrypt documentation> 
+decrypt ::
+        (MonadDOM m, ToJSString algorithm, IsCryptoOperationData data') =>
+          SubtleCrypto ->
+            algorithm -> Maybe CryptoKey -> [Maybe data'] -> m (Maybe Promise)
+decrypt self algorithm key data'
+  = liftDOM
+      ((self ^. jsf "decrypt"
+          [toJSVal algorithm, toJSVal key, toJSVal (array data')])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.sign Mozilla WebKitSubtleCrypto.sign documentation> 
+sign ::
+     (MonadDOM m, ToJSString algorithm, IsCryptoOperationData data') =>
+       SubtleCrypto ->
+         algorithm -> Maybe CryptoKey -> [Maybe data'] -> m (Maybe Promise)
+sign self algorithm key data'
+  = liftDOM
+      ((self ^. jsf "sign"
+          [toJSVal algorithm, toJSVal key, toJSVal (array data')])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.verify Mozilla WebKitSubtleCrypto.verify documentation> 
+verify ::
+       (MonadDOM m, ToJSString algorithm, IsCryptoOperationData signature,
+        IsCryptoOperationData data') =>
+         SubtleCrypto ->
+           algorithm ->
+             Maybe CryptoKey ->
+               Maybe signature -> [Maybe data'] -> m (Maybe Promise)
+verify self algorithm key signature data'
+  = liftDOM
+      ((self ^. jsf "verify"
+          [toJSVal algorithm, toJSVal key, toJSVal signature,
+           toJSVal (array data')])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.digest Mozilla WebKitSubtleCrypto.digest documentation> 
+digest ::
+       (MonadDOM m, ToJSString algorithm, IsCryptoOperationData data') =>
+         SubtleCrypto -> algorithm -> [Maybe data'] -> m (Maybe Promise)
+digest self algorithm data'
+  = liftDOM
+      ((self ^. jsf "digest" [toJSVal algorithm, toJSVal (array data')])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.generateKey Mozilla WebKitSubtleCrypto.generateKey documentation> 
+generateKey ::
+            (MonadDOM m, ToJSString algorithm) =>
+              SubtleCrypto ->
+                algorithm -> Bool -> [KeyUsage] -> m (Maybe Promise)
+generateKey self algorithm extractable keyUsages
+  = liftDOM
+      ((self ^. jsf "generateKey"
+          [toJSVal algorithm, toJSVal extractable,
+           toJSVal (array keyUsages)])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.importKey Mozilla WebKitSubtleCrypto.importKey documentation> 
+importKey ::
+          (MonadDOM m, ToJSString format, IsCryptoOperationData keyData,
+           ToJSString algorithm) =>
+            SubtleCrypto ->
+              format ->
+                Maybe keyData ->
+                  algorithm -> Bool -> [KeyUsage] -> m (Maybe Promise)
+importKey self format keyData algorithm extractable keyUsages
+  = liftDOM
+      ((self ^. jsf "importKey"
+          [toJSVal format, toJSVal keyData, toJSVal algorithm,
+           toJSVal extractable, toJSVal (array keyUsages)])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.exportKey Mozilla WebKitSubtleCrypto.exportKey documentation> 
+exportKey ::
+          (MonadDOM m, ToJSString format) =>
+            SubtleCrypto -> format -> Maybe CryptoKey -> m (Maybe Promise)
+exportKey self format key
+  = liftDOM
+      ((self ^. jsf "exportKey" [toJSVal format, toJSVal key]) >>=
+         fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.wrapKey Mozilla WebKitSubtleCrypto.wrapKey documentation> 
+wrapKey ::
+        (MonadDOM m, ToJSString format, ToJSString wrapAlgorithm) =>
+          SubtleCrypto ->
+            format ->
+              Maybe CryptoKey ->
+                Maybe CryptoKey -> wrapAlgorithm -> m (Maybe Promise)
+wrapKey self format key wrappingKey wrapAlgorithm
+  = liftDOM
+      ((self ^. jsf "wrapKey"
+          [toJSVal format, toJSVal key, toJSVal wrappingKey,
+           toJSVal wrapAlgorithm])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.unwrapKey Mozilla WebKitSubtleCrypto.unwrapKey documentation> 
+unwrapKey ::
+          (MonadDOM m, ToJSString format, IsCryptoOperationData wrappedKey,
+           ToJSString unwrapAlgorithm, ToJSString unwrappedKeyAlgorithm) =>
+            SubtleCrypto ->
+              format ->
+                Maybe wrappedKey ->
+                  Maybe CryptoKey ->
+                    unwrapAlgorithm ->
+                      unwrappedKeyAlgorithm -> Bool -> [KeyUsage] -> m (Maybe Promise)
+unwrapKey self format wrappedKey unwrappingKey unwrapAlgorithm
+  unwrappedKeyAlgorithm extractable keyUsages
+  = liftDOM
+      ((self ^. jsf "unwrapKey"
+          [toJSVal format, toJSVal wrappedKey, toJSVal unwrappingKey,
+           toJSVal unwrapAlgorithm, toJSVal unwrappedKeyAlgorithm,
+           toJSVal extractable, toJSVal (array keyUsages)])
+         >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/Text.hs b/src/Language/Javascript/JSaddle/DOM/Generated/Text.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/Text.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.Text
+       (newText, splitText, replaceWholeText, getWholeText, Text,
+        castToText, gTypeText, IsText, toText)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Text Mozilla Text documentation> 
+newText :: (MonadDOM m, ToJSString data') => data' -> m Text
+newText data' = liftDOM (Text <$> new (jsg "Text") [toJSVal data'])
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Text.splitText Mozilla Text.splitText documentation> 
+splitText ::
+          (MonadDOM m, IsText self) => self -> Word -> m (Maybe Text)
+splitText self offset
+  = liftDOM
+      (((toText self) ^. jsf "splitText" [toJSVal offset]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Text.replaceWholeText Mozilla Text.replaceWholeText documentation> 
+replaceWholeText ::
+                 (MonadDOM m, IsText self, ToJSString content) =>
+                   self -> content -> m (Maybe Text)
+replaceWholeText self content
+  = liftDOM
+      (((toText self) ^. jsf "replaceWholeText" [toJSVal content]) >>=
+         fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Text.wholeText Mozilla Text.wholeText documentation> 
+getWholeText ::
+             (MonadDOM m, IsText self, FromJSString result) => self -> m result
+getWholeText self
+  = liftDOM
+      (((toText self) ^. js "wholeText") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/TextEvent.hs b/src/Language/Javascript/JSaddle/DOM/Generated/TextEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/TextEvent.hs
@@ -0,0 +1,34 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.TextEvent
+       (initTextEvent, getData, TextEvent, castToTextEvent,
+        gTypeTextEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextEvent.initTextEvent Mozilla TextEvent.initTextEvent documentation> 
+initTextEvent ::
+              (MonadDOM m, ToJSString typeArg, ToJSString dataArg) =>
+                TextEvent ->
+                  typeArg -> Bool -> Bool -> Maybe Window -> dataArg -> m ()
+initTextEvent self typeArg canBubbleArg cancelableArg viewArg
+  dataArg
+  = liftDOM
+      (void
+         (self ^. jsf "initTextEvent"
+            [toJSVal typeArg, toJSVal canBubbleArg, toJSVal cancelableArg,
+             toJSVal viewArg, toJSVal dataArg]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextEvent.data Mozilla TextEvent.data documentation> 
+getData ::
+        (MonadDOM m, FromJSString result) => TextEvent -> m result
+getData self = liftDOM ((self ^. js "data") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/TextMetrics.hs b/src/Language/Javascript/JSaddle/DOM/Generated/TextMetrics.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/TextMetrics.hs
@@ -0,0 +1,19 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.TextMetrics
+       (getWidth, TextMetrics, castToTextMetrics, gTypeTextMetrics) where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextMetrics.width Mozilla TextMetrics.width documentation> 
+getWidth :: (MonadDOM m) => TextMetrics -> m Float
+getWidth self
+  = liftDOM (realToFrac <$> ((self ^. js "width") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/TextTrack.hs b/src/Language/Javascript/JSaddle/DOM/Generated/TextTrack.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/TextTrack.hs
@@ -0,0 +1,112 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.TextTrack
+       (addCue, removeCue, addRegion, removeRegion, getId, setKind,
+        getKind, getLabel, setLanguage, getLanguage,
+        getInBandMetadataTrackDispatchType, setMode, getMode, getCues,
+        getActiveCues, cueChange, getRegions, getSourceBuffer, TextTrack,
+        castToTextTrack, gTypeTextTrack)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.addCue Mozilla TextTrack.addCue documentation> 
+addCue ::
+       (MonadDOM m, IsTextTrackCue cue) => TextTrack -> Maybe cue -> m ()
+addCue self cue
+  = liftDOM (void (self ^. jsf "addCue" [toJSVal cue]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.removeCue Mozilla TextTrack.removeCue documentation> 
+removeCue ::
+          (MonadDOM m, IsTextTrackCue cue) => TextTrack -> Maybe cue -> m ()
+removeCue self cue
+  = liftDOM (void (self ^. jsf "removeCue" [toJSVal cue]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.addRegion Mozilla TextTrack.addRegion documentation> 
+addRegion :: (MonadDOM m) => TextTrack -> Maybe VTTRegion -> m ()
+addRegion self region
+  = liftDOM (void (self ^. jsf "addRegion" [toJSVal region]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.removeRegion Mozilla TextTrack.removeRegion documentation> 
+removeRegion ::
+             (MonadDOM m) => TextTrack -> Maybe VTTRegion -> m ()
+removeRegion self region
+  = liftDOM (void (self ^. jsf "removeRegion" [toJSVal region]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.id Mozilla TextTrack.id documentation> 
+getId :: (MonadDOM m, FromJSString result) => TextTrack -> m result
+getId self = liftDOM ((self ^. js "id") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.kind Mozilla TextTrack.kind documentation> 
+setKind :: (MonadDOM m) => TextTrack -> TextTrackKind -> m ()
+setKind self val = liftDOM (self ^. jss "kind" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.kind Mozilla TextTrack.kind documentation> 
+getKind :: (MonadDOM m) => TextTrack -> m TextTrackKind
+getKind self = liftDOM ((self ^. js "kind") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.label Mozilla TextTrack.label documentation> 
+getLabel ::
+         (MonadDOM m, FromJSString result) => TextTrack -> m result
+getLabel self
+  = liftDOM ((self ^. js "label") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.language Mozilla TextTrack.language documentation> 
+setLanguage ::
+            (MonadDOM m, ToJSString val) => TextTrack -> val -> m ()
+setLanguage self val
+  = liftDOM (self ^. jss "language" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.language Mozilla TextTrack.language documentation> 
+getLanguage ::
+            (MonadDOM m, FromJSString result) => TextTrack -> m result
+getLanguage self
+  = liftDOM ((self ^. js "language") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.inBandMetadataTrackDispatchType Mozilla TextTrack.inBandMetadataTrackDispatchType documentation> 
+getInBandMetadataTrackDispatchType ::
+                                   (MonadDOM m, FromJSString result) => TextTrack -> m result
+getInBandMetadataTrackDispatchType self
+  = liftDOM
+      ((self ^. js "inBandMetadataTrackDispatchType") >>=
+         fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.mode Mozilla TextTrack.mode documentation> 
+setMode :: (MonadDOM m) => TextTrack -> TextTrackMode -> m ()
+setMode self val = liftDOM (self ^. jss "mode" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.mode Mozilla TextTrack.mode documentation> 
+getMode :: (MonadDOM m) => TextTrack -> m TextTrackMode
+getMode self = liftDOM ((self ^. js "mode") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.cues Mozilla TextTrack.cues documentation> 
+getCues :: (MonadDOM m) => TextTrack -> m (Maybe TextTrackCueList)
+getCues self = liftDOM ((self ^. js "cues") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.activeCues Mozilla TextTrack.activeCues documentation> 
+getActiveCues ::
+              (MonadDOM m) => TextTrack -> m (Maybe TextTrackCueList)
+getActiveCues self
+  = liftDOM ((self ^. js "activeCues") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.oncuechange Mozilla TextTrack.oncuechange documentation> 
+cueChange :: EventName TextTrack Event
+cueChange = unsafeEventName (toJSString "cuechange")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.regions Mozilla TextTrack.regions documentation> 
+getRegions :: (MonadDOM m) => TextTrack -> m (Maybe VTTRegionList)
+getRegions self = liftDOM ((self ^. js "regions") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.sourceBuffer Mozilla TextTrack.sourceBuffer documentation> 
+getSourceBuffer ::
+                (MonadDOM m) => TextTrack -> m (Maybe SourceBuffer)
+getSourceBuffer self
+  = liftDOM ((self ^. js "sourceBuffer") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/TextTrackCue.hs b/src/Language/Javascript/JSaddle/DOM/Generated/TextTrackCue.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/TextTrackCue.hs
@@ -0,0 +1,97 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.TextTrackCue
+       (newTextTrackCue, getTrack, setId, getId, setStartTime,
+        getStartTime, setEndTime, getEndTime, setPauseOnExit,
+        getPauseOnExit, enter, exit, TextTrackCue, castToTextTrackCue,
+        gTypeTextTrackCue, IsTextTrackCue, toTextTrackCue)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCue Mozilla TextTrackCue documentation> 
+newTextTrackCue ::
+                (MonadDOM m, ToJSString text) =>
+                  Double -> Double -> text -> m TextTrackCue
+newTextTrackCue startTime endTime text
+  = liftDOM
+      (TextTrackCue <$>
+         new (jsg "TextTrackCue")
+           [toJSVal startTime, toJSVal endTime, toJSVal text])
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCue.track Mozilla TextTrackCue.track documentation> 
+getTrack ::
+         (MonadDOM m, IsTextTrackCue self) => self -> m (Maybe TextTrack)
+getTrack self
+  = liftDOM (((toTextTrackCue self) ^. js "track") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCue.id Mozilla TextTrackCue.id documentation> 
+setId ::
+      (MonadDOM m, IsTextTrackCue self, ToJSString val) =>
+        self -> val -> m ()
+setId self val
+  = liftDOM ((toTextTrackCue self) ^. jss "id" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCue.id Mozilla TextTrackCue.id documentation> 
+getId ::
+      (MonadDOM m, IsTextTrackCue self, FromJSString result) =>
+        self -> m result
+getId self
+  = liftDOM
+      (((toTextTrackCue self) ^. js "id") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCue.startTime Mozilla TextTrackCue.startTime documentation> 
+setStartTime ::
+             (MonadDOM m, IsTextTrackCue self) => self -> Double -> m ()
+setStartTime self val
+  = liftDOM ((toTextTrackCue self) ^. jss "startTime" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCue.startTime Mozilla TextTrackCue.startTime documentation> 
+getStartTime ::
+             (MonadDOM m, IsTextTrackCue self) => self -> m Double
+getStartTime self
+  = liftDOM
+      (((toTextTrackCue self) ^. js "startTime") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCue.endTime Mozilla TextTrackCue.endTime documentation> 
+setEndTime ::
+           (MonadDOM m, IsTextTrackCue self) => self -> Double -> m ()
+setEndTime self val
+  = liftDOM ((toTextTrackCue self) ^. jss "endTime" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCue.endTime Mozilla TextTrackCue.endTime documentation> 
+getEndTime :: (MonadDOM m, IsTextTrackCue self) => self -> m Double
+getEndTime self
+  = liftDOM (((toTextTrackCue self) ^. js "endTime") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCue.pauseOnExit Mozilla TextTrackCue.pauseOnExit documentation> 
+setPauseOnExit ::
+               (MonadDOM m, IsTextTrackCue self) => self -> Bool -> m ()
+setPauseOnExit self val
+  = liftDOM
+      ((toTextTrackCue self) ^. jss "pauseOnExit" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCue.pauseOnExit Mozilla TextTrackCue.pauseOnExit documentation> 
+getPauseOnExit ::
+               (MonadDOM m, IsTextTrackCue self) => self -> m Bool
+getPauseOnExit self
+  = liftDOM
+      (((toTextTrackCue self) ^. js "pauseOnExit") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCue.onenter Mozilla TextTrackCue.onenter documentation> 
+enter ::
+      (IsTextTrackCue self, IsEventTarget self) => EventName self Event
+enter = unsafeEventName (toJSString "enter")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCue.onexit Mozilla TextTrackCue.onexit documentation> 
+exit ::
+     (IsTextTrackCue self, IsEventTarget self) => EventName self Event
+exit = unsafeEventName (toJSString "exit")
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/TextTrackCueList.hs b/src/Language/Javascript/JSaddle/DOM/Generated/TextTrackCueList.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/TextTrackCueList.hs
@@ -0,0 +1,34 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.TextTrackCueList
+       (item, getCueById, getLength, TextTrackCueList,
+        castToTextTrackCueList, gTypeTextTrackCueList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCueList.item Mozilla TextTrackCueList.item documentation> 
+item ::
+     (MonadDOM m) => TextTrackCueList -> Word -> m (Maybe TextTrackCue)
+item self index
+  = liftDOM ((self ^. jsf "item" [toJSVal index]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCueList.getCueById Mozilla TextTrackCueList.getCueById documentation> 
+getCueById ::
+           (MonadDOM m, ToJSString id) =>
+             TextTrackCueList -> id -> m (Maybe TextTrackCue)
+getCueById self id
+  = liftDOM ((self ^. jsf "getCueById" [toJSVal id]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCueList.length Mozilla TextTrackCueList.length documentation> 
+getLength :: (MonadDOM m) => TextTrackCueList -> m Word
+getLength self
+  = liftDOM (round <$> ((self ^. js "length") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/TextTrackList.hs b/src/Language/Javascript/JSaddle/DOM/Generated/TextTrackList.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/TextTrackList.hs
@@ -0,0 +1,46 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.TextTrackList
+       (item, getTrackById, getLength, addTrack, change, removeTrack,
+        TextTrackList, castToTextTrackList, gTypeTextTrackList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackList.item Mozilla TextTrackList.item documentation> 
+item ::
+     (MonadDOM m) => TextTrackList -> Word -> m (Maybe TextTrack)
+item self index
+  = liftDOM ((self ^. jsf "item" [toJSVal index]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackList.getTrackById Mozilla TextTrackList.getTrackById documentation> 
+getTrackById ::
+             (MonadDOM m, ToJSString id) =>
+               TextTrackList -> id -> m (Maybe TextTrack)
+getTrackById self id
+  = liftDOM ((self ^. jsf "getTrackById" [toJSVal id]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackList.length Mozilla TextTrackList.length documentation> 
+getLength :: (MonadDOM m) => TextTrackList -> m Word
+getLength self
+  = liftDOM (round <$> ((self ^. js "length") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackList.onaddtrack Mozilla TextTrackList.onaddtrack documentation> 
+addTrack :: EventName TextTrackList Event
+addTrack = unsafeEventName (toJSString "addtrack")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackList.onchange Mozilla TextTrackList.onchange documentation> 
+change :: EventName TextTrackList Event
+change = unsafeEventName (toJSString "change")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackList.onremovetrack Mozilla TextTrackList.onremovetrack documentation> 
+removeTrack :: EventName TextTrackList Event
+removeTrack = unsafeEventName (toJSString "removetrack")
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/TimeRanges.hs b/src/Language/Javascript/JSaddle/DOM/Generated/TimeRanges.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/TimeRanges.hs
@@ -0,0 +1,31 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.TimeRanges
+       (start, end, getLength, TimeRanges, castToTimeRanges,
+        gTypeTimeRanges)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TimeRanges.start Mozilla TimeRanges.start documentation> 
+start :: (MonadDOM m) => TimeRanges -> Word -> m Double
+start self index
+  = liftDOM ((self ^. jsf "start" [toJSVal index]) >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TimeRanges.end Mozilla TimeRanges.end documentation> 
+end :: (MonadDOM m) => TimeRanges -> Word -> m Double
+end self index
+  = liftDOM ((self ^. jsf "end" [toJSVal index]) >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TimeRanges.length Mozilla TimeRanges.length documentation> 
+getLength :: (MonadDOM m) => TimeRanges -> m Word
+getLength self
+  = liftDOM (round <$> ((self ^. js "length") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/Touch.hs b/src/Language/Javascript/JSaddle/DOM/Generated/Touch.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/Touch.hs
@@ -0,0 +1,82 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.Touch
+       (getClientX, getClientY, getScreenX, getScreenY, getPageX,
+        getPageY, getTarget, getIdentifier, getWebkitRadiusX,
+        getWebkitRadiusY, getWebkitRotationAngle, getWebkitForce, Touch,
+        castToTouch, gTypeTouch)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Touch.clientX Mozilla Touch.clientX documentation> 
+getClientX :: (MonadDOM m) => Touch -> m Int
+getClientX self
+  = liftDOM (round <$> ((self ^. js "clientX") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Touch.clientY Mozilla Touch.clientY documentation> 
+getClientY :: (MonadDOM m) => Touch -> m Int
+getClientY self
+  = liftDOM (round <$> ((self ^. js "clientY") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Touch.screenX Mozilla Touch.screenX documentation> 
+getScreenX :: (MonadDOM m) => Touch -> m Int
+getScreenX self
+  = liftDOM (round <$> ((self ^. js "screenX") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Touch.screenY Mozilla Touch.screenY documentation> 
+getScreenY :: (MonadDOM m) => Touch -> m Int
+getScreenY self
+  = liftDOM (round <$> ((self ^. js "screenY") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Touch.pageX Mozilla Touch.pageX documentation> 
+getPageX :: (MonadDOM m) => Touch -> m Int
+getPageX self
+  = liftDOM (round <$> ((self ^. js "pageX") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Touch.pageY Mozilla Touch.pageY documentation> 
+getPageY :: (MonadDOM m) => Touch -> m Int
+getPageY self
+  = liftDOM (round <$> ((self ^. js "pageY") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Touch.target Mozilla Touch.target documentation> 
+getTarget :: (MonadDOM m) => Touch -> m (Maybe EventTarget)
+getTarget self = liftDOM ((self ^. js "target") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Touch.identifier Mozilla Touch.identifier documentation> 
+getIdentifier :: (MonadDOM m) => Touch -> m Word
+getIdentifier self
+  = liftDOM (round <$> ((self ^. js "identifier") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Touch.webkitRadiusX Mozilla Touch.webkitRadiusX documentation> 
+getWebkitRadiusX :: (MonadDOM m) => Touch -> m Int
+getWebkitRadiusX self
+  = liftDOM
+      (round <$> ((self ^. js "webkitRadiusX") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Touch.webkitRadiusY Mozilla Touch.webkitRadiusY documentation> 
+getWebkitRadiusY :: (MonadDOM m) => Touch -> m Int
+getWebkitRadiusY self
+  = liftDOM
+      (round <$> ((self ^. js "webkitRadiusY") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Touch.webkitRotationAngle Mozilla Touch.webkitRotationAngle documentation> 
+getWebkitRotationAngle :: (MonadDOM m) => Touch -> m Float
+getWebkitRotationAngle self
+  = liftDOM
+      (realToFrac <$>
+         ((self ^. js "webkitRotationAngle") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Touch.webkitForce Mozilla Touch.webkitForce documentation> 
+getWebkitForce :: (MonadDOM m) => Touch -> m Float
+getWebkitForce self
+  = liftDOM
+      (realToFrac <$> ((self ^. js "webkitForce") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/TouchEvent.hs b/src/Language/Javascript/JSaddle/DOM/Generated/TouchEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/TouchEvent.hs
@@ -0,0 +1,69 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.TouchEvent
+       (initTouchEvent, getTouches, getTargetTouches, getChangedTouches,
+        getCtrlKey, getShiftKey, getAltKey, getMetaKey, TouchEvent,
+        castToTouchEvent, gTypeTouchEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent.initTouchEvent Mozilla TouchEvent.initTouchEvent documentation> 
+initTouchEvent ::
+               (MonadDOM m, ToJSString type') =>
+                 TouchEvent ->
+                   Maybe TouchList ->
+                     Maybe TouchList ->
+                       Maybe TouchList ->
+                         type' ->
+                           Maybe Window ->
+                             Int -> Int -> Int -> Int -> Bool -> Bool -> Bool -> Bool -> m ()
+initTouchEvent self touches targetTouches changedTouches type' view
+  screenX screenY clientX clientY ctrlKey altKey shiftKey metaKey
+  = liftDOM
+      (void
+         (self ^. jsf "initTouchEvent"
+            [toJSVal touches, toJSVal targetTouches, toJSVal changedTouches,
+             toJSVal type', toJSVal view, toJSVal screenX, toJSVal screenY,
+             toJSVal clientX, toJSVal clientY, toJSVal ctrlKey, toJSVal altKey,
+             toJSVal shiftKey, toJSVal metaKey]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent.touches Mozilla TouchEvent.touches documentation> 
+getTouches :: (MonadDOM m) => TouchEvent -> m (Maybe TouchList)
+getTouches self = liftDOM ((self ^. js "touches") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent.targetTouches Mozilla TouchEvent.targetTouches documentation> 
+getTargetTouches ::
+                 (MonadDOM m) => TouchEvent -> m (Maybe TouchList)
+getTargetTouches self
+  = liftDOM ((self ^. js "targetTouches") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent.changedTouches Mozilla TouchEvent.changedTouches documentation> 
+getChangedTouches ::
+                  (MonadDOM m) => TouchEvent -> m (Maybe TouchList)
+getChangedTouches self
+  = liftDOM ((self ^. js "changedTouches") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent.ctrlKey Mozilla TouchEvent.ctrlKey documentation> 
+getCtrlKey :: (MonadDOM m) => TouchEvent -> m Bool
+getCtrlKey self = liftDOM ((self ^. js "ctrlKey") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent.shiftKey Mozilla TouchEvent.shiftKey documentation> 
+getShiftKey :: (MonadDOM m) => TouchEvent -> m Bool
+getShiftKey self = liftDOM ((self ^. js "shiftKey") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent.altKey Mozilla TouchEvent.altKey documentation> 
+getAltKey :: (MonadDOM m) => TouchEvent -> m Bool
+getAltKey self = liftDOM ((self ^. js "altKey") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent.metaKey Mozilla TouchEvent.metaKey documentation> 
+getMetaKey :: (MonadDOM m) => TouchEvent -> m Bool
+getMetaKey self = liftDOM ((self ^. js "metaKey") >>= valToBool)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/TouchList.hs b/src/Language/Javascript/JSaddle/DOM/Generated/TouchList.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/TouchList.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.TouchList
+       (item, getLength, TouchList, castToTouchList, gTypeTouchList) where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TouchList.item Mozilla TouchList.item documentation> 
+item :: (MonadDOM m) => TouchList -> Word -> m (Maybe Touch)
+item self index
+  = liftDOM ((self ^. jsf "item" [toJSVal index]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TouchList.length Mozilla TouchList.length documentation> 
+getLength :: (MonadDOM m) => TouchList -> m Word
+getLength self
+  = liftDOM (round <$> ((self ^. js "length") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/TrackEvent.hs b/src/Language/Javascript/JSaddle/DOM/Generated/TrackEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/TrackEvent.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.TrackEvent
+       (getTrack, TrackEvent, castToTrackEvent, gTypeTrackEvent) where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TrackEvent.track Mozilla TrackEvent.track documentation> 
+getTrack :: (MonadDOM m) => TrackEvent -> m (Maybe GObject)
+getTrack self = liftDOM ((self ^. js "track") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/TransitionEvent.hs b/src/Language/Javascript/JSaddle/DOM/Generated/TransitionEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/TransitionEvent.hs
@@ -0,0 +1,33 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.TransitionEvent
+       (getPropertyName, getElapsedTime, getPseudoElement,
+        TransitionEvent, castToTransitionEvent, gTypeTransitionEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TransitionEvent.propertyName Mozilla TransitionEvent.propertyName documentation> 
+getPropertyName ::
+                (MonadDOM m, FromJSString result) => TransitionEvent -> m result
+getPropertyName self
+  = liftDOM ((self ^. js "propertyName") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TransitionEvent.elapsedTime Mozilla TransitionEvent.elapsedTime documentation> 
+getElapsedTime :: (MonadDOM m) => TransitionEvent -> m Double
+getElapsedTime self
+  = liftDOM ((self ^. js "elapsedTime") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TransitionEvent.pseudoElement Mozilla TransitionEvent.pseudoElement documentation> 
+getPseudoElement ::
+                 (MonadDOM m, FromJSString result) => TransitionEvent -> m result
+getPseudoElement self
+  = liftDOM ((self ^. js "pseudoElement") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/TreeWalker.hs b/src/Language/Javascript/JSaddle/DOM/Generated/TreeWalker.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/TreeWalker.hs
@@ -0,0 +1,78 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.TreeWalker
+       (parentNode, firstChild, lastChild, previousSibling, nextSibling,
+        previousNode, nextNode, getRoot, getWhatToShow, getFilter,
+        getExpandEntityReferences, setCurrentNode, getCurrentNode,
+        TreeWalker, castToTreeWalker, gTypeTreeWalker)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.parentNode Mozilla TreeWalker.parentNode documentation> 
+parentNode :: (MonadDOM m) => TreeWalker -> m (Maybe Node)
+parentNode self = liftDOM ((self ^. js "parentNode") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.firstChild Mozilla TreeWalker.firstChild documentation> 
+firstChild :: (MonadDOM m) => TreeWalker -> m (Maybe Node)
+firstChild self = liftDOM ((self ^. js "firstChild") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.lastChild Mozilla TreeWalker.lastChild documentation> 
+lastChild :: (MonadDOM m) => TreeWalker -> m (Maybe Node)
+lastChild self = liftDOM ((self ^. js "lastChild") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.previousSibling Mozilla TreeWalker.previousSibling documentation> 
+previousSibling :: (MonadDOM m) => TreeWalker -> m (Maybe Node)
+previousSibling self
+  = liftDOM ((self ^. js "previousSibling") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.nextSibling Mozilla TreeWalker.nextSibling documentation> 
+nextSibling :: (MonadDOM m) => TreeWalker -> m (Maybe Node)
+nextSibling self
+  = liftDOM ((self ^. js "nextSibling") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.previousNode Mozilla TreeWalker.previousNode documentation> 
+previousNode :: (MonadDOM m) => TreeWalker -> m (Maybe Node)
+previousNode self
+  = liftDOM ((self ^. js "previousNode") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.nextNode Mozilla TreeWalker.nextNode documentation> 
+nextNode :: (MonadDOM m) => TreeWalker -> m (Maybe Node)
+nextNode self = liftDOM ((self ^. js "nextNode") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.root Mozilla TreeWalker.root documentation> 
+getRoot :: (MonadDOM m) => TreeWalker -> m (Maybe Node)
+getRoot self = liftDOM ((self ^. js "root") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.whatToShow Mozilla TreeWalker.whatToShow documentation> 
+getWhatToShow :: (MonadDOM m) => TreeWalker -> m Word
+getWhatToShow self
+  = liftDOM (round <$> ((self ^. js "whatToShow") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.filter Mozilla TreeWalker.filter documentation> 
+getFilter :: (MonadDOM m) => TreeWalker -> m (Maybe NodeFilter)
+getFilter self = liftDOM ((self ^. js "filter") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.expandEntityReferences Mozilla TreeWalker.expandEntityReferences documentation> 
+getExpandEntityReferences :: (MonadDOM m) => TreeWalker -> m Bool
+getExpandEntityReferences self
+  = liftDOM ((self ^. js "expandEntityReferences") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.currentNode Mozilla TreeWalker.currentNode documentation> 
+setCurrentNode ::
+               (MonadDOM m, IsNode val) => TreeWalker -> Maybe val -> m ()
+setCurrentNode self val
+  = liftDOM (self ^. jss "currentNode" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.currentNode Mozilla TreeWalker.currentNode documentation> 
+getCurrentNode :: (MonadDOM m) => TreeWalker -> m (Maybe Node)
+getCurrentNode self
+  = liftDOM ((self ^. js "currentNode") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/TypeConversions.hs b/src/Language/Javascript/JSaddle/DOM/Generated/TypeConversions.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/TypeConversions.hs
@@ -0,0 +1,224 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.TypeConversions
+       (setTestLong, getTestLong, setTestEnforceRangeLong,
+        getTestEnforceRangeLong, setTestUnsignedLong, getTestUnsignedLong,
+        setTestEnforceRangeUnsignedLong, getTestEnforceRangeUnsignedLong,
+        setTestLongLong, getTestLongLong, setTestEnforceRangeLongLong,
+        getTestEnforceRangeLongLong, setTestUnsignedLongLong,
+        getTestUnsignedLongLong, setTestEnforceRangeUnsignedLongLong,
+        getTestEnforceRangeUnsignedLongLong, setTestByte, getTestByte,
+        setTestEnforceRangeByte, getTestEnforceRangeByte, setTestOctet,
+        getTestOctet, setTestEnforceRangeOctet, getTestEnforceRangeOctet,
+        setTestShort, getTestShort, setTestEnforceRangeShort,
+        getTestEnforceRangeShort, setTestUnsignedShort,
+        getTestUnsignedShort, setTestEnforceRangeUnsignedShort,
+        getTestEnforceRangeUnsignedShort, TypeConversions,
+        castToTypeConversions, gTypeTypeConversions)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TypeConversions.testLong Mozilla TypeConversions.testLong documentation> 
+setTestLong :: (MonadDOM m) => TypeConversions -> Int -> m ()
+setTestLong self val
+  = liftDOM (self ^. jss "testLong" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TypeConversions.testLong Mozilla TypeConversions.testLong documentation> 
+getTestLong :: (MonadDOM m) => TypeConversions -> m Int
+getTestLong self
+  = liftDOM (round <$> ((self ^. js "testLong") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TypeConversions.testEnforceRangeLong Mozilla TypeConversions.testEnforceRangeLong documentation> 
+setTestEnforceRangeLong ::
+                        (MonadDOM m) => TypeConversions -> Int -> m ()
+setTestEnforceRangeLong self val
+  = liftDOM (self ^. jss "testEnforceRangeLong" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TypeConversions.testEnforceRangeLong Mozilla TypeConversions.testEnforceRangeLong documentation> 
+getTestEnforceRangeLong :: (MonadDOM m) => TypeConversions -> m Int
+getTestEnforceRangeLong self
+  = liftDOM
+      (round <$> ((self ^. js "testEnforceRangeLong") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TypeConversions.testUnsignedLong Mozilla TypeConversions.testUnsignedLong documentation> 
+setTestUnsignedLong ::
+                    (MonadDOM m) => TypeConversions -> Word -> m ()
+setTestUnsignedLong self val
+  = liftDOM (self ^. jss "testUnsignedLong" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TypeConversions.testUnsignedLong Mozilla TypeConversions.testUnsignedLong documentation> 
+getTestUnsignedLong :: (MonadDOM m) => TypeConversions -> m Word
+getTestUnsignedLong self
+  = liftDOM
+      (round <$> ((self ^. js "testUnsignedLong") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TypeConversions.testEnforceRangeUnsignedLong Mozilla TypeConversions.testEnforceRangeUnsignedLong documentation> 
+setTestEnforceRangeUnsignedLong ::
+                                (MonadDOM m) => TypeConversions -> Word -> m ()
+setTestEnforceRangeUnsignedLong self val
+  = liftDOM
+      (self ^. jss "testEnforceRangeUnsignedLong" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TypeConversions.testEnforceRangeUnsignedLong Mozilla TypeConversions.testEnforceRangeUnsignedLong documentation> 
+getTestEnforceRangeUnsignedLong ::
+                                (MonadDOM m) => TypeConversions -> m Word
+getTestEnforceRangeUnsignedLong self
+  = liftDOM
+      (round <$>
+         ((self ^. js "testEnforceRangeUnsignedLong") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TypeConversions.testLongLong Mozilla TypeConversions.testLongLong documentation> 
+setTestLongLong :: (MonadDOM m) => TypeConversions -> Int64 -> m ()
+setTestLongLong self val
+  = liftDOM (self ^. jss "testLongLong" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TypeConversions.testLongLong Mozilla TypeConversions.testLongLong documentation> 
+getTestLongLong :: (MonadDOM m) => TypeConversions -> m Int64
+getTestLongLong self
+  = liftDOM (round <$> ((self ^. js "testLongLong") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TypeConversions.testEnforceRangeLongLong Mozilla TypeConversions.testEnforceRangeLongLong documentation> 
+setTestEnforceRangeLongLong ::
+                            (MonadDOM m) => TypeConversions -> Int64 -> m ()
+setTestEnforceRangeLongLong self val
+  = liftDOM (self ^. jss "testEnforceRangeLongLong" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TypeConversions.testEnforceRangeLongLong Mozilla TypeConversions.testEnforceRangeLongLong documentation> 
+getTestEnforceRangeLongLong ::
+                            (MonadDOM m) => TypeConversions -> m Int64
+getTestEnforceRangeLongLong self
+  = liftDOM
+      (round <$>
+         ((self ^. js "testEnforceRangeLongLong") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TypeConversions.testUnsignedLongLong Mozilla TypeConversions.testUnsignedLongLong documentation> 
+setTestUnsignedLongLong ::
+                        (MonadDOM m) => TypeConversions -> Word64 -> m ()
+setTestUnsignedLongLong self val
+  = liftDOM (self ^. jss "testUnsignedLongLong" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TypeConversions.testUnsignedLongLong Mozilla TypeConversions.testUnsignedLongLong documentation> 
+getTestUnsignedLongLong ::
+                        (MonadDOM m) => TypeConversions -> m Word64
+getTestUnsignedLongLong self
+  = liftDOM
+      (round <$> ((self ^. js "testUnsignedLongLong") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TypeConversions.testEnforceRangeUnsignedLongLong Mozilla TypeConversions.testEnforceRangeUnsignedLongLong documentation> 
+setTestEnforceRangeUnsignedLongLong ::
+                                    (MonadDOM m) => TypeConversions -> Word64 -> m ()
+setTestEnforceRangeUnsignedLongLong self val
+  = liftDOM
+      (self ^. jss "testEnforceRangeUnsignedLongLong" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TypeConversions.testEnforceRangeUnsignedLongLong Mozilla TypeConversions.testEnforceRangeUnsignedLongLong documentation> 
+getTestEnforceRangeUnsignedLongLong ::
+                                    (MonadDOM m) => TypeConversions -> m Word64
+getTestEnforceRangeUnsignedLongLong self
+  = liftDOM
+      (round <$>
+         ((self ^. js "testEnforceRangeUnsignedLongLong") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TypeConversions.testByte Mozilla TypeConversions.testByte documentation> 
+setTestByte :: (MonadDOM m) => TypeConversions -> Int -> m ()
+setTestByte self val
+  = liftDOM (self ^. jss "testByte" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TypeConversions.testByte Mozilla TypeConversions.testByte documentation> 
+getTestByte :: (MonadDOM m) => TypeConversions -> m Int
+getTestByte self
+  = liftDOM (round <$> ((self ^. js "testByte") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TypeConversions.testEnforceRangeByte Mozilla TypeConversions.testEnforceRangeByte documentation> 
+setTestEnforceRangeByte ::
+                        (MonadDOM m) => TypeConversions -> Int -> m ()
+setTestEnforceRangeByte self val
+  = liftDOM (self ^. jss "testEnforceRangeByte" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TypeConversions.testEnforceRangeByte Mozilla TypeConversions.testEnforceRangeByte documentation> 
+getTestEnforceRangeByte :: (MonadDOM m) => TypeConversions -> m Int
+getTestEnforceRangeByte self
+  = liftDOM
+      (round <$> ((self ^. js "testEnforceRangeByte") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TypeConversions.testOctet Mozilla TypeConversions.testOctet documentation> 
+setTestOctet :: (MonadDOM m) => TypeConversions -> Word -> m ()
+setTestOctet self val
+  = liftDOM (self ^. jss "testOctet" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TypeConversions.testOctet Mozilla TypeConversions.testOctet documentation> 
+getTestOctet :: (MonadDOM m) => TypeConversions -> m Word
+getTestOctet self
+  = liftDOM (round <$> ((self ^. js "testOctet") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TypeConversions.testEnforceRangeOctet Mozilla TypeConversions.testEnforceRangeOctet documentation> 
+setTestEnforceRangeOctet ::
+                         (MonadDOM m) => TypeConversions -> Word -> m ()
+setTestEnforceRangeOctet self val
+  = liftDOM (self ^. jss "testEnforceRangeOctet" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TypeConversions.testEnforceRangeOctet Mozilla TypeConversions.testEnforceRangeOctet documentation> 
+getTestEnforceRangeOctet ::
+                         (MonadDOM m) => TypeConversions -> m Word
+getTestEnforceRangeOctet self
+  = liftDOM
+      (round <$> ((self ^. js "testEnforceRangeOctet") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TypeConversions.testShort Mozilla TypeConversions.testShort documentation> 
+setTestShort :: (MonadDOM m) => TypeConversions -> Int -> m ()
+setTestShort self val
+  = liftDOM (self ^. jss "testShort" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TypeConversions.testShort Mozilla TypeConversions.testShort documentation> 
+getTestShort :: (MonadDOM m) => TypeConversions -> m Int
+getTestShort self
+  = liftDOM (round <$> ((self ^. js "testShort") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TypeConversions.testEnforceRangeShort Mozilla TypeConversions.testEnforceRangeShort documentation> 
+setTestEnforceRangeShort ::
+                         (MonadDOM m) => TypeConversions -> Int -> m ()
+setTestEnforceRangeShort self val
+  = liftDOM (self ^. jss "testEnforceRangeShort" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TypeConversions.testEnforceRangeShort Mozilla TypeConversions.testEnforceRangeShort documentation> 
+getTestEnforceRangeShort ::
+                         (MonadDOM m) => TypeConversions -> m Int
+getTestEnforceRangeShort self
+  = liftDOM
+      (round <$> ((self ^. js "testEnforceRangeShort") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TypeConversions.testUnsignedShort Mozilla TypeConversions.testUnsignedShort documentation> 
+setTestUnsignedShort ::
+                     (MonadDOM m) => TypeConversions -> Word -> m ()
+setTestUnsignedShort self val
+  = liftDOM (self ^. jss "testUnsignedShort" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TypeConversions.testUnsignedShort Mozilla TypeConversions.testUnsignedShort documentation> 
+getTestUnsignedShort :: (MonadDOM m) => TypeConversions -> m Word
+getTestUnsignedShort self
+  = liftDOM
+      (round <$> ((self ^. js "testUnsignedShort") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TypeConversions.testEnforceRangeUnsignedShort Mozilla TypeConversions.testEnforceRangeUnsignedShort documentation> 
+setTestEnforceRangeUnsignedShort ::
+                                 (MonadDOM m) => TypeConversions -> Word -> m ()
+setTestEnforceRangeUnsignedShort self val
+  = liftDOM
+      (self ^. jss "testEnforceRangeUnsignedShort" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TypeConversions.testEnforceRangeUnsignedShort Mozilla TypeConversions.testEnforceRangeUnsignedShort documentation> 
+getTestEnforceRangeUnsignedShort ::
+                                 (MonadDOM m) => TypeConversions -> m Word
+getTestEnforceRangeUnsignedShort self
+  = liftDOM
+      (round <$>
+         ((self ^. js "testEnforceRangeUnsignedShort") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/UIEvent.hs b/src/Language/Javascript/JSaddle/DOM/Generated/UIEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/UIEvent.hs
@@ -0,0 +1,80 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.UIEvent
+       (initUIEvent, getView, getDetail, getKeyCode, getCharCode,
+        getLayerX, getLayerY, getPageX, getPageY, getWhich, UIEvent,
+        castToUIEvent, gTypeUIEvent, IsUIEvent, toUIEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/UIEvent.initUIEvent Mozilla UIEvent.initUIEvent documentation> 
+initUIEvent ::
+            (MonadDOM m, IsUIEvent self, ToJSString type') =>
+              self -> type' -> Bool -> Bool -> Maybe Window -> Int -> m ()
+initUIEvent self type' canBubble cancelable view detail
+  = liftDOM
+      (void
+         ((toUIEvent self) ^. jsf "initUIEvent"
+            [toJSVal type', toJSVal canBubble, toJSVal cancelable,
+             toJSVal view, toJSVal detail]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/UIEvent.view Mozilla UIEvent.view documentation> 
+getView :: (MonadDOM m, IsUIEvent self) => self -> m (Maybe Window)
+getView self
+  = liftDOM (((toUIEvent self) ^. js "view") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/UIEvent.detail Mozilla UIEvent.detail documentation> 
+getDetail :: (MonadDOM m, IsUIEvent self) => self -> m Int
+getDetail self
+  = liftDOM
+      (round <$> (((toUIEvent self) ^. js "detail") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/UIEvent.keyCode Mozilla UIEvent.keyCode documentation> 
+getKeyCode :: (MonadDOM m, IsUIEvent self) => self -> m Int
+getKeyCode self
+  = liftDOM
+      (round <$> (((toUIEvent self) ^. js "keyCode") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/UIEvent.charCode Mozilla UIEvent.charCode documentation> 
+getCharCode :: (MonadDOM m, IsUIEvent self) => self -> m Int
+getCharCode self
+  = liftDOM
+      (round <$> (((toUIEvent self) ^. js "charCode") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/UIEvent.layerX Mozilla UIEvent.layerX documentation> 
+getLayerX :: (MonadDOM m, IsUIEvent self) => self -> m Int
+getLayerX self
+  = liftDOM
+      (round <$> (((toUIEvent self) ^. js "layerX") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/UIEvent.layerY Mozilla UIEvent.layerY documentation> 
+getLayerY :: (MonadDOM m, IsUIEvent self) => self -> m Int
+getLayerY self
+  = liftDOM
+      (round <$> (((toUIEvent self) ^. js "layerY") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/UIEvent.pageX Mozilla UIEvent.pageX documentation> 
+getPageX :: (MonadDOM m, IsUIEvent self) => self -> m Int
+getPageX self
+  = liftDOM
+      (round <$> (((toUIEvent self) ^. js "pageX") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/UIEvent.pageY Mozilla UIEvent.pageY documentation> 
+getPageY :: (MonadDOM m, IsUIEvent self) => self -> m Int
+getPageY self
+  = liftDOM
+      (round <$> (((toUIEvent self) ^. js "pageY") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/UIEvent.which Mozilla UIEvent.which documentation> 
+getWhich :: (MonadDOM m, IsUIEvent self) => self -> m Int
+getWhich self
+  = liftDOM
+      (round <$> (((toUIEvent self) ^. js "which") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/UIRequestEvent.hs b/src/Language/Javascript/JSaddle/DOM/Generated/UIRequestEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/UIRequestEvent.hs
@@ -0,0 +1,21 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.UIRequestEvent
+       (getReceiver, UIRequestEvent, castToUIRequestEvent,
+        gTypeUIRequestEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/UIRequestEvent.receiver Mozilla UIRequestEvent.receiver documentation> 
+getReceiver ::
+            (MonadDOM m) => UIRequestEvent -> m (Maybe EventTarget)
+getReceiver self = liftDOM ((self ^. js "receiver") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/URL.hs b/src/Language/Javascript/JSaddle/DOM/Generated/URL.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/URL.hs
@@ -0,0 +1,67 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.URL
+       (newURL, newURL', newURL'', createObjectURL, revokeObjectURL,
+        createObjectURLSource, createObjectURLStream, URL, castToURL,
+        gTypeURL)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URL Mozilla URL documentation> 
+newURL :: (MonadDOM m, ToJSString url) => url -> m URL
+newURL url = liftDOM (URL <$> new (jsg "URL") [toJSVal url])
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URL Mozilla URL documentation> 
+newURL' ::
+        (MonadDOM m, ToJSString url, ToJSString base) =>
+          url -> base -> m URL
+newURL' url base
+  = liftDOM (URL <$> new (jsg "URL") [toJSVal url, toJSVal base])
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URL Mozilla URL documentation> 
+newURL'' ::
+         (MonadDOM m, ToJSString url) => url -> Maybe URL -> m URL
+newURL'' url base
+  = liftDOM (URL <$> new (jsg "URL") [toJSVal url, toJSVal base])
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.createObjectURL Mozilla URL.createObjectURL documentation> 
+createObjectURL ::
+                (MonadDOM m, IsBlob blob, FromJSString result) =>
+                  URL -> Maybe blob -> m (Maybe result)
+createObjectURL self blob
+  = liftDOM
+      ((self ^. jsf "createObjectURL" [toJSVal blob]) >>=
+         fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.revokeObjectURL Mozilla URL.revokeObjectURL documentation> 
+revokeObjectURL ::
+                (MonadDOM m, ToJSString url) => URL -> url -> m ()
+revokeObjectURL self url
+  = liftDOM (void (self ^. jsf "revokeObjectURL" [toJSVal url]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.createObjectURL Mozilla URL.createObjectURL documentation> 
+createObjectURLSource ::
+                      (MonadDOM m, FromJSString result) =>
+                        URL -> Maybe MediaSource -> m (Maybe result)
+createObjectURLSource self source
+  = liftDOM
+      ((self ^. jsf "createObjectURL" [toJSVal source]) >>=
+         fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.createObjectURL Mozilla URL.createObjectURL documentation> 
+createObjectURLStream ::
+                      (MonadDOM m, FromJSString result) =>
+                        URL -> Maybe MediaStream -> m (Maybe result)
+createObjectURLStream self stream
+  = liftDOM
+      ((self ^. jsf "createObjectURL" [toJSVal stream]) >>=
+         fromMaybeJSString)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/URLUtils.hs b/src/Language/Javascript/JSaddle/DOM/Generated/URLUtils.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/URLUtils.hs
@@ -0,0 +1,141 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.URLUtils
+       (toString, setHref, getHref, getOrigin, setProtocol, getProtocol,
+        setUsername, getUsername, setPassword, getPassword, setHost,
+        getHost, setHostname, getHostname, setPort, getPort, setPathname,
+        getPathname, setSearch, getSearch, setHash, getHash, URLUtils,
+        castToURLUtils, gTypeURLUtils)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URLUtils.toString Mozilla URLUtils.toString documentation> 
+toString ::
+         (MonadDOM m, FromJSString result) => URLUtils -> m result
+toString self
+  = liftDOM ((self ^. js "toString") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URLUtils.href Mozilla URLUtils.href documentation> 
+setHref :: (MonadDOM m, ToJSString val) => URLUtils -> val -> m ()
+setHref self val = liftDOM (self ^. jss "href" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URLUtils.href Mozilla URLUtils.href documentation> 
+getHref ::
+        (MonadDOM m, FromJSString result) => URLUtils -> m result
+getHref self = liftDOM ((self ^. js "href") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URLUtils.origin Mozilla URLUtils.origin documentation> 
+getOrigin ::
+          (MonadDOM m, FromJSString result) => URLUtils -> m result
+getOrigin self
+  = liftDOM ((self ^. js "origin") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URLUtils.protocol Mozilla URLUtils.protocol documentation> 
+setProtocol ::
+            (MonadDOM m, ToJSString val) => URLUtils -> Maybe val -> m ()
+setProtocol self val
+  = liftDOM (self ^. jss "protocol" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URLUtils.protocol Mozilla URLUtils.protocol documentation> 
+getProtocol ::
+            (MonadDOM m, FromJSString result) => URLUtils -> m (Maybe result)
+getProtocol self
+  = liftDOM ((self ^. js "protocol") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URLUtils.username Mozilla URLUtils.username documentation> 
+setUsername ::
+            (MonadDOM m, ToJSString val) => URLUtils -> Maybe val -> m ()
+setUsername self val
+  = liftDOM (self ^. jss "username" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URLUtils.username Mozilla URLUtils.username documentation> 
+getUsername ::
+            (MonadDOM m, FromJSString result) => URLUtils -> m (Maybe result)
+getUsername self
+  = liftDOM ((self ^. js "username") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URLUtils.password Mozilla URLUtils.password documentation> 
+setPassword ::
+            (MonadDOM m, ToJSString val) => URLUtils -> Maybe val -> m ()
+setPassword self val
+  = liftDOM (self ^. jss "password" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URLUtils.password Mozilla URLUtils.password documentation> 
+getPassword ::
+            (MonadDOM m, FromJSString result) => URLUtils -> m (Maybe result)
+getPassword self
+  = liftDOM ((self ^. js "password") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URLUtils.host Mozilla URLUtils.host documentation> 
+setHost ::
+        (MonadDOM m, ToJSString val) => URLUtils -> Maybe val -> m ()
+setHost self val = liftDOM (self ^. jss "host" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URLUtils.host Mozilla URLUtils.host documentation> 
+getHost ::
+        (MonadDOM m, FromJSString result) => URLUtils -> m (Maybe result)
+getHost self = liftDOM ((self ^. js "host") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URLUtils.hostname Mozilla URLUtils.hostname documentation> 
+setHostname ::
+            (MonadDOM m, ToJSString val) => URLUtils -> Maybe val -> m ()
+setHostname self val
+  = liftDOM (self ^. jss "hostname" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URLUtils.hostname Mozilla URLUtils.hostname documentation> 
+getHostname ::
+            (MonadDOM m, FromJSString result) => URLUtils -> m (Maybe result)
+getHostname self
+  = liftDOM ((self ^. js "hostname") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URLUtils.port Mozilla URLUtils.port documentation> 
+setPort ::
+        (MonadDOM m, ToJSString val) => URLUtils -> Maybe val -> m ()
+setPort self val = liftDOM (self ^. jss "port" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URLUtils.port Mozilla URLUtils.port documentation> 
+getPort ::
+        (MonadDOM m, FromJSString result) => URLUtils -> m (Maybe result)
+getPort self = liftDOM ((self ^. js "port") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URLUtils.pathname Mozilla URLUtils.pathname documentation> 
+setPathname ::
+            (MonadDOM m, ToJSString val) => URLUtils -> Maybe val -> m ()
+setPathname self val
+  = liftDOM (self ^. jss "pathname" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URLUtils.pathname Mozilla URLUtils.pathname documentation> 
+getPathname ::
+            (MonadDOM m, FromJSString result) => URLUtils -> m (Maybe result)
+getPathname self
+  = liftDOM ((self ^. js "pathname") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URLUtils.search Mozilla URLUtils.search documentation> 
+setSearch ::
+          (MonadDOM m, ToJSString val) => URLUtils -> Maybe val -> m ()
+setSearch self val = liftDOM (self ^. jss "search" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URLUtils.search Mozilla URLUtils.search documentation> 
+getSearch ::
+          (MonadDOM m, FromJSString result) => URLUtils -> m (Maybe result)
+getSearch self
+  = liftDOM ((self ^. js "search") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URLUtils.hash Mozilla URLUtils.hash documentation> 
+setHash ::
+        (MonadDOM m, ToJSString val) => URLUtils -> Maybe val -> m ()
+setHash self val = liftDOM (self ^. jss "hash" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URLUtils.hash Mozilla URLUtils.hash documentation> 
+getHash ::
+        (MonadDOM m, FromJSString result) => URLUtils -> m (Maybe result)
+getHash self = liftDOM ((self ^. js "hash") >>= fromMaybeJSString)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/UserMessageHandler.hs b/src/Language/Javascript/JSaddle/DOM/Generated/UserMessageHandler.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/UserMessageHandler.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.UserMessageHandler
+       (postMessage, UserMessageHandler, castToUserMessageHandler,
+        gTypeUserMessageHandler)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/UserMessageHandler.postMessage Mozilla UserMessageHandler.postMessage documentation> 
+postMessage ::
+            (MonadDOM m, IsSerializedScriptValue message) =>
+              UserMessageHandler -> Maybe message -> m ()
+postMessage self message
+  = liftDOM (void (self ^. jsf "postMessage" [toJSVal message]))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/VTTCue.hs b/src/Language/Javascript/JSaddle/DOM/Generated/VTTCue.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/VTTCue.hs
@@ -0,0 +1,111 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.VTTCue
+       (newVTTCue, getCueAsHTML, setVertical, getVertical, setSnapToLines,
+        getSnapToLines, setLine, getLine, setPosition, getPosition,
+        setSize, getSize, setAlign, getAlign, setText, getText,
+        setRegionId, getRegionId, VTTCue, castToVTTCue, gTypeVTTCue)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue Mozilla VTTCue documentation> 
+newVTTCue ::
+          (MonadDOM m, ToJSString text) =>
+            Double -> Double -> text -> m VTTCue
+newVTTCue startTime endTime text
+  = liftDOM
+      (VTTCue <$>
+         new (jsg "VTTCue")
+           [toJSVal startTime, toJSVal endTime, toJSVal text])
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.getCueAsHTML Mozilla VTTCue.getCueAsHTML documentation> 
+getCueAsHTML ::
+             (MonadDOM m) => VTTCue -> m (Maybe DocumentFragment)
+getCueAsHTML self
+  = liftDOM ((self ^. js "getCueAsHTML") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.vertical Mozilla VTTCue.vertical documentation> 
+setVertical ::
+            (MonadDOM m, ToJSString val) => VTTCue -> val -> m ()
+setVertical self val
+  = liftDOM (self ^. jss "vertical" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.vertical Mozilla VTTCue.vertical documentation> 
+getVertical ::
+            (MonadDOM m, FromJSString result) => VTTCue -> m result
+getVertical self
+  = liftDOM ((self ^. js "vertical") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.snapToLines Mozilla VTTCue.snapToLines documentation> 
+setSnapToLines :: (MonadDOM m) => VTTCue -> Bool -> m ()
+setSnapToLines self val
+  = liftDOM (self ^. jss "snapToLines" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.snapToLines Mozilla VTTCue.snapToLines documentation> 
+getSnapToLines :: (MonadDOM m) => VTTCue -> m Bool
+getSnapToLines self
+  = liftDOM ((self ^. js "snapToLines") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.line Mozilla VTTCue.line documentation> 
+setLine :: (MonadDOM m) => VTTCue -> Double -> m ()
+setLine self val = liftDOM (self ^. jss "line" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.line Mozilla VTTCue.line documentation> 
+getLine :: (MonadDOM m) => VTTCue -> m Double
+getLine self = liftDOM ((self ^. js "line") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.position Mozilla VTTCue.position documentation> 
+setPosition :: (MonadDOM m) => VTTCue -> Double -> m ()
+setPosition self val
+  = liftDOM (self ^. jss "position" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.position Mozilla VTTCue.position documentation> 
+getPosition :: (MonadDOM m) => VTTCue -> m Double
+getPosition self
+  = liftDOM ((self ^. js "position") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.size Mozilla VTTCue.size documentation> 
+setSize :: (MonadDOM m) => VTTCue -> Double -> m ()
+setSize self val = liftDOM (self ^. jss "size" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.size Mozilla VTTCue.size documentation> 
+getSize :: (MonadDOM m) => VTTCue -> m Double
+getSize self = liftDOM ((self ^. js "size") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.align Mozilla VTTCue.align documentation> 
+setAlign :: (MonadDOM m, ToJSString val) => VTTCue -> val -> m ()
+setAlign self val = liftDOM (self ^. jss "align" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.align Mozilla VTTCue.align documentation> 
+getAlign :: (MonadDOM m, FromJSString result) => VTTCue -> m result
+getAlign self
+  = liftDOM ((self ^. js "align") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.text Mozilla VTTCue.text documentation> 
+setText :: (MonadDOM m, ToJSString val) => VTTCue -> val -> m ()
+setText self val = liftDOM (self ^. jss "text" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.text Mozilla VTTCue.text documentation> 
+getText :: (MonadDOM m, FromJSString result) => VTTCue -> m result
+getText self = liftDOM ((self ^. js "text") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.regionId Mozilla VTTCue.regionId documentation> 
+setRegionId ::
+            (MonadDOM m, ToJSString val) => VTTCue -> val -> m ()
+setRegionId self val
+  = liftDOM (self ^. jss "regionId" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.regionId Mozilla VTTCue.regionId documentation> 
+getRegionId ::
+            (MonadDOM m, FromJSString result) => VTTCue -> m result
+getRegionId self
+  = liftDOM ((self ^. js "regionId") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/VTTRegion.hs b/src/Language/Javascript/JSaddle/DOM/Generated/VTTRegion.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/VTTRegion.hs
@@ -0,0 +1,103 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.VTTRegion
+       (newVTTRegion, getTrack, setId, getId, setWidth, getWidth,
+        setHeight, getHeight, setRegionAnchorX, getRegionAnchorX,
+        setRegionAnchorY, getRegionAnchorY, setViewportAnchorX,
+        getViewportAnchorX, setViewportAnchorY, getViewportAnchorY,
+        setScroll, getScroll, VTTRegion, castToVTTRegion, gTypeVTTRegion)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion Mozilla VTTRegion documentation> 
+newVTTRegion :: (MonadDOM m) => m VTTRegion
+newVTTRegion = liftDOM (VTTRegion <$> new (jsg "VTTRegion") ())
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.track Mozilla VTTRegion.track documentation> 
+getTrack :: (MonadDOM m) => VTTRegion -> m (Maybe TextTrack)
+getTrack self = liftDOM ((self ^. js "track") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.id Mozilla VTTRegion.id documentation> 
+setId :: (MonadDOM m, ToJSString val) => VTTRegion -> val -> m ()
+setId self val = liftDOM (self ^. jss "id" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.id Mozilla VTTRegion.id documentation> 
+getId :: (MonadDOM m, FromJSString result) => VTTRegion -> m result
+getId self = liftDOM ((self ^. js "id") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.width Mozilla VTTRegion.width documentation> 
+setWidth :: (MonadDOM m) => VTTRegion -> Double -> m ()
+setWidth self val = liftDOM (self ^. jss "width" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.width Mozilla VTTRegion.width documentation> 
+getWidth :: (MonadDOM m) => VTTRegion -> m Double
+getWidth self = liftDOM ((self ^. js "width") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.height Mozilla VTTRegion.height documentation> 
+setHeight :: (MonadDOM m) => VTTRegion -> Int -> m ()
+setHeight self val = liftDOM (self ^. jss "height" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.height Mozilla VTTRegion.height documentation> 
+getHeight :: (MonadDOM m) => VTTRegion -> m Int
+getHeight self
+  = liftDOM (round <$> ((self ^. js "height") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.regionAnchorX Mozilla VTTRegion.regionAnchorX documentation> 
+setRegionAnchorX :: (MonadDOM m) => VTTRegion -> Double -> m ()
+setRegionAnchorX self val
+  = liftDOM (self ^. jss "regionAnchorX" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.regionAnchorX Mozilla VTTRegion.regionAnchorX documentation> 
+getRegionAnchorX :: (MonadDOM m) => VTTRegion -> m Double
+getRegionAnchorX self
+  = liftDOM ((self ^. js "regionAnchorX") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.regionAnchorY Mozilla VTTRegion.regionAnchorY documentation> 
+setRegionAnchorY :: (MonadDOM m) => VTTRegion -> Double -> m ()
+setRegionAnchorY self val
+  = liftDOM (self ^. jss "regionAnchorY" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.regionAnchorY Mozilla VTTRegion.regionAnchorY documentation> 
+getRegionAnchorY :: (MonadDOM m) => VTTRegion -> m Double
+getRegionAnchorY self
+  = liftDOM ((self ^. js "regionAnchorY") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.viewportAnchorX Mozilla VTTRegion.viewportAnchorX documentation> 
+setViewportAnchorX :: (MonadDOM m) => VTTRegion -> Double -> m ()
+setViewportAnchorX self val
+  = liftDOM (self ^. jss "viewportAnchorX" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.viewportAnchorX Mozilla VTTRegion.viewportAnchorX documentation> 
+getViewportAnchorX :: (MonadDOM m) => VTTRegion -> m Double
+getViewportAnchorX self
+  = liftDOM ((self ^. js "viewportAnchorX") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.viewportAnchorY Mozilla VTTRegion.viewportAnchorY documentation> 
+setViewportAnchorY :: (MonadDOM m) => VTTRegion -> Double -> m ()
+setViewportAnchorY self val
+  = liftDOM (self ^. jss "viewportAnchorY" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.viewportAnchorY Mozilla VTTRegion.viewportAnchorY documentation> 
+getViewportAnchorY :: (MonadDOM m) => VTTRegion -> m Double
+getViewportAnchorY self
+  = liftDOM ((self ^. js "viewportAnchorY") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.scroll Mozilla VTTRegion.scroll documentation> 
+setScroll ::
+          (MonadDOM m, ToJSString val) => VTTRegion -> val -> m ()
+setScroll self val = liftDOM (self ^. jss "scroll" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.scroll Mozilla VTTRegion.scroll documentation> 
+getScroll ::
+          (MonadDOM m, FromJSString result) => VTTRegion -> m result
+getScroll self
+  = liftDOM ((self ^. js "scroll") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/VTTRegionList.hs b/src/Language/Javascript/JSaddle/DOM/Generated/VTTRegionList.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/VTTRegionList.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.VTTRegionList
+       (item, getRegionById, getLength, VTTRegionList,
+        castToVTTRegionList, gTypeVTTRegionList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegionList.item Mozilla VTTRegionList.item documentation> 
+item ::
+     (MonadDOM m) => VTTRegionList -> Word -> m (Maybe VTTRegion)
+item self index
+  = liftDOM ((self ^. jsf "item" [toJSVal index]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegionList.getRegionById Mozilla VTTRegionList.getRegionById documentation> 
+getRegionById ::
+              (MonadDOM m, ToJSString id) =>
+                VTTRegionList -> id -> m (Maybe VTTRegion)
+getRegionById self id
+  = liftDOM
+      ((self ^. jsf "getRegionById" [toJSVal id]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegionList.length Mozilla VTTRegionList.length documentation> 
+getLength :: (MonadDOM m) => VTTRegionList -> m Word
+getLength self
+  = liftDOM (round <$> ((self ^. js "length") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/ValidityState.hs b/src/Language/Javascript/JSaddle/DOM/Generated/ValidityState.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/ValidityState.hs
@@ -0,0 +1,65 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.ValidityState
+       (getValueMissing, getTypeMismatch, getPatternMismatch, getTooLong,
+        getRangeUnderflow, getRangeOverflow, getStepMismatch, getBadInput,
+        getCustomError, getValid, ValidityState, castToValidityState,
+        gTypeValidityState)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ValidityState.valueMissing Mozilla ValidityState.valueMissing documentation> 
+getValueMissing :: (MonadDOM m) => ValidityState -> m Bool
+getValueMissing self
+  = liftDOM ((self ^. js "valueMissing") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ValidityState.typeMismatch Mozilla ValidityState.typeMismatch documentation> 
+getTypeMismatch :: (MonadDOM m) => ValidityState -> m Bool
+getTypeMismatch self
+  = liftDOM ((self ^. js "typeMismatch") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ValidityState.patternMismatch Mozilla ValidityState.patternMismatch documentation> 
+getPatternMismatch :: (MonadDOM m) => ValidityState -> m Bool
+getPatternMismatch self
+  = liftDOM ((self ^. js "patternMismatch") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ValidityState.tooLong Mozilla ValidityState.tooLong documentation> 
+getTooLong :: (MonadDOM m) => ValidityState -> m Bool
+getTooLong self = liftDOM ((self ^. js "tooLong") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ValidityState.rangeUnderflow Mozilla ValidityState.rangeUnderflow documentation> 
+getRangeUnderflow :: (MonadDOM m) => ValidityState -> m Bool
+getRangeUnderflow self
+  = liftDOM ((self ^. js "rangeUnderflow") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ValidityState.rangeOverflow Mozilla ValidityState.rangeOverflow documentation> 
+getRangeOverflow :: (MonadDOM m) => ValidityState -> m Bool
+getRangeOverflow self
+  = liftDOM ((self ^. js "rangeOverflow") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ValidityState.stepMismatch Mozilla ValidityState.stepMismatch documentation> 
+getStepMismatch :: (MonadDOM m) => ValidityState -> m Bool
+getStepMismatch self
+  = liftDOM ((self ^. js "stepMismatch") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ValidityState.badInput Mozilla ValidityState.badInput documentation> 
+getBadInput :: (MonadDOM m) => ValidityState -> m Bool
+getBadInput self = liftDOM ((self ^. js "badInput") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ValidityState.customError Mozilla ValidityState.customError documentation> 
+getCustomError :: (MonadDOM m) => ValidityState -> m Bool
+getCustomError self
+  = liftDOM ((self ^. js "customError") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ValidityState.valid Mozilla ValidityState.valid documentation> 
+getValid :: (MonadDOM m) => ValidityState -> m Bool
+getValid self = liftDOM ((self ^. js "valid") >>= valToBool)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/VideoPlaybackQuality.hs b/src/Language/Javascript/JSaddle/DOM/Generated/VideoPlaybackQuality.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/VideoPlaybackQuality.hs
@@ -0,0 +1,49 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.VideoPlaybackQuality
+       (getCreationTime, getTotalVideoFrames, getDroppedVideoFrames,
+        getCorruptedVideoFrames, getTotalFrameDelay, VideoPlaybackQuality,
+        castToVideoPlaybackQuality, gTypeVideoPlaybackQuality)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoPlaybackQuality.creationTime Mozilla VideoPlaybackQuality.creationTime documentation> 
+getCreationTime :: (MonadDOM m) => VideoPlaybackQuality -> m Double
+getCreationTime self
+  = liftDOM ((self ^. js "creationTime") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoPlaybackQuality.totalVideoFrames Mozilla VideoPlaybackQuality.totalVideoFrames documentation> 
+getTotalVideoFrames ::
+                    (MonadDOM m) => VideoPlaybackQuality -> m Word
+getTotalVideoFrames self
+  = liftDOM
+      (round <$> ((self ^. js "totalVideoFrames") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoPlaybackQuality.droppedVideoFrames Mozilla VideoPlaybackQuality.droppedVideoFrames documentation> 
+getDroppedVideoFrames ::
+                      (MonadDOM m) => VideoPlaybackQuality -> m Word
+getDroppedVideoFrames self
+  = liftDOM
+      (round <$> ((self ^. js "droppedVideoFrames") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoPlaybackQuality.corruptedVideoFrames Mozilla VideoPlaybackQuality.corruptedVideoFrames documentation> 
+getCorruptedVideoFrames ::
+                        (MonadDOM m) => VideoPlaybackQuality -> m Word
+getCorruptedVideoFrames self
+  = liftDOM
+      (round <$> ((self ^. js "corruptedVideoFrames") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoPlaybackQuality.totalFrameDelay Mozilla VideoPlaybackQuality.totalFrameDelay documentation> 
+getTotalFrameDelay ::
+                   (MonadDOM m) => VideoPlaybackQuality -> m Double
+getTotalFrameDelay self
+  = liftDOM ((self ^. js "totalFrameDelay") >>= valToNumber)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/VideoStreamTrack.hs b/src/Language/Javascript/JSaddle/DOM/Generated/VideoStreamTrack.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/VideoStreamTrack.hs
@@ -0,0 +1,25 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.VideoStreamTrack
+       (newVideoStreamTrack, VideoStreamTrack, castToVideoStreamTrack,
+        gTypeVideoStreamTrack)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoStreamTrack Mozilla VideoStreamTrack documentation> 
+newVideoStreamTrack ::
+                    (MonadDOM m, IsDictionary videoConstraints) =>
+                      Maybe videoConstraints -> m VideoStreamTrack
+newVideoStreamTrack videoConstraints
+  = liftDOM
+      (VideoStreamTrack <$>
+         new (jsg "VideoStreamTrack") [toJSVal videoConstraints])
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/VideoTrack.hs b/src/Language/Javascript/JSaddle/DOM/Generated/VideoTrack.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/VideoTrack.hs
@@ -0,0 +1,65 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.VideoTrack
+       (getId, setKind, getKind, getLabel, setLanguage, getLanguage,
+        setSelected, getSelected, getSourceBuffer, VideoTrack,
+        castToVideoTrack, gTypeVideoTrack)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrack.id Mozilla VideoTrack.id documentation> 
+getId ::
+      (MonadDOM m, FromJSString result) => VideoTrack -> m result
+getId self = liftDOM ((self ^. js "id") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrack.kind Mozilla VideoTrack.kind documentation> 
+setKind ::
+        (MonadDOM m, ToJSString val) => VideoTrack -> val -> m ()
+setKind self val = liftDOM (self ^. jss "kind" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrack.kind Mozilla VideoTrack.kind documentation> 
+getKind ::
+        (MonadDOM m, FromJSString result) => VideoTrack -> m result
+getKind self = liftDOM ((self ^. js "kind") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrack.label Mozilla VideoTrack.label documentation> 
+getLabel ::
+         (MonadDOM m, FromJSString result) => VideoTrack -> m result
+getLabel self
+  = liftDOM ((self ^. js "label") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrack.language Mozilla VideoTrack.language documentation> 
+setLanguage ::
+            (MonadDOM m, ToJSString val) => VideoTrack -> val -> m ()
+setLanguage self val
+  = liftDOM (self ^. jss "language" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrack.language Mozilla VideoTrack.language documentation> 
+getLanguage ::
+            (MonadDOM m, FromJSString result) => VideoTrack -> m result
+getLanguage self
+  = liftDOM ((self ^. js "language") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrack.selected Mozilla VideoTrack.selected documentation> 
+setSelected :: (MonadDOM m) => VideoTrack -> Bool -> m ()
+setSelected self val
+  = liftDOM (self ^. jss "selected" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrack.selected Mozilla VideoTrack.selected documentation> 
+getSelected :: (MonadDOM m) => VideoTrack -> m Bool
+getSelected self = liftDOM ((self ^. js "selected") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrack.sourceBuffer Mozilla VideoTrack.sourceBuffer documentation> 
+getSourceBuffer ::
+                (MonadDOM m) => VideoTrack -> m (Maybe SourceBuffer)
+getSourceBuffer self
+  = liftDOM ((self ^. js "sourceBuffer") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/VideoTrackList.hs b/src/Language/Javascript/JSaddle/DOM/Generated/VideoTrackList.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/VideoTrackList.hs
@@ -0,0 +1,53 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.VideoTrackList
+       (item, getTrackById, getLength, getSelectedIndex, change, addTrack,
+        removeTrack, VideoTrackList, castToVideoTrackList,
+        gTypeVideoTrackList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrackList.item Mozilla VideoTrackList.item documentation> 
+item ::
+     (MonadDOM m) => VideoTrackList -> Word -> m (Maybe VideoTrack)
+item self index
+  = liftDOM ((self ^. jsf "item" [toJSVal index]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrackList.getTrackById Mozilla VideoTrackList.getTrackById documentation> 
+getTrackById ::
+             (MonadDOM m, ToJSString id) =>
+               VideoTrackList -> id -> m (Maybe VideoTrack)
+getTrackById self id
+  = liftDOM ((self ^. jsf "getTrackById" [toJSVal id]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrackList.length Mozilla VideoTrackList.length documentation> 
+getLength :: (MonadDOM m) => VideoTrackList -> m Word
+getLength self
+  = liftDOM (round <$> ((self ^. js "length") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrackList.selectedIndex Mozilla VideoTrackList.selectedIndex documentation> 
+getSelectedIndex :: (MonadDOM m) => VideoTrackList -> m Int
+getSelectedIndex self
+  = liftDOM
+      (round <$> ((self ^. js "selectedIndex") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrackList.onchange Mozilla VideoTrackList.onchange documentation> 
+change :: EventName VideoTrackList Event
+change = unsafeEventName (toJSString "change")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrackList.onaddtrack Mozilla VideoTrackList.onaddtrack documentation> 
+addTrack :: EventName VideoTrackList Event
+addTrack = unsafeEventName (toJSString "addtrack")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrackList.onremovetrack Mozilla VideoTrackList.onremovetrack documentation> 
+removeTrack :: EventName VideoTrackList Event
+removeTrack = unsafeEventName (toJSString "removetrack")
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/VoidCallback.hs b/src/Language/Javascript/JSaddle/DOM/Generated/VoidCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/VoidCallback.hs
@@ -0,0 +1,34 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.VoidCallback
+       (newVoidCallback, newVoidCallbackSync, newVoidCallbackAsync,
+        VoidCallback)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VoidCallback Mozilla VoidCallback documentation> 
+newVoidCallback :: (MonadDOM m) => JSM () -> m VoidCallback
+newVoidCallback callback
+  = liftDOM
+      (VoidCallback . Callback <$> function "" (\ _ _ [] -> callback))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VoidCallback Mozilla VoidCallback documentation> 
+newVoidCallbackSync :: (MonadDOM m) => JSM () -> m VoidCallback
+newVoidCallbackSync callback
+  = liftDOM
+      (VoidCallback . Callback <$> function "" (\ _ _ [] -> callback))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VoidCallback Mozilla VoidCallback documentation> 
+newVoidCallbackAsync :: (MonadDOM m) => JSM () -> m VoidCallback
+newVoidCallbackAsync callback
+  = liftDOM
+      (VoidCallback . Callback <$> function "" (\ _ _ [] -> callback))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/WaveShaperNode.hs b/src/Language/Javascript/JSaddle/DOM/Generated/WaveShaperNode.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/WaveShaperNode.hs
@@ -0,0 +1,38 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.WaveShaperNode
+       (setCurve, getCurve, setOversample, getOversample, WaveShaperNode,
+        castToWaveShaperNode, gTypeWaveShaperNode)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WaveShaperNode.curve Mozilla WaveShaperNode.curve documentation> 
+setCurve ::
+         (MonadDOM m, IsFloat32Array val) =>
+           WaveShaperNode -> Maybe val -> m ()
+setCurve self val = liftDOM (self ^. jss "curve" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WaveShaperNode.curve Mozilla WaveShaperNode.curve documentation> 
+getCurve ::
+         (MonadDOM m) => WaveShaperNode -> m (Maybe Float32Array)
+getCurve self = liftDOM ((self ^. js "curve") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WaveShaperNode.oversample Mozilla WaveShaperNode.oversample documentation> 
+setOversample ::
+              (MonadDOM m) => WaveShaperNode -> OverSampleType -> m ()
+setOversample self val
+  = liftDOM (self ^. jss "oversample" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WaveShaperNode.oversample Mozilla WaveShaperNode.oversample documentation> 
+getOversample :: (MonadDOM m) => WaveShaperNode -> m OverSampleType
+getOversample self
+  = liftDOM ((self ^. js "oversample") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/WebGL2RenderingContext.hs b/src/Language/Javascript/JSaddle/DOM/Generated/WebGL2RenderingContext.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/WebGL2RenderingContext.hs
@@ -0,0 +1,1478 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.WebGL2RenderingContext
+       (copyBufferSubData, getBufferSubDataView, getBufferSubData,
+        getFramebufferAttachmentParameter, blitFramebuffer,
+        framebufferTextureLayer, getInternalformatParameter,
+        invalidateFramebuffer, invalidateSubFramebuffer, readBuffer,
+        renderbufferStorageMultisample, texStorage2D, texStorage3D,
+        texImage3D, texSubImage3DView, texSubImage3DData, texSubImage3D,
+        texSubImage3DCanvas, texSubImage3DVideo, copyTexSubImage3D,
+        compressedTexImage3D, compressedTexSubImage3D, getFragDataLocation,
+        uniform1ui, uniform2ui, uniform3ui, uniform4ui, uniform1uiv,
+        uniform2uiv, uniform3uiv, uniform4uiv, uniformMatrix2x3fv,
+        uniformMatrix3x2fv, uniformMatrix2x4fv, uniformMatrix4x2fv,
+        uniformMatrix3x4fv, uniformMatrix4x3fv, vertexAttribI4i,
+        vertexAttribI4iv, vertexAttribI4ui, vertexAttribI4uiv,
+        vertexAttribIPointer, vertexAttribDivisor, drawArraysInstanced,
+        drawElementsInstanced, drawRangeElements, drawBuffers,
+        clearBufferiv, clearBufferuiv, clearBufferfv, clearBufferfi,
+        createQuery, deleteQuery, isQuery, beginQuery, endQuery, getQuery,
+        getQueryParameter, createSampler, deleteSampler, isSampler,
+        bindSampler, samplerParameteri, samplerParameterf,
+        getSamplerParameter, fenceSync, isSync, deleteSync, clientWaitSync,
+        waitSync, getSyncParameter, createTransformFeedback,
+        deleteTransformFeedback, isTransformFeedback,
+        bindTransformFeedback, beginTransformFeedback,
+        endTransformFeedback, transformFeedbackVaryings,
+        getTransformFeedbackVarying, pauseTransformFeedback,
+        resumeTransformFeedback, bindBufferBase, bindBufferRange,
+        getIndexedParameter, getUniformIndices, getActiveUniforms,
+        getUniformBlockIndex, getActiveUniformBlockParameter,
+        getActiveUniformBlockName, uniformBlockBinding, createVertexArray,
+        deleteVertexArray, isVertexArray, bindVertexArray,
+        pattern READ_BUFFER, pattern UNPACK_ROW_LENGTH,
+        pattern UNPACK_SKIP_ROWS, pattern UNPACK_SKIP_PIXELS,
+        pattern PACK_ROW_LENGTH, pattern PACK_SKIP_ROWS,
+        pattern PACK_SKIP_PIXELS, pattern COLOR, pattern DEPTH,
+        pattern STENCIL, pattern RED, pattern RGB8, pattern RGBA8,
+        pattern RGB10_A2, pattern TEXTURE_BINDING_3D,
+        pattern UNPACK_SKIP_IMAGES, pattern UNPACK_IMAGE_HEIGHT,
+        pattern TEXTURE_3D, pattern TEXTURE_WRAP_R,
+        pattern MAX_3D_TEXTURE_SIZE, pattern UNSIGNED_INT_2_10_10_10_REV,
+        pattern MAX_ELEMENTS_VERTICES, pattern MAX_ELEMENTS_INDICES,
+        pattern TEXTURE_MIN_LOD, pattern TEXTURE_MAX_LOD,
+        pattern TEXTURE_BASE_LEVEL, pattern TEXTURE_MAX_LEVEL, pattern MIN,
+        pattern MAX, pattern DEPTH_COMPONENT24,
+        pattern MAX_TEXTURE_LOD_BIAS, pattern TEXTURE_COMPARE_MODE,
+        pattern TEXTURE_COMPARE_FUNC, pattern CURRENT_QUERY,
+        pattern QUERY_RESULT, pattern QUERY_RESULT_AVAILABLE,
+        pattern STREAM_READ, pattern STREAM_COPY, pattern STATIC_READ,
+        pattern STATIC_COPY, pattern DYNAMIC_READ, pattern DYNAMIC_COPY,
+        pattern MAX_DRAW_BUFFERS, pattern DRAW_BUFFER0,
+        pattern DRAW_BUFFER1, pattern DRAW_BUFFER2, pattern DRAW_BUFFER3,
+        pattern DRAW_BUFFER4, pattern DRAW_BUFFER5, pattern DRAW_BUFFER6,
+        pattern DRAW_BUFFER7, pattern DRAW_BUFFER8, pattern DRAW_BUFFER9,
+        pattern DRAW_BUFFER10, pattern DRAW_BUFFER11,
+        pattern DRAW_BUFFER12, pattern DRAW_BUFFER13,
+        pattern DRAW_BUFFER14, pattern DRAW_BUFFER15,
+        pattern MAX_FRAGMENT_UNIFORM_COMPONENTS,
+        pattern MAX_VERTEX_UNIFORM_COMPONENTS, pattern SAMPLER_3D,
+        pattern SAMPLER_2D_SHADOW, pattern FRAGMENT_SHADER_DERIVATIVE_HINT,
+        pattern PIXEL_PACK_BUFFER, pattern PIXEL_UNPACK_BUFFER,
+        pattern PIXEL_PACK_BUFFER_BINDING,
+        pattern PIXEL_UNPACK_BUFFER_BINDING, pattern FLOAT_MAT2x3,
+        pattern FLOAT_MAT2x4, pattern FLOAT_MAT3x2, pattern FLOAT_MAT3x4,
+        pattern FLOAT_MAT4x2, pattern FLOAT_MAT4x3, pattern SRGB,
+        pattern SRGB8, pattern SRGB8_ALPHA8,
+        pattern COMPARE_REF_TO_TEXTURE, pattern RGBA32F, pattern RGB32F,
+        pattern RGBA16F, pattern RGB16F,
+        pattern VERTEX_ATTRIB_ARRAY_INTEGER,
+        pattern MAX_ARRAY_TEXTURE_LAYERS, pattern MIN_PROGRAM_TEXEL_OFFSET,
+        pattern MAX_PROGRAM_TEXEL_OFFSET, pattern MAX_VARYING_COMPONENTS,
+        pattern TEXTURE_2D_ARRAY, pattern TEXTURE_BINDING_2D_ARRAY,
+        pattern R11F_G11F_B10F, pattern UNSIGNED_INT_10F_11F_11F_REV,
+        pattern RGB9_E5, pattern UNSIGNED_INT_5_9_9_9_REV,
+        pattern TRANSFORM_FEEDBACK_BUFFER_MODE,
+        pattern MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS,
+        pattern TRANSFORM_FEEDBACK_VARYINGS,
+        pattern TRANSFORM_FEEDBACK_BUFFER_START,
+        pattern TRANSFORM_FEEDBACK_BUFFER_SIZE,
+        pattern TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN,
+        pattern RASTERIZER_DISCARD,
+        pattern MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS,
+        pattern MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS,
+        pattern INTERLEAVED_ATTRIBS, pattern SEPARATE_ATTRIBS,
+        pattern TRANSFORM_FEEDBACK_BUFFER,
+        pattern TRANSFORM_FEEDBACK_BUFFER_BINDING, pattern RGBA32UI,
+        pattern RGB32UI, pattern RGBA16UI, pattern RGB16UI,
+        pattern RGBA8UI, pattern RGB8UI, pattern RGBA32I, pattern RGB32I,
+        pattern RGBA16I, pattern RGB16I, pattern RGBA8I, pattern RGB8I,
+        pattern RED_INTEGER, pattern RGB_INTEGER, pattern RGBA_INTEGER,
+        pattern SAMPLER_2D_ARRAY, pattern SAMPLER_2D_ARRAY_SHADOW,
+        pattern SAMPLER_CUBE_SHADOW, pattern UNSIGNED_INT_VEC2,
+        pattern UNSIGNED_INT_VEC3, pattern UNSIGNED_INT_VEC4,
+        pattern INT_SAMPLER_2D, pattern INT_SAMPLER_3D,
+        pattern INT_SAMPLER_CUBE, pattern INT_SAMPLER_2D_ARRAY,
+        pattern UNSIGNED_INT_SAMPLER_2D, pattern UNSIGNED_INT_SAMPLER_3D,
+        pattern UNSIGNED_INT_SAMPLER_CUBE,
+        pattern UNSIGNED_INT_SAMPLER_2D_ARRAY, pattern DEPTH_COMPONENT32F,
+        pattern DEPTH32F_STENCIL8, pattern FLOAT_32_UNSIGNED_INT_24_8_REV,
+        pattern FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING,
+        pattern FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE,
+        pattern FRAMEBUFFER_ATTACHMENT_RED_SIZE,
+        pattern FRAMEBUFFER_ATTACHMENT_GREEN_SIZE,
+        pattern FRAMEBUFFER_ATTACHMENT_BLUE_SIZE,
+        pattern FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE,
+        pattern FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE,
+        pattern FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE,
+        pattern FRAMEBUFFER_DEFAULT, pattern DEPTH_STENCIL_ATTACHMENT,
+        pattern DEPTH_STENCIL, pattern UNSIGNED_INT_24_8,
+        pattern DEPTH24_STENCIL8, pattern UNSIGNED_NORMALIZED,
+        pattern DRAW_FRAMEBUFFER_BINDING, pattern READ_FRAMEBUFFER,
+        pattern DRAW_FRAMEBUFFER, pattern READ_FRAMEBUFFER_BINDING,
+        pattern RENDERBUFFER_SAMPLES,
+        pattern FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER,
+        pattern MAX_COLOR_ATTACHMENTS, pattern COLOR_ATTACHMENT1,
+        pattern COLOR_ATTACHMENT2, pattern COLOR_ATTACHMENT3,
+        pattern COLOR_ATTACHMENT4, pattern COLOR_ATTACHMENT5,
+        pattern COLOR_ATTACHMENT6, pattern COLOR_ATTACHMENT7,
+        pattern COLOR_ATTACHMENT8, pattern COLOR_ATTACHMENT9,
+        pattern COLOR_ATTACHMENT10, pattern COLOR_ATTACHMENT11,
+        pattern COLOR_ATTACHMENT12, pattern COLOR_ATTACHMENT13,
+        pattern COLOR_ATTACHMENT14, pattern COLOR_ATTACHMENT15,
+        pattern FRAMEBUFFER_INCOMPLETE_MULTISAMPLE, pattern MAX_SAMPLES,
+        pattern HALF_FLOAT, pattern RG, pattern RG_INTEGER, pattern R8,
+        pattern RG8, pattern R16F, pattern R32F, pattern RG16F,
+        pattern RG32F, pattern R8I, pattern R8UI, pattern R16I,
+        pattern R16UI, pattern R32I, pattern R32UI, pattern RG8I,
+        pattern RG8UI, pattern RG16I, pattern RG16UI, pattern RG32I,
+        pattern RG32UI, pattern VERTEX_ARRAY_BINDING, pattern R8_SNORM,
+        pattern RG8_SNORM, pattern RGB8_SNORM, pattern RGBA8_SNORM,
+        pattern SIGNED_NORMALIZED, pattern PRIMITIVE_RESTART_FIXED_INDEX,
+        pattern COPY_READ_BUFFER, pattern COPY_WRITE_BUFFER,
+        pattern COPY_READ_BUFFER_BINDING,
+        pattern COPY_WRITE_BUFFER_BINDING, pattern UNIFORM_BUFFER,
+        pattern UNIFORM_BUFFER_BINDING, pattern UNIFORM_BUFFER_START,
+        pattern UNIFORM_BUFFER_SIZE, pattern MAX_VERTEX_UNIFORM_BLOCKS,
+        pattern MAX_FRAGMENT_UNIFORM_BLOCKS,
+        pattern MAX_COMBINED_UNIFORM_BLOCKS,
+        pattern MAX_UNIFORM_BUFFER_BINDINGS,
+        pattern MAX_UNIFORM_BLOCK_SIZE,
+        pattern MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS,
+        pattern MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS,
+        pattern UNIFORM_BUFFER_OFFSET_ALIGNMENT,
+        pattern ACTIVE_UNIFORM_BLOCKS, pattern UNIFORM_TYPE,
+        pattern UNIFORM_SIZE, pattern UNIFORM_BLOCK_INDEX,
+        pattern UNIFORM_OFFSET, pattern UNIFORM_ARRAY_STRIDE,
+        pattern UNIFORM_MATRIX_STRIDE, pattern UNIFORM_IS_ROW_MAJOR,
+        pattern UNIFORM_BLOCK_BINDING, pattern UNIFORM_BLOCK_DATA_SIZE,
+        pattern UNIFORM_BLOCK_ACTIVE_UNIFORMS,
+        pattern UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES,
+        pattern UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER,
+        pattern UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER,
+        pattern INVALID_INDEX, pattern MAX_VERTEX_OUTPUT_COMPONENTS,
+        pattern MAX_FRAGMENT_INPUT_COMPONENTS,
+        pattern MAX_SERVER_WAIT_TIMEOUT, pattern OBJECT_TYPE,
+        pattern SYNC_CONDITION, pattern SYNC_STATUS, pattern SYNC_FLAGS,
+        pattern SYNC_FENCE, pattern SYNC_GPU_COMMANDS_COMPLETE,
+        pattern UNSIGNALED, pattern SIGNALED, pattern ALREADY_SIGNALED,
+        pattern TIMEOUT_EXPIRED, pattern CONDITION_SATISFIED,
+        pattern WAIT_FAILED, pattern SYNC_FLUSH_COMMANDS_BIT,
+        pattern VERTEX_ATTRIB_ARRAY_DIVISOR, pattern ANY_SAMPLES_PASSED,
+        pattern ANY_SAMPLES_PASSED_CONSERVATIVE, pattern SAMPLER_BINDING,
+        pattern RGB10_A2UI, pattern TEXTURE_SWIZZLE_R,
+        pattern TEXTURE_SWIZZLE_G, pattern TEXTURE_SWIZZLE_B,
+        pattern TEXTURE_SWIZZLE_A, pattern GREEN, pattern BLUE,
+        pattern INT_2_10_10_10_REV, pattern TRANSFORM_FEEDBACK,
+        pattern TRANSFORM_FEEDBACK_PAUSED,
+        pattern TRANSFORM_FEEDBACK_ACTIVE,
+        pattern TRANSFORM_FEEDBACK_BINDING, pattern COMPRESSED_R11_EAC,
+        pattern COMPRESSED_SIGNED_R11_EAC, pattern COMPRESSED_RG11_EAC,
+        pattern COMPRESSED_SIGNED_RG11_EAC, pattern COMPRESSED_RGB8_ETC2,
+        pattern COMPRESSED_SRGB8_ETC2,
+        pattern COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2,
+        pattern COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2,
+        pattern COMPRESSED_RGBA8_ETC2_EAC,
+        pattern COMPRESSED_SRGB8_ALPHA8_ETC2_EAC,
+        pattern TEXTURE_IMMUTABLE_FORMAT, pattern MAX_ELEMENT_INDEX,
+        pattern NUM_SAMPLE_COUNTS, pattern TEXTURE_IMMUTABLE_LEVELS,
+        pattern TIMEOUT_IGNORED, WebGL2RenderingContext,
+        castToWebGL2RenderingContext, gTypeWebGL2RenderingContext)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.copyBufferSubData Mozilla WebGL2RenderingContext.copyBufferSubData documentation> 
+copyBufferSubData ::
+                  (MonadDOM m) =>
+                    WebGL2RenderingContext ->
+                      GLenum -> GLenum -> GLintptr -> GLintptr -> GLsizeiptr -> m ()
+copyBufferSubData self readTarget writeTarget readOffset
+  writeOffset size
+  = liftDOM
+      (void
+         (self ^. jsf "copyBufferSubData"
+            [toJSVal readTarget, toJSVal writeTarget, toJSVal readOffset,
+             toJSVal writeOffset, toJSVal size]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getBufferSubData Mozilla WebGL2RenderingContext.getBufferSubData documentation> 
+getBufferSubDataView ::
+                     (MonadDOM m, IsArrayBufferView returnedData) =>
+                       WebGL2RenderingContext ->
+                         GLenum -> GLintptr -> Maybe returnedData -> m ()
+getBufferSubDataView self target offset returnedData
+  = liftDOM
+      (void
+         (self ^. jsf "getBufferSubData"
+            [toJSVal target, toJSVal offset, toJSVal returnedData]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getBufferSubData Mozilla WebGL2RenderingContext.getBufferSubData documentation> 
+getBufferSubData ::
+                 (MonadDOM m, IsArrayBuffer returnedData) =>
+                   WebGL2RenderingContext ->
+                     GLenum -> GLintptr -> Maybe returnedData -> m ()
+getBufferSubData self target offset returnedData
+  = liftDOM
+      (void
+         (self ^. jsf "getBufferSubData"
+            [toJSVal target, toJSVal offset, toJSVal returnedData]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getFramebufferAttachmentParameter Mozilla WebGL2RenderingContext.getFramebufferAttachmentParameter documentation> 
+getFramebufferAttachmentParameter ::
+                                  (MonadDOM m) =>
+                                    WebGL2RenderingContext -> GLenum -> GLenum -> GLenum -> m JSVal
+getFramebufferAttachmentParameter self target attachment pname
+  = liftDOM
+      ((self ^. jsf "getFramebufferAttachmentParameter"
+          [toJSVal target, toJSVal attachment, toJSVal pname])
+         >>= toJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.blitFramebuffer Mozilla WebGL2RenderingContext.blitFramebuffer documentation> 
+blitFramebuffer ::
+                (MonadDOM m) =>
+                  WebGL2RenderingContext ->
+                    GLint ->
+                      GLint ->
+                        GLint ->
+                          GLint ->
+                            GLint -> GLint -> GLint -> GLint -> GLbitfield -> GLenum -> m ()
+blitFramebuffer self srcX0 srcY0 srcX1 srcY1 dstX0 dstY0 dstX1
+  dstY1 mask filter
+  = liftDOM
+      (void
+         (self ^. jsf "blitFramebuffer"
+            [toJSVal srcX0, toJSVal srcY0, toJSVal srcX1, toJSVal srcY1,
+             toJSVal dstX0, toJSVal dstY0, toJSVal dstX1, toJSVal dstY1,
+             toJSVal mask, toJSVal filter]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.framebufferTextureLayer Mozilla WebGL2RenderingContext.framebufferTextureLayer documentation> 
+framebufferTextureLayer ::
+                        (MonadDOM m) =>
+                          WebGL2RenderingContext ->
+                            GLenum -> GLenum -> GLuint -> GLint -> GLint -> m ()
+framebufferTextureLayer self target attachment texture level layer
+  = liftDOM
+      (void
+         (self ^. jsf "framebufferTextureLayer"
+            [toJSVal target, toJSVal attachment, toJSVal texture,
+             toJSVal level, toJSVal layer]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getInternalformatParameter Mozilla WebGL2RenderingContext.getInternalformatParameter documentation> 
+getInternalformatParameter ::
+                           (MonadDOM m) =>
+                             WebGL2RenderingContext -> GLenum -> GLenum -> GLenum -> m JSVal
+getInternalformatParameter self target internalformat pname
+  = liftDOM
+      ((self ^. jsf "getInternalformatParameter"
+          [toJSVal target, toJSVal internalformat, toJSVal pname])
+         >>= toJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.invalidateFramebuffer Mozilla WebGL2RenderingContext.invalidateFramebuffer documentation> 
+invalidateFramebuffer ::
+                      (MonadDOM m) =>
+                        WebGL2RenderingContext -> GLenum -> [GLenum] -> m ()
+invalidateFramebuffer self target attachments
+  = liftDOM
+      (void
+         (self ^. jsf "invalidateFramebuffer"
+            [toJSVal target, toJSVal (array attachments)]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.invalidateSubFramebuffer Mozilla WebGL2RenderingContext.invalidateSubFramebuffer documentation> 
+invalidateSubFramebuffer ::
+                         (MonadDOM m) =>
+                           WebGL2RenderingContext ->
+                             GLenum -> [GLenum] -> GLint -> GLint -> GLsizei -> GLsizei -> m ()
+invalidateSubFramebuffer self target attachments x y width height
+  = liftDOM
+      (void
+         (self ^. jsf "invalidateSubFramebuffer"
+            [toJSVal target, toJSVal (array attachments), toJSVal x, toJSVal y,
+             toJSVal width, toJSVal height]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.readBuffer Mozilla WebGL2RenderingContext.readBuffer documentation> 
+readBuffer ::
+           (MonadDOM m) => WebGL2RenderingContext -> GLenum -> m ()
+readBuffer self src
+  = liftDOM (void (self ^. jsf "readBuffer" [toJSVal src]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.renderbufferStorageMultisample Mozilla WebGL2RenderingContext.renderbufferStorageMultisample documentation> 
+renderbufferStorageMultisample ::
+                               (MonadDOM m) =>
+                                 WebGL2RenderingContext ->
+                                   GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> m ()
+renderbufferStorageMultisample self target samples internalformat
+  width height
+  = liftDOM
+      (void
+         (self ^. jsf "renderbufferStorageMultisample"
+            [toJSVal target, toJSVal samples, toJSVal internalformat,
+             toJSVal width, toJSVal height]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.texStorage2D Mozilla WebGL2RenderingContext.texStorage2D documentation> 
+texStorage2D ::
+             (MonadDOM m) =>
+               WebGL2RenderingContext ->
+                 GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> m ()
+texStorage2D self target levels internalformat width height
+  = liftDOM
+      (void
+         (self ^. jsf "texStorage2D"
+            [toJSVal target, toJSVal levels, toJSVal internalformat,
+             toJSVal width, toJSVal height]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.texStorage3D Mozilla WebGL2RenderingContext.texStorage3D documentation> 
+texStorage3D ::
+             (MonadDOM m) =>
+               WebGL2RenderingContext ->
+                 GLenum ->
+                   GLsizei -> GLenum -> GLsizei -> GLsizei -> GLsizei -> m ()
+texStorage3D self target levels internalformat width height depth
+  = liftDOM
+      (void
+         (self ^. jsf "texStorage3D"
+            [toJSVal target, toJSVal levels, toJSVal internalformat,
+             toJSVal width, toJSVal height, toJSVal depth]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.texImage3D Mozilla WebGL2RenderingContext.texImage3D documentation> 
+texImage3D ::
+           (MonadDOM m, IsArrayBufferView pixels) =>
+             WebGL2RenderingContext ->
+               GLenum ->
+                 GLint ->
+                   GLint ->
+                     GLsizei ->
+                       GLsizei ->
+                         GLsizei -> GLint -> GLenum -> GLenum -> Maybe pixels -> m ()
+texImage3D self target level internalformat width height depth
+  border format type' pixels
+  = liftDOM
+      (void
+         (self ^. jsf "texImage3D"
+            [toJSVal target, toJSVal level, toJSVal internalformat,
+             toJSVal width, toJSVal height, toJSVal depth, toJSVal border,
+             toJSVal format, toJSVal type', toJSVal pixels]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.texSubImage3D Mozilla WebGL2RenderingContext.texSubImage3D documentation> 
+texSubImage3DView ::
+                  (MonadDOM m, IsArrayBufferView pixels) =>
+                    WebGL2RenderingContext ->
+                      GLenum ->
+                        GLint ->
+                          GLint ->
+                            GLint ->
+                              GLint ->
+                                GLsizei ->
+                                  GLsizei -> GLsizei -> GLenum -> GLenum -> Maybe pixels -> m ()
+texSubImage3DView self target level xoffset yoffset zoffset width
+  height depth format type' pixels
+  = liftDOM
+      (void
+         (self ^. jsf "texSubImage3D"
+            [toJSVal target, toJSVal level, toJSVal xoffset, toJSVal yoffset,
+             toJSVal zoffset, toJSVal width, toJSVal height, toJSVal depth,
+             toJSVal format, toJSVal type', toJSVal pixels]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.texSubImage3D Mozilla WebGL2RenderingContext.texSubImage3D documentation> 
+texSubImage3DData ::
+                  (MonadDOM m) =>
+                    WebGL2RenderingContext ->
+                      GLenum ->
+                        GLint ->
+                          GLint ->
+                            GLint -> GLint -> GLenum -> GLenum -> Maybe ImageData -> m ()
+texSubImage3DData self target level xoffset yoffset zoffset format
+  type' source
+  = liftDOM
+      (void
+         (self ^. jsf "texSubImage3D"
+            [toJSVal target, toJSVal level, toJSVal xoffset, toJSVal yoffset,
+             toJSVal zoffset, toJSVal format, toJSVal type', toJSVal source]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.texSubImage3D Mozilla WebGL2RenderingContext.texSubImage3D documentation> 
+texSubImage3D ::
+              (MonadDOM m) =>
+                WebGL2RenderingContext ->
+                  GLenum ->
+                    GLint ->
+                      GLint ->
+                        GLint ->
+                          GLint -> GLenum -> GLenum -> Maybe HTMLImageElement -> m ()
+texSubImage3D self target level xoffset yoffset zoffset format
+  type' source
+  = liftDOM
+      (void
+         (self ^. jsf "texSubImage3D"
+            [toJSVal target, toJSVal level, toJSVal xoffset, toJSVal yoffset,
+             toJSVal zoffset, toJSVal format, toJSVal type', toJSVal source]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.texSubImage3D Mozilla WebGL2RenderingContext.texSubImage3D documentation> 
+texSubImage3DCanvas ::
+                    (MonadDOM m) =>
+                      WebGL2RenderingContext ->
+                        GLenum ->
+                          GLint ->
+                            GLint ->
+                              GLint ->
+                                GLint -> GLenum -> GLenum -> Maybe HTMLCanvasElement -> m ()
+texSubImage3DCanvas self target level xoffset yoffset zoffset
+  format type' source
+  = liftDOM
+      (void
+         (self ^. jsf "texSubImage3D"
+            [toJSVal target, toJSVal level, toJSVal xoffset, toJSVal yoffset,
+             toJSVal zoffset, toJSVal format, toJSVal type', toJSVal source]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.texSubImage3D Mozilla WebGL2RenderingContext.texSubImage3D documentation> 
+texSubImage3DVideo ::
+                   (MonadDOM m) =>
+                     WebGL2RenderingContext ->
+                       GLenum ->
+                         GLint ->
+                           GLint ->
+                             GLint ->
+                               GLint -> GLenum -> GLenum -> Maybe HTMLVideoElement -> m ()
+texSubImage3DVideo self target level xoffset yoffset zoffset format
+  type' source
+  = liftDOM
+      (void
+         (self ^. jsf "texSubImage3D"
+            [toJSVal target, toJSVal level, toJSVal xoffset, toJSVal yoffset,
+             toJSVal zoffset, toJSVal format, toJSVal type', toJSVal source]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.copyTexSubImage3D Mozilla WebGL2RenderingContext.copyTexSubImage3D documentation> 
+copyTexSubImage3D ::
+                  (MonadDOM m) =>
+                    WebGL2RenderingContext ->
+                      GLenum ->
+                        GLint ->
+                          GLint ->
+                            GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> m ()
+copyTexSubImage3D self target level xoffset yoffset zoffset x y
+  width height
+  = liftDOM
+      (void
+         (self ^. jsf "copyTexSubImage3D"
+            [toJSVal target, toJSVal level, toJSVal xoffset, toJSVal yoffset,
+             toJSVal zoffset, toJSVal x, toJSVal y, toJSVal width,
+             toJSVal height]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.compressedTexImage3D Mozilla WebGL2RenderingContext.compressedTexImage3D documentation> 
+compressedTexImage3D ::
+                     (MonadDOM m, IsArrayBufferView data') =>
+                       WebGL2RenderingContext ->
+                         GLenum ->
+                           GLint ->
+                             GLenum ->
+                               GLsizei ->
+                                 GLsizei -> GLsizei -> GLint -> GLsizei -> Maybe data' -> m ()
+compressedTexImage3D self target level internalformat width height
+  depth border imageSize data'
+  = liftDOM
+      (void
+         (self ^. jsf "compressedTexImage3D"
+            [toJSVal target, toJSVal level, toJSVal internalformat,
+             toJSVal width, toJSVal height, toJSVal depth, toJSVal border,
+             toJSVal imageSize, toJSVal data']))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.compressedTexSubImage3D Mozilla WebGL2RenderingContext.compressedTexSubImage3D documentation> 
+compressedTexSubImage3D ::
+                        (MonadDOM m, IsArrayBufferView data') =>
+                          WebGL2RenderingContext ->
+                            GLenum ->
+                              GLint ->
+                                GLint ->
+                                  GLint ->
+                                    GLint ->
+                                      GLsizei ->
+                                        GLsizei ->
+                                          GLsizei -> GLenum -> GLsizei -> Maybe data' -> m ()
+compressedTexSubImage3D self target level xoffset yoffset zoffset
+  width height depth format imageSize data'
+  = liftDOM
+      (void
+         (self ^. jsf "compressedTexSubImage3D"
+            [toJSVal target, toJSVal level, toJSVal xoffset, toJSVal yoffset,
+             toJSVal zoffset, toJSVal width, toJSVal height, toJSVal depth,
+             toJSVal format, toJSVal imageSize, toJSVal data']))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getFragDataLocation Mozilla WebGL2RenderingContext.getFragDataLocation documentation> 
+getFragDataLocation ::
+                    (MonadDOM m, ToJSString name) =>
+                      WebGL2RenderingContext -> Maybe WebGLProgram -> name -> m GLint
+getFragDataLocation self program name
+  = liftDOM
+      ((self ^. jsf "getFragDataLocation"
+          [toJSVal program, toJSVal name])
+         >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.uniform1ui Mozilla WebGL2RenderingContext.uniform1ui documentation> 
+uniform1ui ::
+           (MonadDOM m) =>
+             WebGL2RenderingContext ->
+               Maybe WebGLUniformLocation -> GLuint -> m ()
+uniform1ui self location v0
+  = liftDOM
+      (void (self ^. jsf "uniform1ui" [toJSVal location, toJSVal v0]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.uniform2ui Mozilla WebGL2RenderingContext.uniform2ui documentation> 
+uniform2ui ::
+           (MonadDOM m) =>
+             WebGL2RenderingContext ->
+               Maybe WebGLUniformLocation -> GLuint -> GLuint -> m ()
+uniform2ui self location v0 v1
+  = liftDOM
+      (void
+         (self ^. jsf "uniform2ui"
+            [toJSVal location, toJSVal v0, toJSVal v1]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.uniform3ui Mozilla WebGL2RenderingContext.uniform3ui documentation> 
+uniform3ui ::
+           (MonadDOM m) =>
+             WebGL2RenderingContext ->
+               Maybe WebGLUniformLocation -> GLuint -> GLuint -> GLuint -> m ()
+uniform3ui self location v0 v1 v2
+  = liftDOM
+      (void
+         (self ^. jsf "uniform3ui"
+            [toJSVal location, toJSVal v0, toJSVal v1, toJSVal v2]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.uniform4ui Mozilla WebGL2RenderingContext.uniform4ui documentation> 
+uniform4ui ::
+           (MonadDOM m) =>
+             WebGL2RenderingContext ->
+               Maybe WebGLUniformLocation ->
+                 GLuint -> GLuint -> GLuint -> GLuint -> m ()
+uniform4ui self location v0 v1 v2 v3
+  = liftDOM
+      (void
+         (self ^. jsf "uniform4ui"
+            [toJSVal location, toJSVal v0, toJSVal v1, toJSVal v2,
+             toJSVal v3]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.uniform1uiv Mozilla WebGL2RenderingContext.uniform1uiv documentation> 
+uniform1uiv ::
+            (MonadDOM m, IsUint32Array value) =>
+              WebGL2RenderingContext ->
+                Maybe WebGLUniformLocation -> Maybe value -> m ()
+uniform1uiv self location value
+  = liftDOM
+      (void
+         (self ^. jsf "uniform1uiv" [toJSVal location, toJSVal value]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.uniform2uiv Mozilla WebGL2RenderingContext.uniform2uiv documentation> 
+uniform2uiv ::
+            (MonadDOM m, IsUint32Array value) =>
+              WebGL2RenderingContext ->
+                Maybe WebGLUniformLocation -> Maybe value -> m ()
+uniform2uiv self location value
+  = liftDOM
+      (void
+         (self ^. jsf "uniform2uiv" [toJSVal location, toJSVal value]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.uniform3uiv Mozilla WebGL2RenderingContext.uniform3uiv documentation> 
+uniform3uiv ::
+            (MonadDOM m, IsUint32Array value) =>
+              WebGL2RenderingContext ->
+                Maybe WebGLUniformLocation -> Maybe value -> m ()
+uniform3uiv self location value
+  = liftDOM
+      (void
+         (self ^. jsf "uniform3uiv" [toJSVal location, toJSVal value]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.uniform4uiv Mozilla WebGL2RenderingContext.uniform4uiv documentation> 
+uniform4uiv ::
+            (MonadDOM m, IsUint32Array value) =>
+              WebGL2RenderingContext ->
+                Maybe WebGLUniformLocation -> Maybe value -> m ()
+uniform4uiv self location value
+  = liftDOM
+      (void
+         (self ^. jsf "uniform4uiv" [toJSVal location, toJSVal value]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.uniformMatrix2x3fv Mozilla WebGL2RenderingContext.uniformMatrix2x3fv documentation> 
+uniformMatrix2x3fv ::
+                   (MonadDOM m, IsFloat32Array value) =>
+                     WebGL2RenderingContext ->
+                       Maybe WebGLUniformLocation -> GLboolean -> Maybe value -> m ()
+uniformMatrix2x3fv self location transpose value
+  = liftDOM
+      (void
+         (self ^. jsf "uniformMatrix2x3fv"
+            [toJSVal location, toJSVal transpose, toJSVal value]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.uniformMatrix3x2fv Mozilla WebGL2RenderingContext.uniformMatrix3x2fv documentation> 
+uniformMatrix3x2fv ::
+                   (MonadDOM m, IsFloat32Array value) =>
+                     WebGL2RenderingContext ->
+                       Maybe WebGLUniformLocation -> GLboolean -> Maybe value -> m ()
+uniformMatrix3x2fv self location transpose value
+  = liftDOM
+      (void
+         (self ^. jsf "uniformMatrix3x2fv"
+            [toJSVal location, toJSVal transpose, toJSVal value]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.uniformMatrix2x4fv Mozilla WebGL2RenderingContext.uniformMatrix2x4fv documentation> 
+uniformMatrix2x4fv ::
+                   (MonadDOM m, IsFloat32Array value) =>
+                     WebGL2RenderingContext ->
+                       Maybe WebGLUniformLocation -> GLboolean -> Maybe value -> m ()
+uniformMatrix2x4fv self location transpose value
+  = liftDOM
+      (void
+         (self ^. jsf "uniformMatrix2x4fv"
+            [toJSVal location, toJSVal transpose, toJSVal value]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.uniformMatrix4x2fv Mozilla WebGL2RenderingContext.uniformMatrix4x2fv documentation> 
+uniformMatrix4x2fv ::
+                   (MonadDOM m, IsFloat32Array value) =>
+                     WebGL2RenderingContext ->
+                       Maybe WebGLUniformLocation -> GLboolean -> Maybe value -> m ()
+uniformMatrix4x2fv self location transpose value
+  = liftDOM
+      (void
+         (self ^. jsf "uniformMatrix4x2fv"
+            [toJSVal location, toJSVal transpose, toJSVal value]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.uniformMatrix3x4fv Mozilla WebGL2RenderingContext.uniformMatrix3x4fv documentation> 
+uniformMatrix3x4fv ::
+                   (MonadDOM m, IsFloat32Array value) =>
+                     WebGL2RenderingContext ->
+                       Maybe WebGLUniformLocation -> GLboolean -> Maybe value -> m ()
+uniformMatrix3x4fv self location transpose value
+  = liftDOM
+      (void
+         (self ^. jsf "uniformMatrix3x4fv"
+            [toJSVal location, toJSVal transpose, toJSVal value]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.uniformMatrix4x3fv Mozilla WebGL2RenderingContext.uniformMatrix4x3fv documentation> 
+uniformMatrix4x3fv ::
+                   (MonadDOM m, IsFloat32Array value) =>
+                     WebGL2RenderingContext ->
+                       Maybe WebGLUniformLocation -> GLboolean -> Maybe value -> m ()
+uniformMatrix4x3fv self location transpose value
+  = liftDOM
+      (void
+         (self ^. jsf "uniformMatrix4x3fv"
+            [toJSVal location, toJSVal transpose, toJSVal value]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.vertexAttribI4i Mozilla WebGL2RenderingContext.vertexAttribI4i documentation> 
+vertexAttribI4i ::
+                (MonadDOM m) =>
+                  WebGL2RenderingContext ->
+                    GLuint -> GLint -> GLint -> GLint -> GLint -> m ()
+vertexAttribI4i self index x y z w
+  = liftDOM
+      (void
+         (self ^. jsf "vertexAttribI4i"
+            [toJSVal index, toJSVal x, toJSVal y, toJSVal z, toJSVal w]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.vertexAttribI4iv Mozilla WebGL2RenderingContext.vertexAttribI4iv documentation> 
+vertexAttribI4iv ::
+                 (MonadDOM m, IsInt32Array v) =>
+                   WebGL2RenderingContext -> GLuint -> Maybe v -> m ()
+vertexAttribI4iv self index v
+  = liftDOM
+      (void (self ^. jsf "vertexAttribI4iv" [toJSVal index, toJSVal v]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.vertexAttribI4ui Mozilla WebGL2RenderingContext.vertexAttribI4ui documentation> 
+vertexAttribI4ui ::
+                 (MonadDOM m) =>
+                   WebGL2RenderingContext ->
+                     GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> m ()
+vertexAttribI4ui self index x y z w
+  = liftDOM
+      (void
+         (self ^. jsf "vertexAttribI4ui"
+            [toJSVal index, toJSVal x, toJSVal y, toJSVal z, toJSVal w]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.vertexAttribI4uiv Mozilla WebGL2RenderingContext.vertexAttribI4uiv documentation> 
+vertexAttribI4uiv ::
+                  (MonadDOM m, IsUint32Array v) =>
+                    WebGL2RenderingContext -> GLuint -> Maybe v -> m ()
+vertexAttribI4uiv self index v
+  = liftDOM
+      (void (self ^. jsf "vertexAttribI4uiv" [toJSVal index, toJSVal v]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.vertexAttribIPointer Mozilla WebGL2RenderingContext.vertexAttribIPointer documentation> 
+vertexAttribIPointer ::
+                     (MonadDOM m) =>
+                       WebGL2RenderingContext ->
+                         GLuint -> GLint -> GLenum -> GLsizei -> GLintptr -> m ()
+vertexAttribIPointer self index size type' stride offset
+  = liftDOM
+      (void
+         (self ^. jsf "vertexAttribIPointer"
+            [toJSVal index, toJSVal size, toJSVal type', toJSVal stride,
+             toJSVal offset]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.vertexAttribDivisor Mozilla WebGL2RenderingContext.vertexAttribDivisor documentation> 
+vertexAttribDivisor ::
+                    (MonadDOM m) => WebGL2RenderingContext -> GLuint -> GLuint -> m ()
+vertexAttribDivisor self index divisor
+  = liftDOM
+      (void
+         (self ^. jsf "vertexAttribDivisor"
+            [toJSVal index, toJSVal divisor]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.drawArraysInstanced Mozilla WebGL2RenderingContext.drawArraysInstanced documentation> 
+drawArraysInstanced ::
+                    (MonadDOM m) =>
+                      WebGL2RenderingContext ->
+                        GLenum -> GLint -> GLsizei -> GLsizei -> m ()
+drawArraysInstanced self mode first count instanceCount
+  = liftDOM
+      (void
+         (self ^. jsf "drawArraysInstanced"
+            [toJSVal mode, toJSVal first, toJSVal count,
+             toJSVal instanceCount]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.drawElementsInstanced Mozilla WebGL2RenderingContext.drawElementsInstanced documentation> 
+drawElementsInstanced ::
+                      (MonadDOM m) =>
+                        WebGL2RenderingContext ->
+                          GLenum -> GLsizei -> GLenum -> GLintptr -> GLsizei -> m ()
+drawElementsInstanced self mode count type' offset instanceCount
+  = liftDOM
+      (void
+         (self ^. jsf "drawElementsInstanced"
+            [toJSVal mode, toJSVal count, toJSVal type', toJSVal offset,
+             toJSVal instanceCount]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.drawRangeElements Mozilla WebGL2RenderingContext.drawRangeElements documentation> 
+drawRangeElements ::
+                  (MonadDOM m) =>
+                    WebGL2RenderingContext ->
+                      GLenum -> GLuint -> GLuint -> GLsizei -> GLenum -> GLintptr -> m ()
+drawRangeElements self mode start end count type' offset
+  = liftDOM
+      (void
+         (self ^. jsf "drawRangeElements"
+            [toJSVal mode, toJSVal start, toJSVal end, toJSVal count,
+             toJSVal type', toJSVal offset]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.drawBuffers Mozilla WebGL2RenderingContext.drawBuffers documentation> 
+drawBuffers ::
+            (MonadDOM m) => WebGL2RenderingContext -> [GLenum] -> m ()
+drawBuffers self buffers
+  = liftDOM
+      (void (self ^. jsf "drawBuffers" [toJSVal (array buffers)]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.clearBufferiv Mozilla WebGL2RenderingContext.clearBufferiv documentation> 
+clearBufferiv ::
+              (MonadDOM m, IsInt32Array value) =>
+                WebGL2RenderingContext -> GLenum -> GLint -> Maybe value -> m ()
+clearBufferiv self buffer drawbuffer value
+  = liftDOM
+      (void
+         (self ^. jsf "clearBufferiv"
+            [toJSVal buffer, toJSVal drawbuffer, toJSVal value]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.clearBufferuiv Mozilla WebGL2RenderingContext.clearBufferuiv documentation> 
+clearBufferuiv ::
+               (MonadDOM m, IsUint32Array value) =>
+                 WebGL2RenderingContext -> GLenum -> GLint -> Maybe value -> m ()
+clearBufferuiv self buffer drawbuffer value
+  = liftDOM
+      (void
+         (self ^. jsf "clearBufferuiv"
+            [toJSVal buffer, toJSVal drawbuffer, toJSVal value]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.clearBufferfv Mozilla WebGL2RenderingContext.clearBufferfv documentation> 
+clearBufferfv ::
+              (MonadDOM m, IsFloat32Array value) =>
+                WebGL2RenderingContext -> GLenum -> GLint -> Maybe value -> m ()
+clearBufferfv self buffer drawbuffer value
+  = liftDOM
+      (void
+         (self ^. jsf "clearBufferfv"
+            [toJSVal buffer, toJSVal drawbuffer, toJSVal value]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.clearBufferfi Mozilla WebGL2RenderingContext.clearBufferfi documentation> 
+clearBufferfi ::
+              (MonadDOM m) =>
+                WebGL2RenderingContext ->
+                  GLenum -> GLint -> GLfloat -> GLint -> m ()
+clearBufferfi self buffer drawbuffer depth stencil
+  = liftDOM
+      (void
+         (self ^. jsf "clearBufferfi"
+            [toJSVal buffer, toJSVal drawbuffer, toJSVal depth,
+             toJSVal stencil]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.createQuery Mozilla WebGL2RenderingContext.createQuery documentation> 
+createQuery ::
+            (MonadDOM m) => WebGL2RenderingContext -> m (Maybe WebGLQuery)
+createQuery self
+  = liftDOM ((self ^. js "createQuery") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.deleteQuery Mozilla WebGL2RenderingContext.deleteQuery documentation> 
+deleteQuery ::
+            (MonadDOM m) => WebGL2RenderingContext -> Maybe WebGLQuery -> m ()
+deleteQuery self query
+  = liftDOM (void (self ^. jsf "deleteQuery" [toJSVal query]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.isQuery Mozilla WebGL2RenderingContext.isQuery documentation> 
+isQuery ::
+        (MonadDOM m) =>
+          WebGL2RenderingContext -> Maybe WebGLQuery -> m GLboolean
+isQuery self query
+  = liftDOM
+      ((self ^. jsf "isQuery" [toJSVal query]) >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.beginQuery Mozilla WebGL2RenderingContext.beginQuery documentation> 
+beginQuery ::
+           (MonadDOM m) =>
+             WebGL2RenderingContext -> GLenum -> Maybe WebGLQuery -> m ()
+beginQuery self target query
+  = liftDOM
+      (void (self ^. jsf "beginQuery" [toJSVal target, toJSVal query]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.endQuery Mozilla WebGL2RenderingContext.endQuery documentation> 
+endQuery ::
+         (MonadDOM m) => WebGL2RenderingContext -> GLenum -> m ()
+endQuery self target
+  = liftDOM (void (self ^. jsf "endQuery" [toJSVal target]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getQuery Mozilla WebGL2RenderingContext.getQuery documentation> 
+getQuery ::
+         (MonadDOM m) =>
+           WebGL2RenderingContext -> GLenum -> GLenum -> m (Maybe WebGLQuery)
+getQuery self target pname
+  = liftDOM
+      ((self ^. jsf "getQuery" [toJSVal target, toJSVal pname]) >>=
+         fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getQueryParameter Mozilla WebGL2RenderingContext.getQueryParameter documentation> 
+getQueryParameter ::
+                  (MonadDOM m) =>
+                    WebGL2RenderingContext -> Maybe WebGLQuery -> GLenum -> m JSVal
+getQueryParameter self query pname
+  = liftDOM
+      ((self ^. jsf "getQueryParameter" [toJSVal query, toJSVal pname])
+         >>= toJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.createSampler Mozilla WebGL2RenderingContext.createSampler documentation> 
+createSampler ::
+              (MonadDOM m) => WebGL2RenderingContext -> m (Maybe WebGLSampler)
+createSampler self
+  = liftDOM ((self ^. js "createSampler") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.deleteSampler Mozilla WebGL2RenderingContext.deleteSampler documentation> 
+deleteSampler ::
+              (MonadDOM m) =>
+                WebGL2RenderingContext -> Maybe WebGLSampler -> m ()
+deleteSampler self sampler
+  = liftDOM (void (self ^. jsf "deleteSampler" [toJSVal sampler]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.isSampler Mozilla WebGL2RenderingContext.isSampler documentation> 
+isSampler ::
+          (MonadDOM m) =>
+            WebGL2RenderingContext -> Maybe WebGLSampler -> m GLboolean
+isSampler self sampler
+  = liftDOM
+      ((self ^. jsf "isSampler" [toJSVal sampler]) >>=
+         fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.bindSampler Mozilla WebGL2RenderingContext.bindSampler documentation> 
+bindSampler ::
+            (MonadDOM m) =>
+              WebGL2RenderingContext -> GLuint -> Maybe WebGLSampler -> m ()
+bindSampler self unit sampler
+  = liftDOM
+      (void (self ^. jsf "bindSampler" [toJSVal unit, toJSVal sampler]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.samplerParameteri Mozilla WebGL2RenderingContext.samplerParameteri documentation> 
+samplerParameteri ::
+                  (MonadDOM m) =>
+                    WebGL2RenderingContext ->
+                      Maybe WebGLSampler -> GLenum -> GLint -> m ()
+samplerParameteri self sampler pname param
+  = liftDOM
+      (void
+         (self ^. jsf "samplerParameteri"
+            [toJSVal sampler, toJSVal pname, toJSVal param]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.samplerParameterf Mozilla WebGL2RenderingContext.samplerParameterf documentation> 
+samplerParameterf ::
+                  (MonadDOM m) =>
+                    WebGL2RenderingContext ->
+                      Maybe WebGLSampler -> GLenum -> GLfloat -> m ()
+samplerParameterf self sampler pname param
+  = liftDOM
+      (void
+         (self ^. jsf "samplerParameterf"
+            [toJSVal sampler, toJSVal pname, toJSVal param]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getSamplerParameter Mozilla WebGL2RenderingContext.getSamplerParameter documentation> 
+getSamplerParameter ::
+                    (MonadDOM m) =>
+                      WebGL2RenderingContext -> Maybe WebGLSampler -> GLenum -> m JSVal
+getSamplerParameter self sampler pname
+  = liftDOM
+      ((self ^. jsf "getSamplerParameter"
+          [toJSVal sampler, toJSVal pname])
+         >>= toJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.fenceSync Mozilla WebGL2RenderingContext.fenceSync documentation> 
+fenceSync ::
+          (MonadDOM m) =>
+            WebGL2RenderingContext ->
+              GLenum -> GLbitfield -> m (Maybe WebGLSync)
+fenceSync self condition flags
+  = liftDOM
+      ((self ^. jsf "fenceSync" [toJSVal condition, toJSVal flags]) >>=
+         fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.isSync Mozilla WebGL2RenderingContext.isSync documentation> 
+isSync ::
+       (MonadDOM m) =>
+         WebGL2RenderingContext -> Maybe WebGLSync -> m GLboolean
+isSync self sync
+  = liftDOM
+      ((self ^. jsf "isSync" [toJSVal sync]) >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.deleteSync Mozilla WebGL2RenderingContext.deleteSync documentation> 
+deleteSync ::
+           (MonadDOM m) => WebGL2RenderingContext -> Maybe WebGLSync -> m ()
+deleteSync self sync
+  = liftDOM (void (self ^. jsf "deleteSync" [toJSVal sync]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.clientWaitSync Mozilla WebGL2RenderingContext.clientWaitSync documentation> 
+clientWaitSync ::
+               (MonadDOM m) =>
+                 WebGL2RenderingContext ->
+                   Maybe WebGLSync -> GLbitfield -> GLuint64 -> m GLenum
+clientWaitSync self sync flags timeout
+  = liftDOM
+      ((self ^. jsf "clientWaitSync"
+          [toJSVal sync, toJSVal flags, toJSVal timeout])
+         >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.waitSync Mozilla WebGL2RenderingContext.waitSync documentation> 
+waitSync ::
+         (MonadDOM m) =>
+           WebGL2RenderingContext ->
+             Maybe WebGLSync -> GLbitfield -> GLuint64 -> m ()
+waitSync self sync flags timeout
+  = liftDOM
+      (void
+         (self ^. jsf "waitSync"
+            [toJSVal sync, toJSVal flags, toJSVal timeout]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getSyncParameter Mozilla WebGL2RenderingContext.getSyncParameter documentation> 
+getSyncParameter ::
+                 (MonadDOM m) =>
+                   WebGL2RenderingContext -> Maybe WebGLSync -> GLenum -> m JSVal
+getSyncParameter self sync pname
+  = liftDOM
+      ((self ^. jsf "getSyncParameter" [toJSVal sync, toJSVal pname]) >>=
+         toJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.createTransformFeedback Mozilla WebGL2RenderingContext.createTransformFeedback documentation> 
+createTransformFeedback ::
+                        (MonadDOM m) =>
+                          WebGL2RenderingContext -> m (Maybe WebGLTransformFeedback)
+createTransformFeedback self
+  = liftDOM ((self ^. js "createTransformFeedback") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.deleteTransformFeedback Mozilla WebGL2RenderingContext.deleteTransformFeedback documentation> 
+deleteTransformFeedback ::
+                        (MonadDOM m) =>
+                          WebGL2RenderingContext -> Maybe WebGLTransformFeedback -> m ()
+deleteTransformFeedback self id
+  = liftDOM
+      (void (self ^. jsf "deleteTransformFeedback" [toJSVal id]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.isTransformFeedback Mozilla WebGL2RenderingContext.isTransformFeedback documentation> 
+isTransformFeedback ::
+                    (MonadDOM m) =>
+                      WebGL2RenderingContext ->
+                        Maybe WebGLTransformFeedback -> m GLboolean
+isTransformFeedback self id
+  = liftDOM
+      ((self ^. jsf "isTransformFeedback" [toJSVal id]) >>=
+         fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.bindTransformFeedback Mozilla WebGL2RenderingContext.bindTransformFeedback documentation> 
+bindTransformFeedback ::
+                      (MonadDOM m) =>
+                        WebGL2RenderingContext ->
+                          GLenum -> Maybe WebGLTransformFeedback -> m ()
+bindTransformFeedback self target id
+  = liftDOM
+      (void
+         (self ^. jsf "bindTransformFeedback" [toJSVal target, toJSVal id]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.beginTransformFeedback Mozilla WebGL2RenderingContext.beginTransformFeedback documentation> 
+beginTransformFeedback ::
+                       (MonadDOM m) => WebGL2RenderingContext -> GLenum -> m ()
+beginTransformFeedback self primitiveMode
+  = liftDOM
+      (void
+         (self ^. jsf "beginTransformFeedback" [toJSVal primitiveMode]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.endTransformFeedback Mozilla WebGL2RenderingContext.endTransformFeedback documentation> 
+endTransformFeedback ::
+                     (MonadDOM m) => WebGL2RenderingContext -> m ()
+endTransformFeedback self
+  = liftDOM (void (self ^. js "endTransformFeedback"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.transformFeedbackVaryings Mozilla WebGL2RenderingContext.transformFeedbackVaryings documentation> 
+transformFeedbackVaryings ::
+                          (MonadDOM m, ToJSString varyings) =>
+                            WebGL2RenderingContext ->
+                              Maybe WebGLProgram -> [varyings] -> GLenum -> m ()
+transformFeedbackVaryings self program varyings bufferMode
+  = liftDOM
+      (void
+         (self ^. jsf "transformFeedbackVaryings"
+            [toJSVal program, toJSVal (array varyings), toJSVal bufferMode]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getTransformFeedbackVarying Mozilla WebGL2RenderingContext.getTransformFeedbackVarying documentation> 
+getTransformFeedbackVarying ::
+                            (MonadDOM m) =>
+                              WebGL2RenderingContext ->
+                                Maybe WebGLProgram -> GLuint -> m (Maybe WebGLActiveInfo)
+getTransformFeedbackVarying self program index
+  = liftDOM
+      ((self ^. jsf "getTransformFeedbackVarying"
+          [toJSVal program, toJSVal index])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.pauseTransformFeedback Mozilla WebGL2RenderingContext.pauseTransformFeedback documentation> 
+pauseTransformFeedback ::
+                       (MonadDOM m) => WebGL2RenderingContext -> m ()
+pauseTransformFeedback self
+  = liftDOM (void (self ^. js "pauseTransformFeedback"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.resumeTransformFeedback Mozilla WebGL2RenderingContext.resumeTransformFeedback documentation> 
+resumeTransformFeedback ::
+                        (MonadDOM m) => WebGL2RenderingContext -> m ()
+resumeTransformFeedback self
+  = liftDOM (void (self ^. js "resumeTransformFeedback"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.bindBufferBase Mozilla WebGL2RenderingContext.bindBufferBase documentation> 
+bindBufferBase ::
+               (MonadDOM m) =>
+                 WebGL2RenderingContext ->
+                   GLenum -> GLuint -> Maybe WebGLBuffer -> m ()
+bindBufferBase self target index buffer
+  = liftDOM
+      (void
+         (self ^. jsf "bindBufferBase"
+            [toJSVal target, toJSVal index, toJSVal buffer]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.bindBufferRange Mozilla WebGL2RenderingContext.bindBufferRange documentation> 
+bindBufferRange ::
+                (MonadDOM m) =>
+                  WebGL2RenderingContext ->
+                    GLenum ->
+                      GLuint -> Maybe WebGLBuffer -> GLintptr -> GLsizeiptr -> m ()
+bindBufferRange self target index buffer offset size
+  = liftDOM
+      (void
+         (self ^. jsf "bindBufferRange"
+            [toJSVal target, toJSVal index, toJSVal buffer, toJSVal offset,
+             toJSVal size]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getIndexedParameter Mozilla WebGL2RenderingContext.getIndexedParameter documentation> 
+getIndexedParameter ::
+                    (MonadDOM m) =>
+                      WebGL2RenderingContext -> GLenum -> GLuint -> m JSVal
+getIndexedParameter self target index
+  = liftDOM
+      ((self ^. jsf "getIndexedParameter"
+          [toJSVal target, toJSVal index])
+         >>= toJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getUniformIndices Mozilla WebGL2RenderingContext.getUniformIndices documentation> 
+getUniformIndices ::
+                  (MonadDOM m, ToJSString uniformNames) =>
+                    WebGL2RenderingContext ->
+                      Maybe WebGLProgram -> [uniformNames] -> m (Maybe Uint32Array)
+getUniformIndices self program uniformNames
+  = liftDOM
+      ((self ^. jsf "getUniformIndices"
+          [toJSVal program, toJSVal (array uniformNames)])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getActiveUniforms Mozilla WebGL2RenderingContext.getActiveUniforms documentation> 
+getActiveUniforms ::
+                  (MonadDOM m, IsUint32Array uniformIndices) =>
+                    WebGL2RenderingContext ->
+                      Maybe WebGLProgram ->
+                        Maybe uniformIndices -> GLenum -> m (Maybe Int32Array)
+getActiveUniforms self program uniformIndices pname
+  = liftDOM
+      ((self ^. jsf "getActiveUniforms"
+          [toJSVal program, toJSVal uniformIndices, toJSVal pname])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getUniformBlockIndex Mozilla WebGL2RenderingContext.getUniformBlockIndex documentation> 
+getUniformBlockIndex ::
+                     (MonadDOM m, ToJSString uniformBlockName) =>
+                       WebGL2RenderingContext ->
+                         Maybe WebGLProgram -> uniformBlockName -> m GLuint
+getUniformBlockIndex self program uniformBlockName
+  = liftDOM
+      ((self ^. jsf "getUniformBlockIndex"
+          [toJSVal program, toJSVal uniformBlockName])
+         >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getActiveUniformBlockParameter Mozilla WebGL2RenderingContext.getActiveUniformBlockParameter documentation> 
+getActiveUniformBlockParameter ::
+                               (MonadDOM m) =>
+                                 WebGL2RenderingContext ->
+                                   Maybe WebGLProgram -> GLuint -> GLenum -> m JSVal
+getActiveUniformBlockParameter self program uniformBlockIndex pname
+  = liftDOM
+      ((self ^. jsf "getActiveUniformBlockParameter"
+          [toJSVal program, toJSVal uniformBlockIndex, toJSVal pname])
+         >>= toJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getActiveUniformBlockName Mozilla WebGL2RenderingContext.getActiveUniformBlockName documentation> 
+getActiveUniformBlockName ::
+                          (MonadDOM m) =>
+                            WebGL2RenderingContext -> Maybe WebGLProgram -> GLuint -> m JSVal
+getActiveUniformBlockName self program uniformBlockIndex
+  = liftDOM
+      ((self ^. jsf "getActiveUniformBlockName"
+          [toJSVal program, toJSVal uniformBlockIndex])
+         >>= toJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.uniformBlockBinding Mozilla WebGL2RenderingContext.uniformBlockBinding documentation> 
+uniformBlockBinding ::
+                    (MonadDOM m) =>
+                      WebGL2RenderingContext ->
+                        Maybe WebGLProgram -> GLuint -> GLuint -> m ()
+uniformBlockBinding self program uniformBlockIndex
+  uniformBlockBinding
+  = liftDOM
+      (void
+         (self ^. jsf "uniformBlockBinding"
+            [toJSVal program, toJSVal uniformBlockIndex,
+             toJSVal uniformBlockBinding]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.createVertexArray Mozilla WebGL2RenderingContext.createVertexArray documentation> 
+createVertexArray ::
+                  (MonadDOM m) =>
+                    WebGL2RenderingContext -> m (Maybe WebGLVertexArrayObject)
+createVertexArray self
+  = liftDOM ((self ^. js "createVertexArray") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.deleteVertexArray Mozilla WebGL2RenderingContext.deleteVertexArray documentation> 
+deleteVertexArray ::
+                  (MonadDOM m) =>
+                    WebGL2RenderingContext -> Maybe WebGLVertexArrayObject -> m ()
+deleteVertexArray self vertexArray
+  = liftDOM
+      (void (self ^. jsf "deleteVertexArray" [toJSVal vertexArray]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.isVertexArray Mozilla WebGL2RenderingContext.isVertexArray documentation> 
+isVertexArray ::
+              (MonadDOM m) =>
+                WebGL2RenderingContext ->
+                  Maybe WebGLVertexArrayObject -> m GLboolean
+isVertexArray self vertexArray
+  = liftDOM
+      ((self ^. jsf "isVertexArray" [toJSVal vertexArray]) >>=
+         fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.bindVertexArray Mozilla WebGL2RenderingContext.bindVertexArray documentation> 
+bindVertexArray ::
+                (MonadDOM m) =>
+                  WebGL2RenderingContext -> Maybe WebGLVertexArrayObject -> m ()
+bindVertexArray self vertexArray
+  = liftDOM
+      (void (self ^. jsf "bindVertexArray" [toJSVal vertexArray]))
+pattern READ_BUFFER = 3074
+pattern UNPACK_ROW_LENGTH = 3314
+pattern UNPACK_SKIP_ROWS = 3315
+pattern UNPACK_SKIP_PIXELS = 3316
+pattern PACK_ROW_LENGTH = 3330
+pattern PACK_SKIP_ROWS = 3331
+pattern PACK_SKIP_PIXELS = 3332
+pattern COLOR = 6144
+pattern DEPTH = 6145
+pattern STENCIL = 6146
+pattern RED = 6403
+pattern RGB8 = 32849
+pattern RGBA8 = 32856
+pattern RGB10_A2 = 32857
+pattern TEXTURE_BINDING_3D = 32874
+pattern UNPACK_SKIP_IMAGES = 32877
+pattern UNPACK_IMAGE_HEIGHT = 32878
+pattern TEXTURE_3D = 32879
+pattern TEXTURE_WRAP_R = 32882
+pattern MAX_3D_TEXTURE_SIZE = 32883
+pattern UNSIGNED_INT_2_10_10_10_REV = 33640
+pattern MAX_ELEMENTS_VERTICES = 33000
+pattern MAX_ELEMENTS_INDICES = 33001
+pattern TEXTURE_MIN_LOD = 33082
+pattern TEXTURE_MAX_LOD = 33083
+pattern TEXTURE_BASE_LEVEL = 33084
+pattern TEXTURE_MAX_LEVEL = 33085
+pattern MIN = 32775
+pattern MAX = 32776
+pattern DEPTH_COMPONENT24 = 33190
+pattern MAX_TEXTURE_LOD_BIAS = 34045
+pattern TEXTURE_COMPARE_MODE = 34892
+pattern TEXTURE_COMPARE_FUNC = 34893
+pattern CURRENT_QUERY = 34917
+pattern QUERY_RESULT = 34918
+pattern QUERY_RESULT_AVAILABLE = 34919
+pattern STREAM_READ = 35041
+pattern STREAM_COPY = 35042
+pattern STATIC_READ = 35045
+pattern STATIC_COPY = 35046
+pattern DYNAMIC_READ = 35049
+pattern DYNAMIC_COPY = 35050
+pattern MAX_DRAW_BUFFERS = 34852
+pattern DRAW_BUFFER0 = 34853
+pattern DRAW_BUFFER1 = 34854
+pattern DRAW_BUFFER2 = 34855
+pattern DRAW_BUFFER3 = 34856
+pattern DRAW_BUFFER4 = 34857
+pattern DRAW_BUFFER5 = 34858
+pattern DRAW_BUFFER6 = 34859
+pattern DRAW_BUFFER7 = 34860
+pattern DRAW_BUFFER8 = 34861
+pattern DRAW_BUFFER9 = 34862
+pattern DRAW_BUFFER10 = 34863
+pattern DRAW_BUFFER11 = 34864
+pattern DRAW_BUFFER12 = 34865
+pattern DRAW_BUFFER13 = 34866
+pattern DRAW_BUFFER14 = 34867
+pattern DRAW_BUFFER15 = 34868
+pattern MAX_FRAGMENT_UNIFORM_COMPONENTS = 35657
+pattern MAX_VERTEX_UNIFORM_COMPONENTS = 35658
+pattern SAMPLER_3D = 35679
+pattern SAMPLER_2D_SHADOW = 35682
+pattern FRAGMENT_SHADER_DERIVATIVE_HINT = 35723
+pattern PIXEL_PACK_BUFFER = 35051
+pattern PIXEL_UNPACK_BUFFER = 35052
+pattern PIXEL_PACK_BUFFER_BINDING = 35053
+pattern PIXEL_UNPACK_BUFFER_BINDING = 35055
+pattern FLOAT_MAT2x3 = 35685
+pattern FLOAT_MAT2x4 = 35686
+pattern FLOAT_MAT3x2 = 35687
+pattern FLOAT_MAT3x4 = 35688
+pattern FLOAT_MAT4x2 = 35689
+pattern FLOAT_MAT4x3 = 35690
+pattern SRGB = 35904
+pattern SRGB8 = 35905
+pattern SRGB8_ALPHA8 = 35907
+pattern COMPARE_REF_TO_TEXTURE = 34894
+pattern RGBA32F = 34836
+pattern RGB32F = 34837
+pattern RGBA16F = 34842
+pattern RGB16F = 34843
+pattern VERTEX_ATTRIB_ARRAY_INTEGER = 35069
+pattern MAX_ARRAY_TEXTURE_LAYERS = 35071
+pattern MIN_PROGRAM_TEXEL_OFFSET = 35076
+pattern MAX_PROGRAM_TEXEL_OFFSET = 35077
+pattern MAX_VARYING_COMPONENTS = 35659
+pattern TEXTURE_2D_ARRAY = 35866
+pattern TEXTURE_BINDING_2D_ARRAY = 35869
+pattern R11F_G11F_B10F = 35898
+pattern UNSIGNED_INT_10F_11F_11F_REV = 35899
+pattern RGB9_E5 = 35901
+pattern UNSIGNED_INT_5_9_9_9_REV = 35902
+pattern TRANSFORM_FEEDBACK_BUFFER_MODE = 35967
+pattern MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS = 35968
+pattern TRANSFORM_FEEDBACK_VARYINGS = 35971
+pattern TRANSFORM_FEEDBACK_BUFFER_START = 35972
+pattern TRANSFORM_FEEDBACK_BUFFER_SIZE = 35973
+pattern TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN = 35976
+pattern RASTERIZER_DISCARD = 35977
+pattern MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS = 35978
+pattern MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS = 35979
+pattern INTERLEAVED_ATTRIBS = 35980
+pattern SEPARATE_ATTRIBS = 35981
+pattern TRANSFORM_FEEDBACK_BUFFER = 35982
+pattern TRANSFORM_FEEDBACK_BUFFER_BINDING = 35983
+pattern RGBA32UI = 36208
+pattern RGB32UI = 36209
+pattern RGBA16UI = 36214
+pattern RGB16UI = 36215
+pattern RGBA8UI = 36220
+pattern RGB8UI = 36221
+pattern RGBA32I = 36226
+pattern RGB32I = 36227
+pattern RGBA16I = 36232
+pattern RGB16I = 36233
+pattern RGBA8I = 36238
+pattern RGB8I = 36239
+pattern RED_INTEGER = 36244
+pattern RGB_INTEGER = 36248
+pattern RGBA_INTEGER = 36249
+pattern SAMPLER_2D_ARRAY = 36289
+pattern SAMPLER_2D_ARRAY_SHADOW = 36292
+pattern SAMPLER_CUBE_SHADOW = 36293
+pattern UNSIGNED_INT_VEC2 = 36294
+pattern UNSIGNED_INT_VEC3 = 36295
+pattern UNSIGNED_INT_VEC4 = 36296
+pattern INT_SAMPLER_2D = 36298
+pattern INT_SAMPLER_3D = 36299
+pattern INT_SAMPLER_CUBE = 36300
+pattern INT_SAMPLER_2D_ARRAY = 36303
+pattern UNSIGNED_INT_SAMPLER_2D = 36306
+pattern UNSIGNED_INT_SAMPLER_3D = 36307
+pattern UNSIGNED_INT_SAMPLER_CUBE = 36308
+pattern UNSIGNED_INT_SAMPLER_2D_ARRAY = 36311
+pattern DEPTH_COMPONENT32F = 36012
+pattern DEPTH32F_STENCIL8 = 36013
+pattern FLOAT_32_UNSIGNED_INT_24_8_REV = 36269
+pattern FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING = 33296
+pattern FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE = 33297
+pattern FRAMEBUFFER_ATTACHMENT_RED_SIZE = 33298
+pattern FRAMEBUFFER_ATTACHMENT_GREEN_SIZE = 33299
+pattern FRAMEBUFFER_ATTACHMENT_BLUE_SIZE = 33300
+pattern FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE = 33301
+pattern FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE = 33302
+pattern FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE = 33303
+pattern FRAMEBUFFER_DEFAULT = 33304
+pattern DEPTH_STENCIL_ATTACHMENT = 33306
+pattern DEPTH_STENCIL = 34041
+pattern UNSIGNED_INT_24_8 = 34042
+pattern DEPTH24_STENCIL8 = 35056
+pattern UNSIGNED_NORMALIZED = 35863
+pattern DRAW_FRAMEBUFFER_BINDING = 36006
+pattern READ_FRAMEBUFFER = 36008
+pattern DRAW_FRAMEBUFFER = 36009
+pattern READ_FRAMEBUFFER_BINDING = 36010
+pattern RENDERBUFFER_SAMPLES = 36011
+pattern FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER = 36052
+pattern MAX_COLOR_ATTACHMENTS = 36063
+pattern COLOR_ATTACHMENT1 = 36065
+pattern COLOR_ATTACHMENT2 = 36066
+pattern COLOR_ATTACHMENT3 = 36067
+pattern COLOR_ATTACHMENT4 = 36068
+pattern COLOR_ATTACHMENT5 = 36069
+pattern COLOR_ATTACHMENT6 = 36070
+pattern COLOR_ATTACHMENT7 = 36071
+pattern COLOR_ATTACHMENT8 = 36072
+pattern COLOR_ATTACHMENT9 = 36073
+pattern COLOR_ATTACHMENT10 = 36074
+pattern COLOR_ATTACHMENT11 = 36075
+pattern COLOR_ATTACHMENT12 = 36076
+pattern COLOR_ATTACHMENT13 = 36077
+pattern COLOR_ATTACHMENT14 = 36078
+pattern COLOR_ATTACHMENT15 = 36079
+pattern FRAMEBUFFER_INCOMPLETE_MULTISAMPLE = 36182
+pattern MAX_SAMPLES = 36183
+pattern HALF_FLOAT = 5131
+pattern RG = 33319
+pattern RG_INTEGER = 33320
+pattern R8 = 33321
+pattern RG8 = 33323
+pattern R16F = 33325
+pattern R32F = 33326
+pattern RG16F = 33327
+pattern RG32F = 33328
+pattern R8I = 33329
+pattern R8UI = 33330
+pattern R16I = 33331
+pattern R16UI = 33332
+pattern R32I = 33333
+pattern R32UI = 33334
+pattern RG8I = 33335
+pattern RG8UI = 33336
+pattern RG16I = 33337
+pattern RG16UI = 33338
+pattern RG32I = 33339
+pattern RG32UI = 33340
+pattern VERTEX_ARRAY_BINDING = 34229
+pattern R8_SNORM = 36756
+pattern RG8_SNORM = 36757
+pattern RGB8_SNORM = 36758
+pattern RGBA8_SNORM = 36759
+pattern SIGNED_NORMALIZED = 36764
+pattern PRIMITIVE_RESTART_FIXED_INDEX = 36201
+pattern COPY_READ_BUFFER = 36662
+pattern COPY_WRITE_BUFFER = 36663
+pattern COPY_READ_BUFFER_BINDING = 36662
+pattern COPY_WRITE_BUFFER_BINDING = 36663
+pattern UNIFORM_BUFFER = 35345
+pattern UNIFORM_BUFFER_BINDING = 35368
+pattern UNIFORM_BUFFER_START = 35369
+pattern UNIFORM_BUFFER_SIZE = 35370
+pattern MAX_VERTEX_UNIFORM_BLOCKS = 35371
+pattern MAX_FRAGMENT_UNIFORM_BLOCKS = 35373
+pattern MAX_COMBINED_UNIFORM_BLOCKS = 35374
+pattern MAX_UNIFORM_BUFFER_BINDINGS = 35375
+pattern MAX_UNIFORM_BLOCK_SIZE = 35376
+pattern MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS = 35377
+pattern MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS = 35379
+pattern UNIFORM_BUFFER_OFFSET_ALIGNMENT = 35380
+pattern ACTIVE_UNIFORM_BLOCKS = 35382
+pattern UNIFORM_TYPE = 35383
+pattern UNIFORM_SIZE = 35384
+pattern UNIFORM_BLOCK_INDEX = 35386
+pattern UNIFORM_OFFSET = 35387
+pattern UNIFORM_ARRAY_STRIDE = 35388
+pattern UNIFORM_MATRIX_STRIDE = 35389
+pattern UNIFORM_IS_ROW_MAJOR = 35390
+pattern UNIFORM_BLOCK_BINDING = 35391
+pattern UNIFORM_BLOCK_DATA_SIZE = 35392
+pattern UNIFORM_BLOCK_ACTIVE_UNIFORMS = 35394
+pattern UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES = 35395
+pattern UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER = 35396
+pattern UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER = 35398
+pattern INVALID_INDEX = 4294967295
+pattern MAX_VERTEX_OUTPUT_COMPONENTS = 37154
+pattern MAX_FRAGMENT_INPUT_COMPONENTS = 37157
+pattern MAX_SERVER_WAIT_TIMEOUT = 37137
+pattern OBJECT_TYPE = 37138
+pattern SYNC_CONDITION = 37139
+pattern SYNC_STATUS = 37140
+pattern SYNC_FLAGS = 37141
+pattern SYNC_FENCE = 37142
+pattern SYNC_GPU_COMMANDS_COMPLETE = 37143
+pattern UNSIGNALED = 37144
+pattern SIGNALED = 37145
+pattern ALREADY_SIGNALED = 37146
+pattern TIMEOUT_EXPIRED = 37147
+pattern CONDITION_SATISFIED = 37148
+pattern WAIT_FAILED = 37149
+pattern SYNC_FLUSH_COMMANDS_BIT = 1
+pattern VERTEX_ATTRIB_ARRAY_DIVISOR = 35070
+pattern ANY_SAMPLES_PASSED = 35887
+pattern ANY_SAMPLES_PASSED_CONSERVATIVE = 36202
+pattern SAMPLER_BINDING = 35097
+pattern RGB10_A2UI = 36975
+pattern TEXTURE_SWIZZLE_R = 36418
+pattern TEXTURE_SWIZZLE_G = 36419
+pattern TEXTURE_SWIZZLE_B = 36420
+pattern TEXTURE_SWIZZLE_A = 36421
+pattern GREEN = 6404
+pattern BLUE = 6405
+pattern INT_2_10_10_10_REV = 36255
+pattern TRANSFORM_FEEDBACK = 36386
+pattern TRANSFORM_FEEDBACK_PAUSED = 36387
+pattern TRANSFORM_FEEDBACK_ACTIVE = 36388
+pattern TRANSFORM_FEEDBACK_BINDING = 36389
+pattern COMPRESSED_R11_EAC = 37488
+pattern COMPRESSED_SIGNED_R11_EAC = 37489
+pattern COMPRESSED_RG11_EAC = 37490
+pattern COMPRESSED_SIGNED_RG11_EAC = 37491
+pattern COMPRESSED_RGB8_ETC2 = 37492
+pattern COMPRESSED_SRGB8_ETC2 = 37493
+pattern COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 37494
+pattern COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 37495
+pattern COMPRESSED_RGBA8_ETC2_EAC = 37496
+pattern COMPRESSED_SRGB8_ALPHA8_ETC2_EAC = 37497
+pattern TEXTURE_IMMUTABLE_FORMAT = 37167
+pattern MAX_ELEMENT_INDEX = 36203
+pattern NUM_SAMPLE_COUNTS = 37760
+pattern TEXTURE_IMMUTABLE_LEVELS = 33503
+pattern TIMEOUT_IGNORED = 18446744073709551615
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/WebGLActiveInfo.hs b/src/Language/Javascript/JSaddle/DOM/Generated/WebGLActiveInfo.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/WebGLActiveInfo.hs
@@ -0,0 +1,31 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.WebGLActiveInfo
+       (getSize, getType, getName, WebGLActiveInfo, castToWebGLActiveInfo,
+        gTypeWebGLActiveInfo)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLActiveInfo.size Mozilla WebGLActiveInfo.size documentation> 
+getSize :: (MonadDOM m) => WebGLActiveInfo -> m Int
+getSize self
+  = liftDOM (round <$> ((self ^. js "size") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLActiveInfo.type Mozilla WebGLActiveInfo.type documentation> 
+getType :: (MonadDOM m) => WebGLActiveInfo -> m Word
+getType self
+  = liftDOM (round <$> ((self ^. js "type") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLActiveInfo.name Mozilla WebGLActiveInfo.name documentation> 
+getName ::
+        (MonadDOM m, FromJSString result) => WebGLActiveInfo -> m result
+getName self = liftDOM ((self ^. js "name") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/WebGLCompressedTextureATC.hs b/src/Language/Javascript/JSaddle/DOM/Generated/WebGLCompressedTextureATC.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/WebGLCompressedTextureATC.hs
@@ -0,0 +1,22 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.WebGLCompressedTextureATC
+       (pattern COMPRESSED_RGB_ATC_WEBGL,
+        pattern COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL,
+        pattern COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL,
+        WebGLCompressedTextureATC, castToWebGLCompressedTextureATC,
+        gTypeWebGLCompressedTextureATC)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+pattern COMPRESSED_RGB_ATC_WEBGL = 35986
+pattern COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL = 35987
+pattern COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL = 34798
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/WebGLCompressedTexturePVRTC.hs b/src/Language/Javascript/JSaddle/DOM/Generated/WebGLCompressedTexturePVRTC.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/WebGLCompressedTexturePVRTC.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.WebGLCompressedTexturePVRTC
+       (pattern COMPRESSED_RGB_PVRTC_4BPPV1_IMG,
+        pattern COMPRESSED_RGB_PVRTC_2BPPV1_IMG,
+        pattern COMPRESSED_RGBA_PVRTC_4BPPV1_IMG,
+        pattern COMPRESSED_RGBA_PVRTC_2BPPV1_IMG,
+        WebGLCompressedTexturePVRTC, castToWebGLCompressedTexturePVRTC,
+        gTypeWebGLCompressedTexturePVRTC)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+pattern COMPRESSED_RGB_PVRTC_4BPPV1_IMG = 35840
+pattern COMPRESSED_RGB_PVRTC_2BPPV1_IMG = 35841
+pattern COMPRESSED_RGBA_PVRTC_4BPPV1_IMG = 35842
+pattern COMPRESSED_RGBA_PVRTC_2BPPV1_IMG = 35843
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/WebGLCompressedTextureS3TC.hs b/src/Language/Javascript/JSaddle/DOM/Generated/WebGLCompressedTextureS3TC.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/WebGLCompressedTextureS3TC.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.WebGLCompressedTextureS3TC
+       (pattern COMPRESSED_RGB_S3TC_DXT1_EXT,
+        pattern COMPRESSED_RGBA_S3TC_DXT1_EXT,
+        pattern COMPRESSED_RGBA_S3TC_DXT3_EXT,
+        pattern COMPRESSED_RGBA_S3TC_DXT5_EXT, WebGLCompressedTextureS3TC,
+        castToWebGLCompressedTextureS3TC, gTypeWebGLCompressedTextureS3TC)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+pattern COMPRESSED_RGB_S3TC_DXT1_EXT = 33776
+pattern COMPRESSED_RGBA_S3TC_DXT1_EXT = 33777
+pattern COMPRESSED_RGBA_S3TC_DXT3_EXT = 33778
+pattern COMPRESSED_RGBA_S3TC_DXT5_EXT = 33779
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/WebGLContextAttributes.hs b/src/Language/Javascript/JSaddle/DOM/Generated/WebGLContextAttributes.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/WebGLContextAttributes.hs
@@ -0,0 +1,79 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.WebGLContextAttributes
+       (setAlpha, getAlpha, setDepth, getDepth, setStencil, getStencil,
+        setAntialias, getAntialias, setPremultipliedAlpha,
+        getPremultipliedAlpha, setPreserveDrawingBuffer,
+        getPreserveDrawingBuffer, WebGLContextAttributes,
+        castToWebGLContextAttributes, gTypeWebGLContextAttributes)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLContextAttributes.alpha Mozilla WebGLContextAttributes.alpha documentation> 
+setAlpha :: (MonadDOM m) => WebGLContextAttributes -> Bool -> m ()
+setAlpha self val = liftDOM (self ^. jss "alpha" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLContextAttributes.alpha Mozilla WebGLContextAttributes.alpha documentation> 
+getAlpha :: (MonadDOM m) => WebGLContextAttributes -> m Bool
+getAlpha self = liftDOM ((self ^. js "alpha") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLContextAttributes.depth Mozilla WebGLContextAttributes.depth documentation> 
+setDepth :: (MonadDOM m) => WebGLContextAttributes -> Bool -> m ()
+setDepth self val = liftDOM (self ^. jss "depth" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLContextAttributes.depth Mozilla WebGLContextAttributes.depth documentation> 
+getDepth :: (MonadDOM m) => WebGLContextAttributes -> m Bool
+getDepth self = liftDOM ((self ^. js "depth") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLContextAttributes.stencil Mozilla WebGLContextAttributes.stencil documentation> 
+setStencil ::
+           (MonadDOM m) => WebGLContextAttributes -> Bool -> m ()
+setStencil self val = liftDOM (self ^. jss "stencil" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLContextAttributes.stencil Mozilla WebGLContextAttributes.stencil documentation> 
+getStencil :: (MonadDOM m) => WebGLContextAttributes -> m Bool
+getStencil self = liftDOM ((self ^. js "stencil") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLContextAttributes.antialias Mozilla WebGLContextAttributes.antialias documentation> 
+setAntialias ::
+             (MonadDOM m) => WebGLContextAttributes -> Bool -> m ()
+setAntialias self val
+  = liftDOM (self ^. jss "antialias" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLContextAttributes.antialias Mozilla WebGLContextAttributes.antialias documentation> 
+getAntialias :: (MonadDOM m) => WebGLContextAttributes -> m Bool
+getAntialias self
+  = liftDOM ((self ^. js "antialias") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLContextAttributes.premultipliedAlpha Mozilla WebGLContextAttributes.premultipliedAlpha documentation> 
+setPremultipliedAlpha ::
+                      (MonadDOM m) => WebGLContextAttributes -> Bool -> m ()
+setPremultipliedAlpha self val
+  = liftDOM (self ^. jss "premultipliedAlpha" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLContextAttributes.premultipliedAlpha Mozilla WebGLContextAttributes.premultipliedAlpha documentation> 
+getPremultipliedAlpha ::
+                      (MonadDOM m) => WebGLContextAttributes -> m Bool
+getPremultipliedAlpha self
+  = liftDOM ((self ^. js "premultipliedAlpha") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLContextAttributes.preserveDrawingBuffer Mozilla WebGLContextAttributes.preserveDrawingBuffer documentation> 
+setPreserveDrawingBuffer ::
+                         (MonadDOM m) => WebGLContextAttributes -> Bool -> m ()
+setPreserveDrawingBuffer self val
+  = liftDOM (self ^. jss "preserveDrawingBuffer" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLContextAttributes.preserveDrawingBuffer Mozilla WebGLContextAttributes.preserveDrawingBuffer documentation> 
+getPreserveDrawingBuffer ::
+                         (MonadDOM m) => WebGLContextAttributes -> m Bool
+getPreserveDrawingBuffer self
+  = liftDOM ((self ^. js "preserveDrawingBuffer") >>= valToBool)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/WebGLContextEvent.hs b/src/Language/Javascript/JSaddle/DOM/Generated/WebGLContextEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/WebGLContextEvent.hs
@@ -0,0 +1,22 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.WebGLContextEvent
+       (getStatusMessage, WebGLContextEvent, castToWebGLContextEvent,
+        gTypeWebGLContextEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLContextEvent.statusMessage Mozilla WebGLContextEvent.statusMessage documentation> 
+getStatusMessage ::
+                 (MonadDOM m, FromJSString result) => WebGLContextEvent -> m result
+getStatusMessage self
+  = liftDOM ((self ^. js "statusMessage") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/WebGLDebugRendererInfo.hs b/src/Language/Javascript/JSaddle/DOM/Generated/WebGLDebugRendererInfo.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/WebGLDebugRendererInfo.hs
@@ -0,0 +1,19 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.WebGLDebugRendererInfo
+       (pattern UNMASKED_VENDOR_WEBGL, pattern UNMASKED_RENDERER_WEBGL,
+        WebGLDebugRendererInfo, castToWebGLDebugRendererInfo,
+        gTypeWebGLDebugRendererInfo)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+pattern UNMASKED_VENDOR_WEBGL = 37445
+pattern UNMASKED_RENDERER_WEBGL = 37446
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/WebGLDebugShaders.hs b/src/Language/Javascript/JSaddle/DOM/Generated/WebGLDebugShaders.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/WebGLDebugShaders.hs
@@ -0,0 +1,25 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.WebGLDebugShaders
+       (getTranslatedShaderSource, WebGLDebugShaders,
+        castToWebGLDebugShaders, gTypeWebGLDebugShaders)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLDebugShaders.getTranslatedShaderSource Mozilla WebGLDebugShaders.getTranslatedShaderSource documentation> 
+getTranslatedShaderSource ::
+                          (MonadDOM m, FromJSString result) =>
+                            WebGLDebugShaders -> Maybe WebGLShader -> m (Maybe result)
+getTranslatedShaderSource self shader
+  = liftDOM
+      ((self ^. jsf "getTranslatedShaderSource" [toJSVal shader]) >>=
+         fromMaybeJSString)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/WebGLDepthTexture.hs b/src/Language/Javascript/JSaddle/DOM/Generated/WebGLDepthTexture.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/WebGLDepthTexture.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.WebGLDepthTexture
+       (pattern UNSIGNED_INT_24_8_WEBGL, WebGLDepthTexture,
+        castToWebGLDepthTexture, gTypeWebGLDepthTexture)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+pattern UNSIGNED_INT_24_8_WEBGL = 34042
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/WebGLDrawBuffers.hs b/src/Language/Javascript/JSaddle/DOM/Generated/WebGLDrawBuffers.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/WebGLDrawBuffers.hs
@@ -0,0 +1,74 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.WebGLDrawBuffers
+       (drawBuffersWEBGL, pattern COLOR_ATTACHMENT0_WEBGL,
+        pattern COLOR_ATTACHMENT1_WEBGL, pattern COLOR_ATTACHMENT2_WEBGL,
+        pattern COLOR_ATTACHMENT3_WEBGL, pattern COLOR_ATTACHMENT4_WEBGL,
+        pattern COLOR_ATTACHMENT5_WEBGL, pattern COLOR_ATTACHMENT6_WEBGL,
+        pattern COLOR_ATTACHMENT7_WEBGL, pattern COLOR_ATTACHMENT8_WEBGL,
+        pattern COLOR_ATTACHMENT9_WEBGL, pattern COLOR_ATTACHMENT10_WEBGL,
+        pattern COLOR_ATTACHMENT11_WEBGL, pattern COLOR_ATTACHMENT12_WEBGL,
+        pattern COLOR_ATTACHMENT13_WEBGL, pattern COLOR_ATTACHMENT14_WEBGL,
+        pattern COLOR_ATTACHMENT15_WEBGL, pattern DRAW_BUFFER0_WEBGL,
+        pattern DRAW_BUFFER1_WEBGL, pattern DRAW_BUFFER2_WEBGL,
+        pattern DRAW_BUFFER3_WEBGL, pattern DRAW_BUFFER4_WEBGL,
+        pattern DRAW_BUFFER5_WEBGL, pattern DRAW_BUFFER6_WEBGL,
+        pattern DRAW_BUFFER7_WEBGL, pattern DRAW_BUFFER8_WEBGL,
+        pattern DRAW_BUFFER9_WEBGL, pattern DRAW_BUFFER10_WEBGL,
+        pattern DRAW_BUFFER11_WEBGL, pattern DRAW_BUFFER12_WEBGL,
+        pattern DRAW_BUFFER13_WEBGL, pattern DRAW_BUFFER14_WEBGL,
+        pattern DRAW_BUFFER15_WEBGL, pattern MAX_COLOR_ATTACHMENTS_WEBGL,
+        pattern MAX_DRAW_BUFFERS_WEBGL, WebGLDrawBuffers,
+        castToWebGLDrawBuffers, gTypeWebGLDrawBuffers)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLDrawBuffers.drawBuffersWEBGL Mozilla WebGLDrawBuffers.drawBuffersWEBGL documentation> 
+drawBuffersWEBGL ::
+                 (MonadDOM m) => WebGLDrawBuffers -> [GLenum] -> m ()
+drawBuffersWEBGL self buffers
+  = liftDOM
+      (void (self ^. jsf "drawBuffersWEBGL" [toJSVal (array buffers)]))
+pattern COLOR_ATTACHMENT0_WEBGL = 36064
+pattern COLOR_ATTACHMENT1_WEBGL = 36065
+pattern COLOR_ATTACHMENT2_WEBGL = 36066
+pattern COLOR_ATTACHMENT3_WEBGL = 36067
+pattern COLOR_ATTACHMENT4_WEBGL = 36068
+pattern COLOR_ATTACHMENT5_WEBGL = 36069
+pattern COLOR_ATTACHMENT6_WEBGL = 36070
+pattern COLOR_ATTACHMENT7_WEBGL = 36071
+pattern COLOR_ATTACHMENT8_WEBGL = 36072
+pattern COLOR_ATTACHMENT9_WEBGL = 36073
+pattern COLOR_ATTACHMENT10_WEBGL = 36074
+pattern COLOR_ATTACHMENT11_WEBGL = 36075
+pattern COLOR_ATTACHMENT12_WEBGL = 36076
+pattern COLOR_ATTACHMENT13_WEBGL = 36077
+pattern COLOR_ATTACHMENT14_WEBGL = 36078
+pattern COLOR_ATTACHMENT15_WEBGL = 36079
+pattern DRAW_BUFFER0_WEBGL = 34853
+pattern DRAW_BUFFER1_WEBGL = 34854
+pattern DRAW_BUFFER2_WEBGL = 34855
+pattern DRAW_BUFFER3_WEBGL = 34856
+pattern DRAW_BUFFER4_WEBGL = 34857
+pattern DRAW_BUFFER5_WEBGL = 34858
+pattern DRAW_BUFFER6_WEBGL = 34859
+pattern DRAW_BUFFER7_WEBGL = 34860
+pattern DRAW_BUFFER8_WEBGL = 34861
+pattern DRAW_BUFFER9_WEBGL = 34862
+pattern DRAW_BUFFER10_WEBGL = 34863
+pattern DRAW_BUFFER11_WEBGL = 34864
+pattern DRAW_BUFFER12_WEBGL = 34865
+pattern DRAW_BUFFER13_WEBGL = 34866
+pattern DRAW_BUFFER14_WEBGL = 34867
+pattern DRAW_BUFFER15_WEBGL = 34868
+pattern MAX_COLOR_ATTACHMENTS_WEBGL = 36063
+pattern MAX_DRAW_BUFFERS_WEBGL = 34852
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/WebGLLoseContext.hs b/src/Language/Javascript/JSaddle/DOM/Generated/WebGLLoseContext.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/WebGLLoseContext.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.WebGLLoseContext
+       (loseContext, restoreContext, WebGLLoseContext,
+        castToWebGLLoseContext, gTypeWebGLLoseContext)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLLoseContext.loseContext Mozilla WebGLLoseContext.loseContext documentation> 
+loseContext :: (MonadDOM m) => WebGLLoseContext -> m ()
+loseContext self = liftDOM (void (self ^. js "loseContext"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLLoseContext.restoreContext Mozilla WebGLLoseContext.restoreContext documentation> 
+restoreContext :: (MonadDOM m) => WebGLLoseContext -> m ()
+restoreContext self = liftDOM (void (self ^. js "restoreContext"))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/WebGLRenderingContextBase.hs b/src/Language/Javascript/JSaddle/DOM/Generated/WebGLRenderingContextBase.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/WebGLRenderingContextBase.hs
@@ -0,0 +1,2093 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.WebGLRenderingContextBase
+       (activeTexture, attachShader, bindAttribLocation, bindBuffer,
+        bindFramebuffer, bindRenderbuffer, bindTexture, blendColor,
+        blendEquation, blendEquationSeparate, blendFunc, blendFuncSeparate,
+        bufferData, bufferDataView, bufferDataPtr, bufferSubData,
+        bufferSubDataView, checkFramebufferStatus, clear, clearColor,
+        clearDepth, clearStencil, colorMask, compileShader,
+        compressedTexImage2D, compressedTexSubImage2D, copyTexImage2D,
+        copyTexSubImage2D, createBuffer, createFramebuffer, createProgram,
+        createRenderbuffer, createShader, createTexture, cullFace,
+        deleteBuffer, deleteFramebuffer, deleteProgram, deleteRenderbuffer,
+        deleteShader, deleteTexture, depthFunc, depthMask, depthRange,
+        detachShader, disable, disableVertexAttribArray, drawArrays,
+        drawElements, enable, enableVertexAttribArray, finish, flush,
+        framebufferRenderbuffer, framebufferTexture2D, frontFace,
+        generateMipmap, getActiveAttrib, getActiveUniform,
+        getAttachedShaders, getAttribLocation, getBufferParameter,
+        getContextAttributes, getError, getExtension,
+        getFramebufferAttachmentParameter, getParameter,
+        getProgramParameter, getProgramInfoLog, getRenderbufferParameter,
+        getShaderParameter, getShaderInfoLog, getShaderPrecisionFormat,
+        getShaderSource, getSupportedExtensions, getTexParameter,
+        getUniform, getUniformLocation, getVertexAttrib,
+        getVertexAttribOffset, hint, isBuffer, isContextLost, isEnabled,
+        isFramebuffer, isProgram, isRenderbuffer, isShader, isTexture,
+        lineWidth, linkProgram, pixelStorei, polygonOffset, readPixels,
+        releaseShaderCompiler, renderbufferStorage, sampleCoverage,
+        scissor, shaderSource, stencilFunc, stencilFuncSeparate,
+        stencilMask, stencilMaskSeparate, stencilOp, stencilOpSeparate,
+        texParameterf, texParameteri, texImage2DView, texImage2DData,
+        texImage2D, texImage2DCanvas, texImage2DVideo, texSubImage2DView,
+        texSubImage2DData, texSubImage2D, texSubImage2DCanvas,
+        texSubImage2DVideo, uniform1f, uniform1fv, uniform1i, uniform1iv,
+        uniform2f, uniform2fv, uniform2i, uniform2iv, uniform3f,
+        uniform3fv, uniform3i, uniform3iv, uniform4f, uniform4fv,
+        uniform4i, uniform4iv, uniformMatrix2fv, uniformMatrix3fv,
+        uniformMatrix4fv, useProgram, validateProgram, vertexAttrib1f,
+        vertexAttrib1fv, vertexAttrib2f, vertexAttrib2fv, vertexAttrib3f,
+        vertexAttrib3fv, vertexAttrib4f, vertexAttrib4fv,
+        vertexAttribPointer, viewport, pattern DEPTH_BUFFER_BIT,
+        pattern STENCIL_BUFFER_BIT, pattern COLOR_BUFFER_BIT,
+        pattern POINTS, pattern LINES, pattern LINE_LOOP,
+        pattern LINE_STRIP, pattern TRIANGLES, pattern TRIANGLE_STRIP,
+        pattern TRIANGLE_FAN, pattern ZERO, pattern ONE, pattern SRC_COLOR,
+        pattern ONE_MINUS_SRC_COLOR, pattern SRC_ALPHA,
+        pattern ONE_MINUS_SRC_ALPHA, pattern DST_ALPHA,
+        pattern ONE_MINUS_DST_ALPHA, pattern DST_COLOR,
+        pattern ONE_MINUS_DST_COLOR, pattern SRC_ALPHA_SATURATE,
+        pattern FUNC_ADD, pattern BLEND_EQUATION,
+        pattern BLEND_EQUATION_RGB, pattern BLEND_EQUATION_ALPHA,
+        pattern FUNC_SUBTRACT, pattern FUNC_REVERSE_SUBTRACT,
+        pattern BLEND_DST_RGB, pattern BLEND_SRC_RGB,
+        pattern BLEND_DST_ALPHA, pattern BLEND_SRC_ALPHA,
+        pattern CONSTANT_COLOR, pattern ONE_MINUS_CONSTANT_COLOR,
+        pattern CONSTANT_ALPHA, pattern ONE_MINUS_CONSTANT_ALPHA,
+        pattern BLEND_COLOR, pattern ARRAY_BUFFER,
+        pattern ELEMENT_ARRAY_BUFFER, pattern ARRAY_BUFFER_BINDING,
+        pattern ELEMENT_ARRAY_BUFFER_BINDING, pattern STREAM_DRAW,
+        pattern STATIC_DRAW, pattern DYNAMIC_DRAW, pattern BUFFER_SIZE,
+        pattern BUFFER_USAGE, pattern CURRENT_VERTEX_ATTRIB, pattern FRONT,
+        pattern BACK, pattern FRONT_AND_BACK, pattern TEXTURE_2D,
+        pattern CULL_FACE, pattern BLEND, pattern DITHER,
+        pattern STENCIL_TEST, pattern DEPTH_TEST, pattern SCISSOR_TEST,
+        pattern POLYGON_OFFSET_FILL, pattern SAMPLE_ALPHA_TO_COVERAGE,
+        pattern SAMPLE_COVERAGE, pattern NO_ERROR, pattern INVALID_ENUM,
+        pattern INVALID_VALUE, pattern INVALID_OPERATION,
+        pattern OUT_OF_MEMORY, pattern CW, pattern CCW, pattern LINE_WIDTH,
+        pattern ALIASED_POINT_SIZE_RANGE, pattern ALIASED_LINE_WIDTH_RANGE,
+        pattern CULL_FACE_MODE, pattern FRONT_FACE, pattern DEPTH_RANGE,
+        pattern DEPTH_WRITEMASK, pattern DEPTH_CLEAR_VALUE,
+        pattern DEPTH_FUNC, pattern STENCIL_CLEAR_VALUE,
+        pattern STENCIL_FUNC, pattern STENCIL_FAIL,
+        pattern STENCIL_PASS_DEPTH_FAIL, pattern STENCIL_PASS_DEPTH_PASS,
+        pattern STENCIL_REF, pattern STENCIL_VALUE_MASK,
+        pattern STENCIL_WRITEMASK, pattern STENCIL_BACK_FUNC,
+        pattern STENCIL_BACK_FAIL, pattern STENCIL_BACK_PASS_DEPTH_FAIL,
+        pattern STENCIL_BACK_PASS_DEPTH_PASS, pattern STENCIL_BACK_REF,
+        pattern STENCIL_BACK_VALUE_MASK, pattern STENCIL_BACK_WRITEMASK,
+        pattern VIEWPORT, pattern SCISSOR_BOX, pattern COLOR_CLEAR_VALUE,
+        pattern COLOR_WRITEMASK, pattern UNPACK_ALIGNMENT,
+        pattern PACK_ALIGNMENT, pattern MAX_TEXTURE_SIZE,
+        pattern MAX_VIEWPORT_DIMS, pattern SUBPIXEL_BITS, pattern RED_BITS,
+        pattern GREEN_BITS, pattern BLUE_BITS, pattern ALPHA_BITS,
+        pattern DEPTH_BITS, pattern STENCIL_BITS,
+        pattern POLYGON_OFFSET_UNITS, pattern POLYGON_OFFSET_FACTOR,
+        pattern TEXTURE_BINDING_2D, pattern SAMPLE_BUFFERS,
+        pattern SAMPLES, pattern SAMPLE_COVERAGE_VALUE,
+        pattern SAMPLE_COVERAGE_INVERT, pattern COMPRESSED_TEXTURE_FORMATS,
+        pattern DONT_CARE, pattern FASTEST, pattern NICEST,
+        pattern GENERATE_MIPMAP_HINT, pattern BYTE, pattern UNSIGNED_BYTE,
+        pattern SHORT, pattern UNSIGNED_SHORT, pattern INT,
+        pattern UNSIGNED_INT, pattern FLOAT, pattern DEPTH_COMPONENT,
+        pattern ALPHA, pattern RGB, pattern RGBA, pattern LUMINANCE,
+        pattern LUMINANCE_ALPHA, pattern UNSIGNED_SHORT_4_4_4_4,
+        pattern UNSIGNED_SHORT_5_5_5_1, pattern UNSIGNED_SHORT_5_6_5,
+        pattern FRAGMENT_SHADER, pattern VERTEX_SHADER,
+        pattern MAX_VERTEX_ATTRIBS, pattern MAX_VERTEX_UNIFORM_VECTORS,
+        pattern MAX_VARYING_VECTORS,
+        pattern MAX_COMBINED_TEXTURE_IMAGE_UNITS,
+        pattern MAX_VERTEX_TEXTURE_IMAGE_UNITS,
+        pattern MAX_TEXTURE_IMAGE_UNITS,
+        pattern MAX_FRAGMENT_UNIFORM_VECTORS, pattern SHADER_TYPE,
+        pattern DELETE_STATUS, pattern LINK_STATUS,
+        pattern VALIDATE_STATUS, pattern ATTACHED_SHADERS,
+        pattern ACTIVE_UNIFORMS, pattern ACTIVE_ATTRIBUTES,
+        pattern SHADING_LANGUAGE_VERSION, pattern CURRENT_PROGRAM,
+        pattern NEVER, pattern LESS, pattern EQUAL, pattern LEQUAL,
+        pattern GREATER, pattern NOTEQUAL, pattern GEQUAL, pattern ALWAYS,
+        pattern KEEP, pattern REPLACE, pattern INCR, pattern DECR,
+        pattern INVERT, pattern INCR_WRAP, pattern DECR_WRAP,
+        pattern VENDOR, pattern RENDERER, pattern VERSION, pattern NEAREST,
+        pattern LINEAR, pattern NEAREST_MIPMAP_NEAREST,
+        pattern LINEAR_MIPMAP_NEAREST, pattern NEAREST_MIPMAP_LINEAR,
+        pattern LINEAR_MIPMAP_LINEAR, pattern TEXTURE_MAG_FILTER,
+        pattern TEXTURE_MIN_FILTER, pattern TEXTURE_WRAP_S,
+        pattern TEXTURE_WRAP_T, pattern TEXTURE, pattern TEXTURE_CUBE_MAP,
+        pattern TEXTURE_BINDING_CUBE_MAP,
+        pattern TEXTURE_CUBE_MAP_POSITIVE_X,
+        pattern TEXTURE_CUBE_MAP_NEGATIVE_X,
+        pattern TEXTURE_CUBE_MAP_POSITIVE_Y,
+        pattern TEXTURE_CUBE_MAP_NEGATIVE_Y,
+        pattern TEXTURE_CUBE_MAP_POSITIVE_Z,
+        pattern TEXTURE_CUBE_MAP_NEGATIVE_Z,
+        pattern MAX_CUBE_MAP_TEXTURE_SIZE, pattern TEXTURE0,
+        pattern TEXTURE1, pattern TEXTURE2, pattern TEXTURE3,
+        pattern TEXTURE4, pattern TEXTURE5, pattern TEXTURE6,
+        pattern TEXTURE7, pattern TEXTURE8, pattern TEXTURE9,
+        pattern TEXTURE10, pattern TEXTURE11, pattern TEXTURE12,
+        pattern TEXTURE13, pattern TEXTURE14, pattern TEXTURE15,
+        pattern TEXTURE16, pattern TEXTURE17, pattern TEXTURE18,
+        pattern TEXTURE19, pattern TEXTURE20, pattern TEXTURE21,
+        pattern TEXTURE22, pattern TEXTURE23, pattern TEXTURE24,
+        pattern TEXTURE25, pattern TEXTURE26, pattern TEXTURE27,
+        pattern TEXTURE28, pattern TEXTURE29, pattern TEXTURE30,
+        pattern TEXTURE31, pattern ACTIVE_TEXTURE, pattern REPEAT,
+        pattern CLAMP_TO_EDGE, pattern MIRRORED_REPEAT, pattern FLOAT_VEC2,
+        pattern FLOAT_VEC3, pattern FLOAT_VEC4, pattern INT_VEC2,
+        pattern INT_VEC3, pattern INT_VEC4, pattern BOOL,
+        pattern BOOL_VEC2, pattern BOOL_VEC3, pattern BOOL_VEC4,
+        pattern FLOAT_MAT2, pattern FLOAT_MAT3, pattern FLOAT_MAT4,
+        pattern SAMPLER_2D, pattern SAMPLER_CUBE,
+        pattern VERTEX_ATTRIB_ARRAY_ENABLED,
+        pattern VERTEX_ATTRIB_ARRAY_SIZE,
+        pattern VERTEX_ATTRIB_ARRAY_STRIDE,
+        pattern VERTEX_ATTRIB_ARRAY_TYPE,
+        pattern VERTEX_ATTRIB_ARRAY_NORMALIZED,
+        pattern VERTEX_ATTRIB_ARRAY_POINTER,
+        pattern VERTEX_ATTRIB_ARRAY_BUFFER_BINDING,
+        pattern IMPLEMENTATION_COLOR_READ_TYPE,
+        pattern IMPLEMENTATION_COLOR_READ_FORMAT, pattern COMPILE_STATUS,
+        pattern LOW_FLOAT, pattern MEDIUM_FLOAT, pattern HIGH_FLOAT,
+        pattern LOW_INT, pattern MEDIUM_INT, pattern HIGH_INT,
+        pattern FRAMEBUFFER, pattern RENDERBUFFER, pattern RGBA4,
+        pattern RGB5_A1, pattern RGB565, pattern DEPTH_COMPONENT16,
+        pattern STENCIL_INDEX, pattern STENCIL_INDEX8,
+        pattern DEPTH_STENCIL, pattern RENDERBUFFER_WIDTH,
+        pattern RENDERBUFFER_HEIGHT, pattern RENDERBUFFER_INTERNAL_FORMAT,
+        pattern RENDERBUFFER_RED_SIZE, pattern RENDERBUFFER_GREEN_SIZE,
+        pattern RENDERBUFFER_BLUE_SIZE, pattern RENDERBUFFER_ALPHA_SIZE,
+        pattern RENDERBUFFER_DEPTH_SIZE, pattern RENDERBUFFER_STENCIL_SIZE,
+        pattern FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE,
+        pattern FRAMEBUFFER_ATTACHMENT_OBJECT_NAME,
+        pattern FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL,
+        pattern FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE,
+        pattern COLOR_ATTACHMENT0, pattern DEPTH_ATTACHMENT,
+        pattern STENCIL_ATTACHMENT, pattern DEPTH_STENCIL_ATTACHMENT,
+        pattern NONE, pattern FRAMEBUFFER_COMPLETE,
+        pattern FRAMEBUFFER_INCOMPLETE_ATTACHMENT,
+        pattern FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT,
+        pattern FRAMEBUFFER_INCOMPLETE_DIMENSIONS,
+        pattern FRAMEBUFFER_UNSUPPORTED, pattern FRAMEBUFFER_BINDING,
+        pattern RENDERBUFFER_BINDING, pattern MAX_RENDERBUFFER_SIZE,
+        pattern INVALID_FRAMEBUFFER_OPERATION, pattern UNPACK_FLIP_Y_WEBGL,
+        pattern UNPACK_PREMULTIPLY_ALPHA_WEBGL, pattern CONTEXT_LOST_WEBGL,
+        pattern UNPACK_COLORSPACE_CONVERSION_WEBGL,
+        pattern BROWSER_DEFAULT_WEBGL, getDrawingBufferWidth,
+        getDrawingBufferHeight, WebGLRenderingContextBase,
+        castToWebGLRenderingContextBase, gTypeWebGLRenderingContextBase,
+        IsWebGLRenderingContextBase, toWebGLRenderingContextBase)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.activeTexture Mozilla WebGLRenderingContextBase.activeTexture documentation> 
+activeTexture ::
+              (MonadDOM m, IsWebGLRenderingContextBase self) =>
+                self -> GLenum -> m ()
+activeTexture self texture
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "activeTexture"
+            [toJSVal texture]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.attachShader Mozilla WebGLRenderingContextBase.attachShader documentation> 
+attachShader ::
+             (MonadDOM m, IsWebGLRenderingContextBase self) =>
+               self -> Maybe WebGLProgram -> Maybe WebGLShader -> m ()
+attachShader self program shader
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "attachShader"
+            [toJSVal program, toJSVal shader]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.bindAttribLocation Mozilla WebGLRenderingContextBase.bindAttribLocation documentation> 
+bindAttribLocation ::
+                   (MonadDOM m, IsWebGLRenderingContextBase self, ToJSString name) =>
+                     self -> Maybe WebGLProgram -> GLuint -> name -> m ()
+bindAttribLocation self program index name
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "bindAttribLocation"
+            [toJSVal program, toJSVal index, toJSVal name]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.bindBuffer Mozilla WebGLRenderingContextBase.bindBuffer documentation> 
+bindBuffer ::
+           (MonadDOM m, IsWebGLRenderingContextBase self) =>
+             self -> GLenum -> Maybe WebGLBuffer -> m ()
+bindBuffer self target buffer
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "bindBuffer"
+            [toJSVal target, toJSVal buffer]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.bindFramebuffer Mozilla WebGLRenderingContextBase.bindFramebuffer documentation> 
+bindFramebuffer ::
+                (MonadDOM m, IsWebGLRenderingContextBase self) =>
+                  self -> GLenum -> Maybe WebGLFramebuffer -> m ()
+bindFramebuffer self target framebuffer
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "bindFramebuffer"
+            [toJSVal target, toJSVal framebuffer]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.bindRenderbuffer Mozilla WebGLRenderingContextBase.bindRenderbuffer documentation> 
+bindRenderbuffer ::
+                 (MonadDOM m, IsWebGLRenderingContextBase self) =>
+                   self -> GLenum -> Maybe WebGLRenderbuffer -> m ()
+bindRenderbuffer self target renderbuffer
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "bindRenderbuffer"
+            [toJSVal target, toJSVal renderbuffer]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.bindTexture Mozilla WebGLRenderingContextBase.bindTexture documentation> 
+bindTexture ::
+            (MonadDOM m, IsWebGLRenderingContextBase self) =>
+              self -> GLenum -> Maybe WebGLTexture -> m ()
+bindTexture self target texture
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "bindTexture"
+            [toJSVal target, toJSVal texture]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.blendColor Mozilla WebGLRenderingContextBase.blendColor documentation> 
+blendColor ::
+           (MonadDOM m, IsWebGLRenderingContextBase self) =>
+             self -> GLclampf -> GLclampf -> GLclampf -> GLclampf -> m ()
+blendColor self red green blue alpha
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "blendColor"
+            [toJSVal red, toJSVal green, toJSVal blue, toJSVal alpha]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.blendEquation Mozilla WebGLRenderingContextBase.blendEquation documentation> 
+blendEquation ::
+              (MonadDOM m, IsWebGLRenderingContextBase self) =>
+                self -> GLenum -> m ()
+blendEquation self mode
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "blendEquation"
+            [toJSVal mode]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.blendEquationSeparate Mozilla WebGLRenderingContextBase.blendEquationSeparate documentation> 
+blendEquationSeparate ::
+                      (MonadDOM m, IsWebGLRenderingContextBase self) =>
+                        self -> GLenum -> GLenum -> m ()
+blendEquationSeparate self modeRGB modeAlpha
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "blendEquationSeparate"
+            [toJSVal modeRGB, toJSVal modeAlpha]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.blendFunc Mozilla WebGLRenderingContextBase.blendFunc documentation> 
+blendFunc ::
+          (MonadDOM m, IsWebGLRenderingContextBase self) =>
+            self -> GLenum -> GLenum -> m ()
+blendFunc self sfactor dfactor
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "blendFunc"
+            [toJSVal sfactor, toJSVal dfactor]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.blendFuncSeparate Mozilla WebGLRenderingContextBase.blendFuncSeparate documentation> 
+blendFuncSeparate ::
+                  (MonadDOM m, IsWebGLRenderingContextBase self) =>
+                    self -> GLenum -> GLenum -> GLenum -> GLenum -> m ()
+blendFuncSeparate self srcRGB dstRGB srcAlpha dstAlpha
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "blendFuncSeparate"
+            [toJSVal srcRGB, toJSVal dstRGB, toJSVal srcAlpha,
+             toJSVal dstAlpha]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.bufferData Mozilla WebGLRenderingContextBase.bufferData documentation> 
+bufferData ::
+           (MonadDOM m, IsWebGLRenderingContextBase self,
+            IsArrayBuffer data') =>
+             self -> GLenum -> Maybe data' -> GLenum -> m ()
+bufferData self target data' usage
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "bufferData"
+            [toJSVal target, toJSVal data', toJSVal usage]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.bufferData Mozilla WebGLRenderingContextBase.bufferData documentation> 
+bufferDataView ::
+               (MonadDOM m, IsWebGLRenderingContextBase self,
+                IsArrayBufferView data') =>
+                 self -> GLenum -> Maybe data' -> GLenum -> m ()
+bufferDataView self target data' usage
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "bufferData"
+            [toJSVal target, toJSVal data', toJSVal usage]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.bufferData Mozilla WebGLRenderingContextBase.bufferData documentation> 
+bufferDataPtr ::
+              (MonadDOM m, IsWebGLRenderingContextBase self) =>
+                self -> GLenum -> GLsizeiptr -> GLenum -> m ()
+bufferDataPtr self target size usage
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "bufferData"
+            [toJSVal target, toJSVal size, toJSVal usage]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.bufferSubData Mozilla WebGLRenderingContextBase.bufferSubData documentation> 
+bufferSubData ::
+              (MonadDOM m, IsWebGLRenderingContextBase self,
+               IsArrayBuffer data') =>
+                self -> GLenum -> GLintptr -> Maybe data' -> m ()
+bufferSubData self target offset data'
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "bufferSubData"
+            [toJSVal target, toJSVal offset, toJSVal data']))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.bufferSubData Mozilla WebGLRenderingContextBase.bufferSubData documentation> 
+bufferSubDataView ::
+                  (MonadDOM m, IsWebGLRenderingContextBase self,
+                   IsArrayBufferView data') =>
+                    self -> GLenum -> GLintptr -> Maybe data' -> m ()
+bufferSubDataView self target offset data'
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "bufferSubData"
+            [toJSVal target, toJSVal offset, toJSVal data']))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.checkFramebufferStatus Mozilla WebGLRenderingContextBase.checkFramebufferStatus documentation> 
+checkFramebufferStatus ::
+                       (MonadDOM m, IsWebGLRenderingContextBase self) =>
+                         self -> GLenum -> m GLenum
+checkFramebufferStatus self target
+  = liftDOM
+      (((toWebGLRenderingContextBase self) ^.
+          jsf "checkFramebufferStatus"
+          [toJSVal target])
+         >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.clear Mozilla WebGLRenderingContextBase.clear documentation> 
+clear ::
+      (MonadDOM m, IsWebGLRenderingContextBase self) =>
+        self -> GLbitfield -> m ()
+clear self mask
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "clear" [toJSVal mask]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.clearColor Mozilla WebGLRenderingContextBase.clearColor documentation> 
+clearColor ::
+           (MonadDOM m, IsWebGLRenderingContextBase self) =>
+             self -> GLclampf -> GLclampf -> GLclampf -> GLclampf -> m ()
+clearColor self red green blue alpha
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "clearColor"
+            [toJSVal red, toJSVal green, toJSVal blue, toJSVal alpha]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.clearDepth Mozilla WebGLRenderingContextBase.clearDepth documentation> 
+clearDepth ::
+           (MonadDOM m, IsWebGLRenderingContextBase self) =>
+             self -> GLclampf -> m ()
+clearDepth self depth
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "clearDepth"
+            [toJSVal depth]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.clearStencil Mozilla WebGLRenderingContextBase.clearStencil documentation> 
+clearStencil ::
+             (MonadDOM m, IsWebGLRenderingContextBase self) =>
+               self -> GLint -> m ()
+clearStencil self s
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "clearStencil"
+            [toJSVal s]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.colorMask Mozilla WebGLRenderingContextBase.colorMask documentation> 
+colorMask ::
+          (MonadDOM m, IsWebGLRenderingContextBase self) =>
+            self -> GLboolean -> GLboolean -> GLboolean -> GLboolean -> m ()
+colorMask self red green blue alpha
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "colorMask"
+            [toJSVal red, toJSVal green, toJSVal blue, toJSVal alpha]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.compileShader Mozilla WebGLRenderingContextBase.compileShader documentation> 
+compileShader ::
+              (MonadDOM m, IsWebGLRenderingContextBase self) =>
+                self -> Maybe WebGLShader -> m ()
+compileShader self shader
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "compileShader"
+            [toJSVal shader]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.compressedTexImage2D Mozilla WebGLRenderingContextBase.compressedTexImage2D documentation> 
+compressedTexImage2D ::
+                     (MonadDOM m, IsWebGLRenderingContextBase self,
+                      IsArrayBufferView data') =>
+                       self ->
+                         GLenum ->
+                           GLint ->
+                             GLenum -> GLsizei -> GLsizei -> GLint -> Maybe data' -> m ()
+compressedTexImage2D self target level internalformat width height
+  border data'
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "compressedTexImage2D"
+            [toJSVal target, toJSVal level, toJSVal internalformat,
+             toJSVal width, toJSVal height, toJSVal border, toJSVal data']))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.compressedTexSubImage2D Mozilla WebGLRenderingContextBase.compressedTexSubImage2D documentation> 
+compressedTexSubImage2D ::
+                        (MonadDOM m, IsWebGLRenderingContextBase self,
+                         IsArrayBufferView data') =>
+                          self ->
+                            GLenum ->
+                              GLint ->
+                                GLint ->
+                                  GLint -> GLsizei -> GLsizei -> GLenum -> Maybe data' -> m ()
+compressedTexSubImage2D self target level xoffset yoffset width
+  height format data'
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^.
+            jsf "compressedTexSubImage2D"
+            [toJSVal target, toJSVal level, toJSVal xoffset, toJSVal yoffset,
+             toJSVal width, toJSVal height, toJSVal format, toJSVal data']))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.copyTexImage2D Mozilla WebGLRenderingContextBase.copyTexImage2D documentation> 
+copyTexImage2D ::
+               (MonadDOM m, IsWebGLRenderingContextBase self) =>
+                 self ->
+                   GLenum ->
+                     GLint ->
+                       GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> GLint -> m ()
+copyTexImage2D self target level internalformat x y width height
+  border
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "copyTexImage2D"
+            [toJSVal target, toJSVal level, toJSVal internalformat, toJSVal x,
+             toJSVal y, toJSVal width, toJSVal height, toJSVal border]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.copyTexSubImage2D Mozilla WebGLRenderingContextBase.copyTexSubImage2D documentation> 
+copyTexSubImage2D ::
+                  (MonadDOM m, IsWebGLRenderingContextBase self) =>
+                    self ->
+                      GLenum ->
+                        GLint ->
+                          GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> m ()
+copyTexSubImage2D self target level xoffset yoffset x y width
+  height
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "copyTexSubImage2D"
+            [toJSVal target, toJSVal level, toJSVal xoffset, toJSVal yoffset,
+             toJSVal x, toJSVal y, toJSVal width, toJSVal height]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.createBuffer Mozilla WebGLRenderingContextBase.createBuffer documentation> 
+createBuffer ::
+             (MonadDOM m, IsWebGLRenderingContextBase self) =>
+               self -> m (Maybe WebGLBuffer)
+createBuffer self
+  = liftDOM
+      (((toWebGLRenderingContextBase self) ^. js "createBuffer") >>=
+         fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.createFramebuffer Mozilla WebGLRenderingContextBase.createFramebuffer documentation> 
+createFramebuffer ::
+                  (MonadDOM m, IsWebGLRenderingContextBase self) =>
+                    self -> m (Maybe WebGLFramebuffer)
+createFramebuffer self
+  = liftDOM
+      (((toWebGLRenderingContextBase self) ^. js "createFramebuffer") >>=
+         fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.createProgram Mozilla WebGLRenderingContextBase.createProgram documentation> 
+createProgram ::
+              (MonadDOM m, IsWebGLRenderingContextBase self) =>
+                self -> m (Maybe WebGLProgram)
+createProgram self
+  = liftDOM
+      (((toWebGLRenderingContextBase self) ^. js "createProgram") >>=
+         fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.createRenderbuffer Mozilla WebGLRenderingContextBase.createRenderbuffer documentation> 
+createRenderbuffer ::
+                   (MonadDOM m, IsWebGLRenderingContextBase self) =>
+                     self -> m (Maybe WebGLRenderbuffer)
+createRenderbuffer self
+  = liftDOM
+      (((toWebGLRenderingContextBase self) ^. js "createRenderbuffer")
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.createShader Mozilla WebGLRenderingContextBase.createShader documentation> 
+createShader ::
+             (MonadDOM m, IsWebGLRenderingContextBase self) =>
+               self -> GLenum -> m (Maybe WebGLShader)
+createShader self type'
+  = liftDOM
+      (((toWebGLRenderingContextBase self) ^. jsf "createShader"
+          [toJSVal type'])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.createTexture Mozilla WebGLRenderingContextBase.createTexture documentation> 
+createTexture ::
+              (MonadDOM m, IsWebGLRenderingContextBase self) =>
+                self -> m (Maybe WebGLTexture)
+createTexture self
+  = liftDOM
+      (((toWebGLRenderingContextBase self) ^. js "createTexture") >>=
+         fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.cullFace Mozilla WebGLRenderingContextBase.cullFace documentation> 
+cullFace ::
+         (MonadDOM m, IsWebGLRenderingContextBase self) =>
+           self -> GLenum -> m ()
+cullFace self mode
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "cullFace"
+            [toJSVal mode]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.deleteBuffer Mozilla WebGLRenderingContextBase.deleteBuffer documentation> 
+deleteBuffer ::
+             (MonadDOM m, IsWebGLRenderingContextBase self) =>
+               self -> Maybe WebGLBuffer -> m ()
+deleteBuffer self buffer
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "deleteBuffer"
+            [toJSVal buffer]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.deleteFramebuffer Mozilla WebGLRenderingContextBase.deleteFramebuffer documentation> 
+deleteFramebuffer ::
+                  (MonadDOM m, IsWebGLRenderingContextBase self) =>
+                    self -> Maybe WebGLFramebuffer -> m ()
+deleteFramebuffer self framebuffer
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "deleteFramebuffer"
+            [toJSVal framebuffer]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.deleteProgram Mozilla WebGLRenderingContextBase.deleteProgram documentation> 
+deleteProgram ::
+              (MonadDOM m, IsWebGLRenderingContextBase self) =>
+                self -> Maybe WebGLProgram -> m ()
+deleteProgram self program
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "deleteProgram"
+            [toJSVal program]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.deleteRenderbuffer Mozilla WebGLRenderingContextBase.deleteRenderbuffer documentation> 
+deleteRenderbuffer ::
+                   (MonadDOM m, IsWebGLRenderingContextBase self) =>
+                     self -> Maybe WebGLRenderbuffer -> m ()
+deleteRenderbuffer self renderbuffer
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "deleteRenderbuffer"
+            [toJSVal renderbuffer]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.deleteShader Mozilla WebGLRenderingContextBase.deleteShader documentation> 
+deleteShader ::
+             (MonadDOM m, IsWebGLRenderingContextBase self) =>
+               self -> Maybe WebGLShader -> m ()
+deleteShader self shader
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "deleteShader"
+            [toJSVal shader]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.deleteTexture Mozilla WebGLRenderingContextBase.deleteTexture documentation> 
+deleteTexture ::
+              (MonadDOM m, IsWebGLRenderingContextBase self) =>
+                self -> Maybe WebGLTexture -> m ()
+deleteTexture self texture
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "deleteTexture"
+            [toJSVal texture]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.depthFunc Mozilla WebGLRenderingContextBase.depthFunc documentation> 
+depthFunc ::
+          (MonadDOM m, IsWebGLRenderingContextBase self) =>
+            self -> GLenum -> m ()
+depthFunc self func
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "depthFunc"
+            [toJSVal func]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.depthMask Mozilla WebGLRenderingContextBase.depthMask documentation> 
+depthMask ::
+          (MonadDOM m, IsWebGLRenderingContextBase self) =>
+            self -> GLboolean -> m ()
+depthMask self flag
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "depthMask"
+            [toJSVal flag]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.depthRange Mozilla WebGLRenderingContextBase.depthRange documentation> 
+depthRange ::
+           (MonadDOM m, IsWebGLRenderingContextBase self) =>
+             self -> GLclampf -> GLclampf -> m ()
+depthRange self zNear zFar
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "depthRange"
+            [toJSVal zNear, toJSVal zFar]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.detachShader Mozilla WebGLRenderingContextBase.detachShader documentation> 
+detachShader ::
+             (MonadDOM m, IsWebGLRenderingContextBase self) =>
+               self -> Maybe WebGLProgram -> Maybe WebGLShader -> m ()
+detachShader self program shader
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "detachShader"
+            [toJSVal program, toJSVal shader]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.disable Mozilla WebGLRenderingContextBase.disable documentation> 
+disable ::
+        (MonadDOM m, IsWebGLRenderingContextBase self) =>
+          self -> GLenum -> m ()
+disable self cap
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "disable"
+            [toJSVal cap]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.disableVertexAttribArray Mozilla WebGLRenderingContextBase.disableVertexAttribArray documentation> 
+disableVertexAttribArray ::
+                         (MonadDOM m, IsWebGLRenderingContextBase self) =>
+                           self -> GLuint -> m ()
+disableVertexAttribArray self index
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^.
+            jsf "disableVertexAttribArray"
+            [toJSVal index]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.drawArrays Mozilla WebGLRenderingContextBase.drawArrays documentation> 
+drawArrays ::
+           (MonadDOM m, IsWebGLRenderingContextBase self) =>
+             self -> GLenum -> GLint -> GLsizei -> m ()
+drawArrays self mode first count
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "drawArrays"
+            [toJSVal mode, toJSVal first, toJSVal count]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.drawElements Mozilla WebGLRenderingContextBase.drawElements documentation> 
+drawElements ::
+             (MonadDOM m, IsWebGLRenderingContextBase self) =>
+               self -> GLenum -> GLsizei -> GLenum -> GLintptr -> m ()
+drawElements self mode count type' offset
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "drawElements"
+            [toJSVal mode, toJSVal count, toJSVal type', toJSVal offset]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.enable Mozilla WebGLRenderingContextBase.enable documentation> 
+enable ::
+       (MonadDOM m, IsWebGLRenderingContextBase self) =>
+         self -> GLenum -> m ()
+enable self cap
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "enable" [toJSVal cap]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.enableVertexAttribArray Mozilla WebGLRenderingContextBase.enableVertexAttribArray documentation> 
+enableVertexAttribArray ::
+                        (MonadDOM m, IsWebGLRenderingContextBase self) =>
+                          self -> GLuint -> m ()
+enableVertexAttribArray self index
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^.
+            jsf "enableVertexAttribArray"
+            [toJSVal index]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.finish Mozilla WebGLRenderingContextBase.finish documentation> 
+finish ::
+       (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m ()
+finish self
+  = liftDOM
+      (void ((toWebGLRenderingContextBase self) ^. js "finish"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.flush Mozilla WebGLRenderingContextBase.flush documentation> 
+flush ::
+      (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m ()
+flush self
+  = liftDOM (void ((toWebGLRenderingContextBase self) ^. js "flush"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.framebufferRenderbuffer Mozilla WebGLRenderingContextBase.framebufferRenderbuffer documentation> 
+framebufferRenderbuffer ::
+                        (MonadDOM m, IsWebGLRenderingContextBase self) =>
+                          self ->
+                            GLenum -> GLenum -> GLenum -> Maybe WebGLRenderbuffer -> m ()
+framebufferRenderbuffer self target attachment renderbuffertarget
+  renderbuffer
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^.
+            jsf "framebufferRenderbuffer"
+            [toJSVal target, toJSVal attachment, toJSVal renderbuffertarget,
+             toJSVal renderbuffer]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.framebufferTexture2D Mozilla WebGLRenderingContextBase.framebufferTexture2D documentation> 
+framebufferTexture2D ::
+                     (MonadDOM m, IsWebGLRenderingContextBase self) =>
+                       self ->
+                         GLenum -> GLenum -> GLenum -> Maybe WebGLTexture -> GLint -> m ()
+framebufferTexture2D self target attachment textarget texture level
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "framebufferTexture2D"
+            [toJSVal target, toJSVal attachment, toJSVal textarget,
+             toJSVal texture, toJSVal level]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.frontFace Mozilla WebGLRenderingContextBase.frontFace documentation> 
+frontFace ::
+          (MonadDOM m, IsWebGLRenderingContextBase self) =>
+            self -> GLenum -> m ()
+frontFace self mode
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "frontFace"
+            [toJSVal mode]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.generateMipmap Mozilla WebGLRenderingContextBase.generateMipmap documentation> 
+generateMipmap ::
+               (MonadDOM m, IsWebGLRenderingContextBase self) =>
+                 self -> GLenum -> m ()
+generateMipmap self target
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "generateMipmap"
+            [toJSVal target]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getActiveAttrib Mozilla WebGLRenderingContextBase.getActiveAttrib documentation> 
+getActiveAttrib ::
+                (MonadDOM m, IsWebGLRenderingContextBase self) =>
+                  self -> Maybe WebGLProgram -> GLuint -> m (Maybe WebGLActiveInfo)
+getActiveAttrib self program index
+  = liftDOM
+      (((toWebGLRenderingContextBase self) ^. jsf "getActiveAttrib"
+          [toJSVal program, toJSVal index])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getActiveUniform Mozilla WebGLRenderingContextBase.getActiveUniform documentation> 
+getActiveUniform ::
+                 (MonadDOM m, IsWebGLRenderingContextBase self) =>
+                   self -> Maybe WebGLProgram -> GLuint -> m (Maybe WebGLActiveInfo)
+getActiveUniform self program index
+  = liftDOM
+      (((toWebGLRenderingContextBase self) ^. jsf "getActiveUniform"
+          [toJSVal program, toJSVal index])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getAttachedShaders Mozilla WebGLRenderingContextBase.getAttachedShaders documentation> 
+getAttachedShaders ::
+                   (MonadDOM m, IsWebGLRenderingContextBase self) =>
+                     self -> Maybe WebGLProgram -> m ()
+getAttachedShaders self program
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "getAttachedShaders"
+            [toJSVal program]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getAttribLocation Mozilla WebGLRenderingContextBase.getAttribLocation documentation> 
+getAttribLocation ::
+                  (MonadDOM m, IsWebGLRenderingContextBase self, ToJSString name) =>
+                    self -> Maybe WebGLProgram -> name -> m GLint
+getAttribLocation self program name
+  = liftDOM
+      (((toWebGLRenderingContextBase self) ^. jsf "getAttribLocation"
+          [toJSVal program, toJSVal name])
+         >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getBufferParameter Mozilla WebGLRenderingContextBase.getBufferParameter documentation> 
+getBufferParameter ::
+                   (MonadDOM m, IsWebGLRenderingContextBase self) =>
+                     self -> GLenum -> GLenum -> m JSVal
+getBufferParameter self target pname
+  = liftDOM
+      (((toWebGLRenderingContextBase self) ^. jsf "getBufferParameter"
+          [toJSVal target, toJSVal pname])
+         >>= toJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getContextAttributes Mozilla WebGLRenderingContextBase.getContextAttributes documentation> 
+getContextAttributes ::
+                     (MonadDOM m, IsWebGLRenderingContextBase self) =>
+                       self -> m (Maybe WebGLContextAttributes)
+getContextAttributes self
+  = liftDOM
+      (((toWebGLRenderingContextBase self) ^. js "getContextAttributes")
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getError Mozilla WebGLRenderingContextBase.getError documentation> 
+getError ::
+         (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m GLenum
+getError self
+  = liftDOM
+      (((toWebGLRenderingContextBase self) ^. js "getError") >>=
+         fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getExtension Mozilla WebGLRenderingContextBase.getExtension documentation> 
+getExtension ::
+             (MonadDOM m, IsWebGLRenderingContextBase self, ToJSString name) =>
+               self -> name -> m JSVal
+getExtension self name
+  = liftDOM
+      (((toWebGLRenderingContextBase self) ^. jsf "getExtension"
+          [toJSVal name])
+         >>= toJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getFramebufferAttachmentParameter Mozilla WebGLRenderingContextBase.getFramebufferAttachmentParameter documentation> 
+getFramebufferAttachmentParameter ::
+                                  (MonadDOM m, IsWebGLRenderingContextBase self) =>
+                                    self -> GLenum -> GLenum -> GLenum -> m JSVal
+getFramebufferAttachmentParameter self target attachment pname
+  = liftDOM
+      (((toWebGLRenderingContextBase self) ^.
+          jsf "getFramebufferAttachmentParameter"
+          [toJSVal target, toJSVal attachment, toJSVal pname])
+         >>= toJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getParameter Mozilla WebGLRenderingContextBase.getParameter documentation> 
+getParameter ::
+             (MonadDOM m, IsWebGLRenderingContextBase self) =>
+               self -> GLenum -> m JSVal
+getParameter self pname
+  = liftDOM
+      (((toWebGLRenderingContextBase self) ^. jsf "getParameter"
+          [toJSVal pname])
+         >>= toJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getProgramParameter Mozilla WebGLRenderingContextBase.getProgramParameter documentation> 
+getProgramParameter ::
+                    (MonadDOM m, IsWebGLRenderingContextBase self) =>
+                      self -> Maybe WebGLProgram -> GLenum -> m JSVal
+getProgramParameter self program pname
+  = liftDOM
+      (((toWebGLRenderingContextBase self) ^. jsf "getProgramParameter"
+          [toJSVal program, toJSVal pname])
+         >>= toJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getProgramInfoLog Mozilla WebGLRenderingContextBase.getProgramInfoLog documentation> 
+getProgramInfoLog ::
+                  (MonadDOM m, IsWebGLRenderingContextBase self,
+                   FromJSString result) =>
+                    self -> Maybe WebGLProgram -> m (Maybe result)
+getProgramInfoLog self program
+  = liftDOM
+      (((toWebGLRenderingContextBase self) ^. jsf "getProgramInfoLog"
+          [toJSVal program])
+         >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getRenderbufferParameter Mozilla WebGLRenderingContextBase.getRenderbufferParameter documentation> 
+getRenderbufferParameter ::
+                         (MonadDOM m, IsWebGLRenderingContextBase self) =>
+                           self -> GLenum -> GLenum -> m JSVal
+getRenderbufferParameter self target pname
+  = liftDOM
+      (((toWebGLRenderingContextBase self) ^.
+          jsf "getRenderbufferParameter"
+          [toJSVal target, toJSVal pname])
+         >>= toJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getShaderParameter Mozilla WebGLRenderingContextBase.getShaderParameter documentation> 
+getShaderParameter ::
+                   (MonadDOM m, IsWebGLRenderingContextBase self) =>
+                     self -> Maybe WebGLShader -> GLenum -> m JSVal
+getShaderParameter self shader pname
+  = liftDOM
+      (((toWebGLRenderingContextBase self) ^. jsf "getShaderParameter"
+          [toJSVal shader, toJSVal pname])
+         >>= toJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getShaderInfoLog Mozilla WebGLRenderingContextBase.getShaderInfoLog documentation> 
+getShaderInfoLog ::
+                 (MonadDOM m, IsWebGLRenderingContextBase self,
+                  FromJSString result) =>
+                   self -> Maybe WebGLShader -> m (Maybe result)
+getShaderInfoLog self shader
+  = liftDOM
+      (((toWebGLRenderingContextBase self) ^. jsf "getShaderInfoLog"
+          [toJSVal shader])
+         >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getShaderPrecisionFormat Mozilla WebGLRenderingContextBase.getShaderPrecisionFormat documentation> 
+getShaderPrecisionFormat ::
+                         (MonadDOM m, IsWebGLRenderingContextBase self) =>
+                           self -> GLenum -> GLenum -> m (Maybe WebGLShaderPrecisionFormat)
+getShaderPrecisionFormat self shadertype precisiontype
+  = liftDOM
+      (((toWebGLRenderingContextBase self) ^.
+          jsf "getShaderPrecisionFormat"
+          [toJSVal shadertype, toJSVal precisiontype])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getShaderSource Mozilla WebGLRenderingContextBase.getShaderSource documentation> 
+getShaderSource ::
+                (MonadDOM m, IsWebGLRenderingContextBase self,
+                 FromJSString result) =>
+                  self -> Maybe WebGLShader -> m (Maybe result)
+getShaderSource self shader
+  = liftDOM
+      (((toWebGLRenderingContextBase self) ^. jsf "getShaderSource"
+          [toJSVal shader])
+         >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getSupportedExtensions Mozilla WebGLRenderingContextBase.getSupportedExtensions documentation> 
+getSupportedExtensions ::
+                       (MonadDOM m, IsWebGLRenderingContextBase self,
+                        FromJSString result) =>
+                         self -> m [result]
+getSupportedExtensions self
+  = liftDOM
+      (((toWebGLRenderingContextBase self) ^.
+          js "getSupportedExtensions")
+         >>= fromJSArrayUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getTexParameter Mozilla WebGLRenderingContextBase.getTexParameter documentation> 
+getTexParameter ::
+                (MonadDOM m, IsWebGLRenderingContextBase self) =>
+                  self -> GLenum -> GLenum -> m JSVal
+getTexParameter self target pname
+  = liftDOM
+      (((toWebGLRenderingContextBase self) ^. jsf "getTexParameter"
+          [toJSVal target, toJSVal pname])
+         >>= toJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getUniform Mozilla WebGLRenderingContextBase.getUniform documentation> 
+getUniform ::
+           (MonadDOM m, IsWebGLRenderingContextBase self) =>
+             self -> Maybe WebGLProgram -> Maybe WebGLUniformLocation -> m JSVal
+getUniform self program location
+  = liftDOM
+      (((toWebGLRenderingContextBase self) ^. jsf "getUniform"
+          [toJSVal program, toJSVal location])
+         >>= toJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getUniformLocation Mozilla WebGLRenderingContextBase.getUniformLocation documentation> 
+getUniformLocation ::
+                   (MonadDOM m, IsWebGLRenderingContextBase self, ToJSString name) =>
+                     self ->
+                       Maybe WebGLProgram -> name -> m (Maybe WebGLUniformLocation)
+getUniformLocation self program name
+  = liftDOM
+      (((toWebGLRenderingContextBase self) ^. jsf "getUniformLocation"
+          [toJSVal program, toJSVal name])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getVertexAttrib Mozilla WebGLRenderingContextBase.getVertexAttrib documentation> 
+getVertexAttrib ::
+                (MonadDOM m, IsWebGLRenderingContextBase self) =>
+                  self -> GLuint -> GLenum -> m JSVal
+getVertexAttrib self index pname
+  = liftDOM
+      (((toWebGLRenderingContextBase self) ^. jsf "getVertexAttrib"
+          [toJSVal index, toJSVal pname])
+         >>= toJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getVertexAttribOffset Mozilla WebGLRenderingContextBase.getVertexAttribOffset documentation> 
+getVertexAttribOffset ::
+                      (MonadDOM m, IsWebGLRenderingContextBase self) =>
+                        self -> GLuint -> GLenum -> m GLsizeiptr
+getVertexAttribOffset self index pname
+  = liftDOM
+      (((toWebGLRenderingContextBase self) ^. jsf "getVertexAttribOffset"
+          [toJSVal index, toJSVal pname])
+         >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.hint Mozilla WebGLRenderingContextBase.hint documentation> 
+hint ::
+     (MonadDOM m, IsWebGLRenderingContextBase self) =>
+       self -> GLenum -> GLenum -> m ()
+hint self target mode
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "hint"
+            [toJSVal target, toJSVal mode]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.isBuffer Mozilla WebGLRenderingContextBase.isBuffer documentation> 
+isBuffer ::
+         (MonadDOM m, IsWebGLRenderingContextBase self) =>
+           self -> Maybe WebGLBuffer -> m GLboolean
+isBuffer self buffer
+  = liftDOM
+      (((toWebGLRenderingContextBase self) ^. jsf "isBuffer"
+          [toJSVal buffer])
+         >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.isContextLost Mozilla WebGLRenderingContextBase.isContextLost documentation> 
+isContextLost ::
+              (MonadDOM m, IsWebGLRenderingContextBase self) =>
+                self -> m GLboolean
+isContextLost self
+  = liftDOM
+      (((toWebGLRenderingContextBase self) ^. js "isContextLost") >>=
+         fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.isEnabled Mozilla WebGLRenderingContextBase.isEnabled documentation> 
+isEnabled ::
+          (MonadDOM m, IsWebGLRenderingContextBase self) =>
+            self -> GLenum -> m GLboolean
+isEnabled self cap
+  = liftDOM
+      (((toWebGLRenderingContextBase self) ^. jsf "isEnabled"
+          [toJSVal cap])
+         >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.isFramebuffer Mozilla WebGLRenderingContextBase.isFramebuffer documentation> 
+isFramebuffer ::
+              (MonadDOM m, IsWebGLRenderingContextBase self) =>
+                self -> Maybe WebGLFramebuffer -> m GLboolean
+isFramebuffer self framebuffer
+  = liftDOM
+      (((toWebGLRenderingContextBase self) ^. jsf "isFramebuffer"
+          [toJSVal framebuffer])
+         >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.isProgram Mozilla WebGLRenderingContextBase.isProgram documentation> 
+isProgram ::
+          (MonadDOM m, IsWebGLRenderingContextBase self) =>
+            self -> Maybe WebGLProgram -> m GLboolean
+isProgram self program
+  = liftDOM
+      (((toWebGLRenderingContextBase self) ^. jsf "isProgram"
+          [toJSVal program])
+         >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.isRenderbuffer Mozilla WebGLRenderingContextBase.isRenderbuffer documentation> 
+isRenderbuffer ::
+               (MonadDOM m, IsWebGLRenderingContextBase self) =>
+                 self -> Maybe WebGLRenderbuffer -> m GLboolean
+isRenderbuffer self renderbuffer
+  = liftDOM
+      (((toWebGLRenderingContextBase self) ^. jsf "isRenderbuffer"
+          [toJSVal renderbuffer])
+         >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.isShader Mozilla WebGLRenderingContextBase.isShader documentation> 
+isShader ::
+         (MonadDOM m, IsWebGLRenderingContextBase self) =>
+           self -> Maybe WebGLShader -> m GLboolean
+isShader self shader
+  = liftDOM
+      (((toWebGLRenderingContextBase self) ^. jsf "isShader"
+          [toJSVal shader])
+         >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.isTexture Mozilla WebGLRenderingContextBase.isTexture documentation> 
+isTexture ::
+          (MonadDOM m, IsWebGLRenderingContextBase self) =>
+            self -> Maybe WebGLTexture -> m GLboolean
+isTexture self texture
+  = liftDOM
+      (((toWebGLRenderingContextBase self) ^. jsf "isTexture"
+          [toJSVal texture])
+         >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.lineWidth Mozilla WebGLRenderingContextBase.lineWidth documentation> 
+lineWidth ::
+          (MonadDOM m, IsWebGLRenderingContextBase self) =>
+            self -> GLfloat -> m ()
+lineWidth self width
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "lineWidth"
+            [toJSVal width]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.linkProgram Mozilla WebGLRenderingContextBase.linkProgram documentation> 
+linkProgram ::
+            (MonadDOM m, IsWebGLRenderingContextBase self) =>
+              self -> Maybe WebGLProgram -> m ()
+linkProgram self program
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "linkProgram"
+            [toJSVal program]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.pixelStorei Mozilla WebGLRenderingContextBase.pixelStorei documentation> 
+pixelStorei ::
+            (MonadDOM m, IsWebGLRenderingContextBase self) =>
+              self -> GLenum -> GLint -> m ()
+pixelStorei self pname param
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "pixelStorei"
+            [toJSVal pname, toJSVal param]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.polygonOffset Mozilla WebGLRenderingContextBase.polygonOffset documentation> 
+polygonOffset ::
+              (MonadDOM m, IsWebGLRenderingContextBase self) =>
+                self -> GLfloat -> GLfloat -> m ()
+polygonOffset self factor units
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "polygonOffset"
+            [toJSVal factor, toJSVal units]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.readPixels Mozilla WebGLRenderingContextBase.readPixels documentation> 
+readPixels ::
+           (MonadDOM m, IsWebGLRenderingContextBase self,
+            IsArrayBufferView pixels) =>
+             self ->
+               GLint ->
+                 GLint ->
+                   GLsizei -> GLsizei -> GLenum -> GLenum -> Maybe pixels -> m ()
+readPixels self x y width height format type' pixels
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "readPixels"
+            [toJSVal x, toJSVal y, toJSVal width, toJSVal height,
+             toJSVal format, toJSVal type', toJSVal pixels]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.releaseShaderCompiler Mozilla WebGLRenderingContextBase.releaseShaderCompiler documentation> 
+releaseShaderCompiler ::
+                      (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m ()
+releaseShaderCompiler self
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. js "releaseShaderCompiler"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.renderbufferStorage Mozilla WebGLRenderingContextBase.renderbufferStorage documentation> 
+renderbufferStorage ::
+                    (MonadDOM m, IsWebGLRenderingContextBase self) =>
+                      self -> GLenum -> GLenum -> GLsizei -> GLsizei -> m ()
+renderbufferStorage self target internalformat width height
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "renderbufferStorage"
+            [toJSVal target, toJSVal internalformat, toJSVal width,
+             toJSVal height]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.sampleCoverage Mozilla WebGLRenderingContextBase.sampleCoverage documentation> 
+sampleCoverage ::
+               (MonadDOM m, IsWebGLRenderingContextBase self) =>
+                 self -> GLclampf -> GLboolean -> m ()
+sampleCoverage self value invert
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "sampleCoverage"
+            [toJSVal value, toJSVal invert]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.scissor Mozilla WebGLRenderingContextBase.scissor documentation> 
+scissor ::
+        (MonadDOM m, IsWebGLRenderingContextBase self) =>
+          self -> GLint -> GLint -> GLsizei -> GLsizei -> m ()
+scissor self x y width height
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "scissor"
+            [toJSVal x, toJSVal y, toJSVal width, toJSVal height]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.shaderSource Mozilla WebGLRenderingContextBase.shaderSource documentation> 
+shaderSource ::
+             (MonadDOM m, IsWebGLRenderingContextBase self,
+              ToJSString string) =>
+               self -> Maybe WebGLShader -> string -> m ()
+shaderSource self shader string
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "shaderSource"
+            [toJSVal shader, toJSVal string]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.stencilFunc Mozilla WebGLRenderingContextBase.stencilFunc documentation> 
+stencilFunc ::
+            (MonadDOM m, IsWebGLRenderingContextBase self) =>
+              self -> GLenum -> GLint -> GLuint -> m ()
+stencilFunc self func ref mask
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "stencilFunc"
+            [toJSVal func, toJSVal ref, toJSVal mask]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.stencilFuncSeparate Mozilla WebGLRenderingContextBase.stencilFuncSeparate documentation> 
+stencilFuncSeparate ::
+                    (MonadDOM m, IsWebGLRenderingContextBase self) =>
+                      self -> GLenum -> GLenum -> GLint -> GLuint -> m ()
+stencilFuncSeparate self face func ref mask
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "stencilFuncSeparate"
+            [toJSVal face, toJSVal func, toJSVal ref, toJSVal mask]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.stencilMask Mozilla WebGLRenderingContextBase.stencilMask documentation> 
+stencilMask ::
+            (MonadDOM m, IsWebGLRenderingContextBase self) =>
+              self -> GLuint -> m ()
+stencilMask self mask
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "stencilMask"
+            [toJSVal mask]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.stencilMaskSeparate Mozilla WebGLRenderingContextBase.stencilMaskSeparate documentation> 
+stencilMaskSeparate ::
+                    (MonadDOM m, IsWebGLRenderingContextBase self) =>
+                      self -> GLenum -> GLuint -> m ()
+stencilMaskSeparate self face mask
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "stencilMaskSeparate"
+            [toJSVal face, toJSVal mask]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.stencilOp Mozilla WebGLRenderingContextBase.stencilOp documentation> 
+stencilOp ::
+          (MonadDOM m, IsWebGLRenderingContextBase self) =>
+            self -> GLenum -> GLenum -> GLenum -> m ()
+stencilOp self fail zfail zpass
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "stencilOp"
+            [toJSVal fail, toJSVal zfail, toJSVal zpass]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.stencilOpSeparate Mozilla WebGLRenderingContextBase.stencilOpSeparate documentation> 
+stencilOpSeparate ::
+                  (MonadDOM m, IsWebGLRenderingContextBase self) =>
+                    self -> GLenum -> GLenum -> GLenum -> GLenum -> m ()
+stencilOpSeparate self face fail zfail zpass
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "stencilOpSeparate"
+            [toJSVal face, toJSVal fail, toJSVal zfail, toJSVal zpass]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.texParameterf Mozilla WebGLRenderingContextBase.texParameterf documentation> 
+texParameterf ::
+              (MonadDOM m, IsWebGLRenderingContextBase self) =>
+                self -> GLenum -> GLenum -> GLfloat -> m ()
+texParameterf self target pname param
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "texParameterf"
+            [toJSVal target, toJSVal pname, toJSVal param]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.texParameteri Mozilla WebGLRenderingContextBase.texParameteri documentation> 
+texParameteri ::
+              (MonadDOM m, IsWebGLRenderingContextBase self) =>
+                self -> GLenum -> GLenum -> GLint -> m ()
+texParameteri self target pname param
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "texParameteri"
+            [toJSVal target, toJSVal pname, toJSVal param]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.texImage2D Mozilla WebGLRenderingContextBase.texImage2D documentation> 
+texImage2DView ::
+               (MonadDOM m, IsWebGLRenderingContextBase self,
+                IsArrayBufferView pixels) =>
+                 self ->
+                   GLenum ->
+                     GLint ->
+                       GLenum ->
+                         GLsizei ->
+                           GLsizei -> GLint -> GLenum -> GLenum -> Maybe pixels -> m ()
+texImage2DView self target level internalformat width height border
+  format type' pixels
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "texImage2D"
+            [toJSVal target, toJSVal level, toJSVal internalformat,
+             toJSVal width, toJSVal height, toJSVal border, toJSVal format,
+             toJSVal type', toJSVal pixels]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.texImage2D Mozilla WebGLRenderingContextBase.texImage2D documentation> 
+texImage2DData ::
+               (MonadDOM m, IsWebGLRenderingContextBase self) =>
+                 self ->
+                   GLenum ->
+                     GLint -> GLenum -> GLenum -> GLenum -> Maybe ImageData -> m ()
+texImage2DData self target level internalformat format type' pixels
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "texImage2D"
+            [toJSVal target, toJSVal level, toJSVal internalformat,
+             toJSVal format, toJSVal type', toJSVal pixels]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.texImage2D Mozilla WebGLRenderingContextBase.texImage2D documentation> 
+texImage2D ::
+           (MonadDOM m, IsWebGLRenderingContextBase self) =>
+             self ->
+               GLenum ->
+                 GLint ->
+                   GLenum -> GLenum -> GLenum -> Maybe HTMLImageElement -> m ()
+texImage2D self target level internalformat format type' image
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "texImage2D"
+            [toJSVal target, toJSVal level, toJSVal internalformat,
+             toJSVal format, toJSVal type', toJSVal image]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.texImage2D Mozilla WebGLRenderingContextBase.texImage2D documentation> 
+texImage2DCanvas ::
+                 (MonadDOM m, IsWebGLRenderingContextBase self) =>
+                   self ->
+                     GLenum ->
+                       GLint ->
+                         GLenum -> GLenum -> GLenum -> Maybe HTMLCanvasElement -> m ()
+texImage2DCanvas self target level internalformat format type'
+  canvas
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "texImage2D"
+            [toJSVal target, toJSVal level, toJSVal internalformat,
+             toJSVal format, toJSVal type', toJSVal canvas]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.texImage2D Mozilla WebGLRenderingContextBase.texImage2D documentation> 
+texImage2DVideo ::
+                (MonadDOM m, IsWebGLRenderingContextBase self) =>
+                  self ->
+                    GLenum ->
+                      GLint ->
+                        GLenum -> GLenum -> GLenum -> Maybe HTMLVideoElement -> m ()
+texImage2DVideo self target level internalformat format type' video
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "texImage2D"
+            [toJSVal target, toJSVal level, toJSVal internalformat,
+             toJSVal format, toJSVal type', toJSVal video]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.texSubImage2D Mozilla WebGLRenderingContextBase.texSubImage2D documentation> 
+texSubImage2DView ::
+                  (MonadDOM m, IsWebGLRenderingContextBase self,
+                   IsArrayBufferView pixels) =>
+                    self ->
+                      GLenum ->
+                        GLint ->
+                          GLint ->
+                            GLint ->
+                              GLsizei -> GLsizei -> GLenum -> GLenum -> Maybe pixels -> m ()
+texSubImage2DView self target level xoffset yoffset width height
+  format type' pixels
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "texSubImage2D"
+            [toJSVal target, toJSVal level, toJSVal xoffset, toJSVal yoffset,
+             toJSVal width, toJSVal height, toJSVal format, toJSVal type',
+             toJSVal pixels]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.texSubImage2D Mozilla WebGLRenderingContextBase.texSubImage2D documentation> 
+texSubImage2DData ::
+                  (MonadDOM m, IsWebGLRenderingContextBase self) =>
+                    self ->
+                      GLenum ->
+                        GLint ->
+                          GLint -> GLint -> GLenum -> GLenum -> Maybe ImageData -> m ()
+texSubImage2DData self target level xoffset yoffset format type'
+  pixels
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "texSubImage2D"
+            [toJSVal target, toJSVal level, toJSVal xoffset, toJSVal yoffset,
+             toJSVal format, toJSVal type', toJSVal pixels]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.texSubImage2D Mozilla WebGLRenderingContextBase.texSubImage2D documentation> 
+texSubImage2D ::
+              (MonadDOM m, IsWebGLRenderingContextBase self) =>
+                self ->
+                  GLenum ->
+                    GLint ->
+                      GLint ->
+                        GLint -> GLenum -> GLenum -> Maybe HTMLImageElement -> m ()
+texSubImage2D self target level xoffset yoffset format type' image
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "texSubImage2D"
+            [toJSVal target, toJSVal level, toJSVal xoffset, toJSVal yoffset,
+             toJSVal format, toJSVal type', toJSVal image]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.texSubImage2D Mozilla WebGLRenderingContextBase.texSubImage2D documentation> 
+texSubImage2DCanvas ::
+                    (MonadDOM m, IsWebGLRenderingContextBase self) =>
+                      self ->
+                        GLenum ->
+                          GLint ->
+                            GLint ->
+                              GLint -> GLenum -> GLenum -> Maybe HTMLCanvasElement -> m ()
+texSubImage2DCanvas self target level xoffset yoffset format type'
+  canvas
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "texSubImage2D"
+            [toJSVal target, toJSVal level, toJSVal xoffset, toJSVal yoffset,
+             toJSVal format, toJSVal type', toJSVal canvas]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.texSubImage2D Mozilla WebGLRenderingContextBase.texSubImage2D documentation> 
+texSubImage2DVideo ::
+                   (MonadDOM m, IsWebGLRenderingContextBase self) =>
+                     self ->
+                       GLenum ->
+                         GLint ->
+                           GLint ->
+                             GLint -> GLenum -> GLenum -> Maybe HTMLVideoElement -> m ()
+texSubImage2DVideo self target level xoffset yoffset format type'
+  video
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "texSubImage2D"
+            [toJSVal target, toJSVal level, toJSVal xoffset, toJSVal yoffset,
+             toJSVal format, toJSVal type', toJSVal video]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform1f Mozilla WebGLRenderingContextBase.uniform1f documentation> 
+uniform1f ::
+          (MonadDOM m, IsWebGLRenderingContextBase self) =>
+            self -> Maybe WebGLUniformLocation -> GLfloat -> m ()
+uniform1f self location x
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "uniform1f"
+            [toJSVal location, toJSVal x]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform1fv Mozilla WebGLRenderingContextBase.uniform1fv documentation> 
+uniform1fv ::
+           (MonadDOM m, IsWebGLRenderingContextBase self, IsFloat32Array v) =>
+             self -> Maybe WebGLUniformLocation -> Maybe v -> m ()
+uniform1fv self location v
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "uniform1fv"
+            [toJSVal location, toJSVal v]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform1i Mozilla WebGLRenderingContextBase.uniform1i documentation> 
+uniform1i ::
+          (MonadDOM m, IsWebGLRenderingContextBase self) =>
+            self -> Maybe WebGLUniformLocation -> GLint -> m ()
+uniform1i self location x
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "uniform1i"
+            [toJSVal location, toJSVal x]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform1iv Mozilla WebGLRenderingContextBase.uniform1iv documentation> 
+uniform1iv ::
+           (MonadDOM m, IsWebGLRenderingContextBase self, IsInt32Array v) =>
+             self -> Maybe WebGLUniformLocation -> Maybe v -> m ()
+uniform1iv self location v
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "uniform1iv"
+            [toJSVal location, toJSVal v]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform2f Mozilla WebGLRenderingContextBase.uniform2f documentation> 
+uniform2f ::
+          (MonadDOM m, IsWebGLRenderingContextBase self) =>
+            self -> Maybe WebGLUniformLocation -> GLfloat -> GLfloat -> m ()
+uniform2f self location x y
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "uniform2f"
+            [toJSVal location, toJSVal x, toJSVal y]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform2fv Mozilla WebGLRenderingContextBase.uniform2fv documentation> 
+uniform2fv ::
+           (MonadDOM m, IsWebGLRenderingContextBase self, IsFloat32Array v) =>
+             self -> Maybe WebGLUniformLocation -> Maybe v -> m ()
+uniform2fv self location v
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "uniform2fv"
+            [toJSVal location, toJSVal v]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform2i Mozilla WebGLRenderingContextBase.uniform2i documentation> 
+uniform2i ::
+          (MonadDOM m, IsWebGLRenderingContextBase self) =>
+            self -> Maybe WebGLUniformLocation -> GLint -> GLint -> m ()
+uniform2i self location x y
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "uniform2i"
+            [toJSVal location, toJSVal x, toJSVal y]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform2iv Mozilla WebGLRenderingContextBase.uniform2iv documentation> 
+uniform2iv ::
+           (MonadDOM m, IsWebGLRenderingContextBase self, IsInt32Array v) =>
+             self -> Maybe WebGLUniformLocation -> Maybe v -> m ()
+uniform2iv self location v
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "uniform2iv"
+            [toJSVal location, toJSVal v]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform3f Mozilla WebGLRenderingContextBase.uniform3f documentation> 
+uniform3f ::
+          (MonadDOM m, IsWebGLRenderingContextBase self) =>
+            self ->
+              Maybe WebGLUniformLocation -> GLfloat -> GLfloat -> GLfloat -> m ()
+uniform3f self location x y z
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "uniform3f"
+            [toJSVal location, toJSVal x, toJSVal y, toJSVal z]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform3fv Mozilla WebGLRenderingContextBase.uniform3fv documentation> 
+uniform3fv ::
+           (MonadDOM m, IsWebGLRenderingContextBase self, IsFloat32Array v) =>
+             self -> Maybe WebGLUniformLocation -> Maybe v -> m ()
+uniform3fv self location v
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "uniform3fv"
+            [toJSVal location, toJSVal v]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform3i Mozilla WebGLRenderingContextBase.uniform3i documentation> 
+uniform3i ::
+          (MonadDOM m, IsWebGLRenderingContextBase self) =>
+            self ->
+              Maybe WebGLUniformLocation -> GLint -> GLint -> GLint -> m ()
+uniform3i self location x y z
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "uniform3i"
+            [toJSVal location, toJSVal x, toJSVal y, toJSVal z]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform3iv Mozilla WebGLRenderingContextBase.uniform3iv documentation> 
+uniform3iv ::
+           (MonadDOM m, IsWebGLRenderingContextBase self, IsInt32Array v) =>
+             self -> Maybe WebGLUniformLocation -> Maybe v -> m ()
+uniform3iv self location v
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "uniform3iv"
+            [toJSVal location, toJSVal v]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform4f Mozilla WebGLRenderingContextBase.uniform4f documentation> 
+uniform4f ::
+          (MonadDOM m, IsWebGLRenderingContextBase self) =>
+            self ->
+              Maybe WebGLUniformLocation ->
+                GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
+uniform4f self location x y z w
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "uniform4f"
+            [toJSVal location, toJSVal x, toJSVal y, toJSVal z, toJSVal w]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform4fv Mozilla WebGLRenderingContextBase.uniform4fv documentation> 
+uniform4fv ::
+           (MonadDOM m, IsWebGLRenderingContextBase self, IsFloat32Array v) =>
+             self -> Maybe WebGLUniformLocation -> Maybe v -> m ()
+uniform4fv self location v
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "uniform4fv"
+            [toJSVal location, toJSVal v]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform4i Mozilla WebGLRenderingContextBase.uniform4i documentation> 
+uniform4i ::
+          (MonadDOM m, IsWebGLRenderingContextBase self) =>
+            self ->
+              Maybe WebGLUniformLocation ->
+                GLint -> GLint -> GLint -> GLint -> m ()
+uniform4i self location x y z w
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "uniform4i"
+            [toJSVal location, toJSVal x, toJSVal y, toJSVal z, toJSVal w]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform4iv Mozilla WebGLRenderingContextBase.uniform4iv documentation> 
+uniform4iv ::
+           (MonadDOM m, IsWebGLRenderingContextBase self, IsInt32Array v) =>
+             self -> Maybe WebGLUniformLocation -> Maybe v -> m ()
+uniform4iv self location v
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "uniform4iv"
+            [toJSVal location, toJSVal v]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniformMatrix2fv Mozilla WebGLRenderingContextBase.uniformMatrix2fv documentation> 
+uniformMatrix2fv ::
+                 (MonadDOM m, IsWebGLRenderingContextBase self,
+                  IsFloat32Array array) =>
+                   self ->
+                     Maybe WebGLUniformLocation -> GLboolean -> Maybe array -> m ()
+uniformMatrix2fv self location transpose array
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "uniformMatrix2fv"
+            [toJSVal location, toJSVal transpose, toJSVal array]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniformMatrix3fv Mozilla WebGLRenderingContextBase.uniformMatrix3fv documentation> 
+uniformMatrix3fv ::
+                 (MonadDOM m, IsWebGLRenderingContextBase self,
+                  IsFloat32Array array) =>
+                   self ->
+                     Maybe WebGLUniformLocation -> GLboolean -> Maybe array -> m ()
+uniformMatrix3fv self location transpose array
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "uniformMatrix3fv"
+            [toJSVal location, toJSVal transpose, toJSVal array]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniformMatrix4fv Mozilla WebGLRenderingContextBase.uniformMatrix4fv documentation> 
+uniformMatrix4fv ::
+                 (MonadDOM m, IsWebGLRenderingContextBase self,
+                  IsFloat32Array array) =>
+                   self ->
+                     Maybe WebGLUniformLocation -> GLboolean -> Maybe array -> m ()
+uniformMatrix4fv self location transpose array
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "uniformMatrix4fv"
+            [toJSVal location, toJSVal transpose, toJSVal array]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.useProgram Mozilla WebGLRenderingContextBase.useProgram documentation> 
+useProgram ::
+           (MonadDOM m, IsWebGLRenderingContextBase self) =>
+             self -> Maybe WebGLProgram -> m ()
+useProgram self program
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "useProgram"
+            [toJSVal program]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.validateProgram Mozilla WebGLRenderingContextBase.validateProgram documentation> 
+validateProgram ::
+                (MonadDOM m, IsWebGLRenderingContextBase self) =>
+                  self -> Maybe WebGLProgram -> m ()
+validateProgram self program
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "validateProgram"
+            [toJSVal program]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.vertexAttrib1f Mozilla WebGLRenderingContextBase.vertexAttrib1f documentation> 
+vertexAttrib1f ::
+               (MonadDOM m, IsWebGLRenderingContextBase self) =>
+                 self -> GLuint -> GLfloat -> m ()
+vertexAttrib1f self indx x
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "vertexAttrib1f"
+            [toJSVal indx, toJSVal x]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.vertexAttrib1fv Mozilla WebGLRenderingContextBase.vertexAttrib1fv documentation> 
+vertexAttrib1fv ::
+                (MonadDOM m, IsWebGLRenderingContextBase self,
+                 IsFloat32Array values) =>
+                  self -> GLuint -> Maybe values -> m ()
+vertexAttrib1fv self indx values
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "vertexAttrib1fv"
+            [toJSVal indx, toJSVal values]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.vertexAttrib2f Mozilla WebGLRenderingContextBase.vertexAttrib2f documentation> 
+vertexAttrib2f ::
+               (MonadDOM m, IsWebGLRenderingContextBase self) =>
+                 self -> GLuint -> GLfloat -> GLfloat -> m ()
+vertexAttrib2f self indx x y
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "vertexAttrib2f"
+            [toJSVal indx, toJSVal x, toJSVal y]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.vertexAttrib2fv Mozilla WebGLRenderingContextBase.vertexAttrib2fv documentation> 
+vertexAttrib2fv ::
+                (MonadDOM m, IsWebGLRenderingContextBase self,
+                 IsFloat32Array values) =>
+                  self -> GLuint -> Maybe values -> m ()
+vertexAttrib2fv self indx values
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "vertexAttrib2fv"
+            [toJSVal indx, toJSVal values]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.vertexAttrib3f Mozilla WebGLRenderingContextBase.vertexAttrib3f documentation> 
+vertexAttrib3f ::
+               (MonadDOM m, IsWebGLRenderingContextBase self) =>
+                 self -> GLuint -> GLfloat -> GLfloat -> GLfloat -> m ()
+vertexAttrib3f self indx x y z
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "vertexAttrib3f"
+            [toJSVal indx, toJSVal x, toJSVal y, toJSVal z]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.vertexAttrib3fv Mozilla WebGLRenderingContextBase.vertexAttrib3fv documentation> 
+vertexAttrib3fv ::
+                (MonadDOM m, IsWebGLRenderingContextBase self,
+                 IsFloat32Array values) =>
+                  self -> GLuint -> Maybe values -> m ()
+vertexAttrib3fv self indx values
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "vertexAttrib3fv"
+            [toJSVal indx, toJSVal values]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.vertexAttrib4f Mozilla WebGLRenderingContextBase.vertexAttrib4f documentation> 
+vertexAttrib4f ::
+               (MonadDOM m, IsWebGLRenderingContextBase self) =>
+                 self -> GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
+vertexAttrib4f self indx x y z w
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "vertexAttrib4f"
+            [toJSVal indx, toJSVal x, toJSVal y, toJSVal z, toJSVal w]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.vertexAttrib4fv Mozilla WebGLRenderingContextBase.vertexAttrib4fv documentation> 
+vertexAttrib4fv ::
+                (MonadDOM m, IsWebGLRenderingContextBase self,
+                 IsFloat32Array values) =>
+                  self -> GLuint -> Maybe values -> m ()
+vertexAttrib4fv self indx values
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "vertexAttrib4fv"
+            [toJSVal indx, toJSVal values]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.vertexAttribPointer Mozilla WebGLRenderingContextBase.vertexAttribPointer documentation> 
+vertexAttribPointer ::
+                    (MonadDOM m, IsWebGLRenderingContextBase self) =>
+                      self ->
+                        GLuint ->
+                          GLint -> GLenum -> GLboolean -> GLsizei -> GLintptr -> m ()
+vertexAttribPointer self indx size type' normalized stride offset
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "vertexAttribPointer"
+            [toJSVal indx, toJSVal size, toJSVal type', toJSVal normalized,
+             toJSVal stride, toJSVal offset]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.viewport Mozilla WebGLRenderingContextBase.viewport documentation> 
+viewport ::
+         (MonadDOM m, IsWebGLRenderingContextBase self) =>
+           self -> GLint -> GLint -> GLsizei -> GLsizei -> m ()
+viewport self x y width height
+  = liftDOM
+      (void
+         ((toWebGLRenderingContextBase self) ^. jsf "viewport"
+            [toJSVal x, toJSVal y, toJSVal width, toJSVal height]))
+pattern DEPTH_BUFFER_BIT = 256
+pattern STENCIL_BUFFER_BIT = 1024
+pattern COLOR_BUFFER_BIT = 16384
+pattern POINTS = 0
+pattern LINES = 1
+pattern LINE_LOOP = 2
+pattern LINE_STRIP = 3
+pattern TRIANGLES = 4
+pattern TRIANGLE_STRIP = 5
+pattern TRIANGLE_FAN = 6
+pattern ZERO = 0
+pattern ONE = 1
+pattern SRC_COLOR = 768
+pattern ONE_MINUS_SRC_COLOR = 769
+pattern SRC_ALPHA = 770
+pattern ONE_MINUS_SRC_ALPHA = 771
+pattern DST_ALPHA = 772
+pattern ONE_MINUS_DST_ALPHA = 773
+pattern DST_COLOR = 774
+pattern ONE_MINUS_DST_COLOR = 775
+pattern SRC_ALPHA_SATURATE = 776
+pattern FUNC_ADD = 32774
+pattern BLEND_EQUATION = 32777
+pattern BLEND_EQUATION_RGB = 32777
+pattern BLEND_EQUATION_ALPHA = 34877
+pattern FUNC_SUBTRACT = 32778
+pattern FUNC_REVERSE_SUBTRACT = 32779
+pattern BLEND_DST_RGB = 32968
+pattern BLEND_SRC_RGB = 32969
+pattern BLEND_DST_ALPHA = 32970
+pattern BLEND_SRC_ALPHA = 32971
+pattern CONSTANT_COLOR = 32769
+pattern ONE_MINUS_CONSTANT_COLOR = 32770
+pattern CONSTANT_ALPHA = 32771
+pattern ONE_MINUS_CONSTANT_ALPHA = 32772
+pattern BLEND_COLOR = 32773
+pattern ARRAY_BUFFER = 34962
+pattern ELEMENT_ARRAY_BUFFER = 34963
+pattern ARRAY_BUFFER_BINDING = 34964
+pattern ELEMENT_ARRAY_BUFFER_BINDING = 34965
+pattern STREAM_DRAW = 35040
+pattern STATIC_DRAW = 35044
+pattern DYNAMIC_DRAW = 35048
+pattern BUFFER_SIZE = 34660
+pattern BUFFER_USAGE = 34661
+pattern CURRENT_VERTEX_ATTRIB = 34342
+pattern FRONT = 1028
+pattern BACK = 1029
+pattern FRONT_AND_BACK = 1032
+pattern TEXTURE_2D = 3553
+pattern CULL_FACE = 2884
+pattern BLEND = 3042
+pattern DITHER = 3024
+pattern STENCIL_TEST = 2960
+pattern DEPTH_TEST = 2929
+pattern SCISSOR_TEST = 3089
+pattern POLYGON_OFFSET_FILL = 32823
+pattern SAMPLE_ALPHA_TO_COVERAGE = 32926
+pattern SAMPLE_COVERAGE = 32928
+pattern NO_ERROR = 0
+pattern INVALID_ENUM = 1280
+pattern INVALID_VALUE = 1281
+pattern INVALID_OPERATION = 1282
+pattern OUT_OF_MEMORY = 1285
+pattern CW = 2304
+pattern CCW = 2305
+pattern LINE_WIDTH = 2849
+pattern ALIASED_POINT_SIZE_RANGE = 33901
+pattern ALIASED_LINE_WIDTH_RANGE = 33902
+pattern CULL_FACE_MODE = 2885
+pattern FRONT_FACE = 2886
+pattern DEPTH_RANGE = 2928
+pattern DEPTH_WRITEMASK = 2930
+pattern DEPTH_CLEAR_VALUE = 2931
+pattern DEPTH_FUNC = 2932
+pattern STENCIL_CLEAR_VALUE = 2961
+pattern STENCIL_FUNC = 2962
+pattern STENCIL_FAIL = 2964
+pattern STENCIL_PASS_DEPTH_FAIL = 2965
+pattern STENCIL_PASS_DEPTH_PASS = 2966
+pattern STENCIL_REF = 2967
+pattern STENCIL_VALUE_MASK = 2963
+pattern STENCIL_WRITEMASK = 2968
+pattern STENCIL_BACK_FUNC = 34816
+pattern STENCIL_BACK_FAIL = 34817
+pattern STENCIL_BACK_PASS_DEPTH_FAIL = 34818
+pattern STENCIL_BACK_PASS_DEPTH_PASS = 34819
+pattern STENCIL_BACK_REF = 36003
+pattern STENCIL_BACK_VALUE_MASK = 36004
+pattern STENCIL_BACK_WRITEMASK = 36005
+pattern VIEWPORT = 2978
+pattern SCISSOR_BOX = 3088
+pattern COLOR_CLEAR_VALUE = 3106
+pattern COLOR_WRITEMASK = 3107
+pattern UNPACK_ALIGNMENT = 3317
+pattern PACK_ALIGNMENT = 3333
+pattern MAX_TEXTURE_SIZE = 3379
+pattern MAX_VIEWPORT_DIMS = 3386
+pattern SUBPIXEL_BITS = 3408
+pattern RED_BITS = 3410
+pattern GREEN_BITS = 3411
+pattern BLUE_BITS = 3412
+pattern ALPHA_BITS = 3413
+pattern DEPTH_BITS = 3414
+pattern STENCIL_BITS = 3415
+pattern POLYGON_OFFSET_UNITS = 10752
+pattern POLYGON_OFFSET_FACTOR = 32824
+pattern TEXTURE_BINDING_2D = 32873
+pattern SAMPLE_BUFFERS = 32936
+pattern SAMPLES = 32937
+pattern SAMPLE_COVERAGE_VALUE = 32938
+pattern SAMPLE_COVERAGE_INVERT = 32939
+pattern COMPRESSED_TEXTURE_FORMATS = 34467
+pattern DONT_CARE = 4352
+pattern FASTEST = 4353
+pattern NICEST = 4354
+pattern GENERATE_MIPMAP_HINT = 33170
+pattern BYTE = 5120
+pattern UNSIGNED_BYTE = 5121
+pattern SHORT = 5122
+pattern UNSIGNED_SHORT = 5123
+pattern INT = 5124
+pattern UNSIGNED_INT = 5125
+pattern FLOAT = 5126
+pattern DEPTH_COMPONENT = 6402
+pattern ALPHA = 6406
+pattern RGB = 6407
+pattern RGBA = 6408
+pattern LUMINANCE = 6409
+pattern LUMINANCE_ALPHA = 6410
+pattern UNSIGNED_SHORT_4_4_4_4 = 32819
+pattern UNSIGNED_SHORT_5_5_5_1 = 32820
+pattern UNSIGNED_SHORT_5_6_5 = 33635
+pattern FRAGMENT_SHADER = 35632
+pattern VERTEX_SHADER = 35633
+pattern MAX_VERTEX_ATTRIBS = 34921
+pattern MAX_VERTEX_UNIFORM_VECTORS = 36347
+pattern MAX_VARYING_VECTORS = 36348
+pattern MAX_COMBINED_TEXTURE_IMAGE_UNITS = 35661
+pattern MAX_VERTEX_TEXTURE_IMAGE_UNITS = 35660
+pattern MAX_TEXTURE_IMAGE_UNITS = 34930
+pattern MAX_FRAGMENT_UNIFORM_VECTORS = 36349
+pattern SHADER_TYPE = 35663
+pattern DELETE_STATUS = 35712
+pattern LINK_STATUS = 35714
+pattern VALIDATE_STATUS = 35715
+pattern ATTACHED_SHADERS = 35717
+pattern ACTIVE_UNIFORMS = 35718
+pattern ACTIVE_ATTRIBUTES = 35721
+pattern SHADING_LANGUAGE_VERSION = 35724
+pattern CURRENT_PROGRAM = 35725
+pattern NEVER = 512
+pattern LESS = 513
+pattern EQUAL = 514
+pattern LEQUAL = 515
+pattern GREATER = 516
+pattern NOTEQUAL = 517
+pattern GEQUAL = 518
+pattern ALWAYS = 519
+pattern KEEP = 7680
+pattern REPLACE = 7681
+pattern INCR = 7682
+pattern DECR = 7683
+pattern INVERT = 5386
+pattern INCR_WRAP = 34055
+pattern DECR_WRAP = 34056
+pattern VENDOR = 7936
+pattern RENDERER = 7937
+pattern VERSION = 7938
+pattern NEAREST = 9728
+pattern LINEAR = 9729
+pattern NEAREST_MIPMAP_NEAREST = 9984
+pattern LINEAR_MIPMAP_NEAREST = 9985
+pattern NEAREST_MIPMAP_LINEAR = 9986
+pattern LINEAR_MIPMAP_LINEAR = 9987
+pattern TEXTURE_MAG_FILTER = 10240
+pattern TEXTURE_MIN_FILTER = 10241
+pattern TEXTURE_WRAP_S = 10242
+pattern TEXTURE_WRAP_T = 10243
+pattern TEXTURE = 5890
+pattern TEXTURE_CUBE_MAP = 34067
+pattern TEXTURE_BINDING_CUBE_MAP = 34068
+pattern TEXTURE_CUBE_MAP_POSITIVE_X = 34069
+pattern TEXTURE_CUBE_MAP_NEGATIVE_X = 34070
+pattern TEXTURE_CUBE_MAP_POSITIVE_Y = 34071
+pattern TEXTURE_CUBE_MAP_NEGATIVE_Y = 34072
+pattern TEXTURE_CUBE_MAP_POSITIVE_Z = 34073
+pattern TEXTURE_CUBE_MAP_NEGATIVE_Z = 34074
+pattern MAX_CUBE_MAP_TEXTURE_SIZE = 34076
+pattern TEXTURE0 = 33984
+pattern TEXTURE1 = 33985
+pattern TEXTURE2 = 33986
+pattern TEXTURE3 = 33987
+pattern TEXTURE4 = 33988
+pattern TEXTURE5 = 33989
+pattern TEXTURE6 = 33990
+pattern TEXTURE7 = 33991
+pattern TEXTURE8 = 33992
+pattern TEXTURE9 = 33993
+pattern TEXTURE10 = 33994
+pattern TEXTURE11 = 33995
+pattern TEXTURE12 = 33996
+pattern TEXTURE13 = 33997
+pattern TEXTURE14 = 33998
+pattern TEXTURE15 = 33999
+pattern TEXTURE16 = 34000
+pattern TEXTURE17 = 34001
+pattern TEXTURE18 = 34002
+pattern TEXTURE19 = 34003
+pattern TEXTURE20 = 34004
+pattern TEXTURE21 = 34005
+pattern TEXTURE22 = 34006
+pattern TEXTURE23 = 34007
+pattern TEXTURE24 = 34008
+pattern TEXTURE25 = 34009
+pattern TEXTURE26 = 34010
+pattern TEXTURE27 = 34011
+pattern TEXTURE28 = 34012
+pattern TEXTURE29 = 34013
+pattern TEXTURE30 = 34014
+pattern TEXTURE31 = 34015
+pattern ACTIVE_TEXTURE = 34016
+pattern REPEAT = 10497
+pattern CLAMP_TO_EDGE = 33071
+pattern MIRRORED_REPEAT = 33648
+pattern FLOAT_VEC2 = 35664
+pattern FLOAT_VEC3 = 35665
+pattern FLOAT_VEC4 = 35666
+pattern INT_VEC2 = 35667
+pattern INT_VEC3 = 35668
+pattern INT_VEC4 = 35669
+pattern BOOL = 35670
+pattern BOOL_VEC2 = 35671
+pattern BOOL_VEC3 = 35672
+pattern BOOL_VEC4 = 35673
+pattern FLOAT_MAT2 = 35674
+pattern FLOAT_MAT3 = 35675
+pattern FLOAT_MAT4 = 35676
+pattern SAMPLER_2D = 35678
+pattern SAMPLER_CUBE = 35680
+pattern VERTEX_ATTRIB_ARRAY_ENABLED = 34338
+pattern VERTEX_ATTRIB_ARRAY_SIZE = 34339
+pattern VERTEX_ATTRIB_ARRAY_STRIDE = 34340
+pattern VERTEX_ATTRIB_ARRAY_TYPE = 34341
+pattern VERTEX_ATTRIB_ARRAY_NORMALIZED = 34922
+pattern VERTEX_ATTRIB_ARRAY_POINTER = 34373
+pattern VERTEX_ATTRIB_ARRAY_BUFFER_BINDING = 34975
+pattern IMPLEMENTATION_COLOR_READ_TYPE = 35738
+pattern IMPLEMENTATION_COLOR_READ_FORMAT = 35739
+pattern COMPILE_STATUS = 35713
+pattern LOW_FLOAT = 36336
+pattern MEDIUM_FLOAT = 36337
+pattern HIGH_FLOAT = 36338
+pattern LOW_INT = 36339
+pattern MEDIUM_INT = 36340
+pattern HIGH_INT = 36341
+pattern FRAMEBUFFER = 36160
+pattern RENDERBUFFER = 36161
+pattern RGBA4 = 32854
+pattern RGB5_A1 = 32855
+pattern RGB565 = 36194
+pattern DEPTH_COMPONENT16 = 33189
+pattern STENCIL_INDEX = 6401
+pattern STENCIL_INDEX8 = 36168
+pattern DEPTH_STENCIL = 34041
+pattern RENDERBUFFER_WIDTH = 36162
+pattern RENDERBUFFER_HEIGHT = 36163
+pattern RENDERBUFFER_INTERNAL_FORMAT = 36164
+pattern RENDERBUFFER_RED_SIZE = 36176
+pattern RENDERBUFFER_GREEN_SIZE = 36177
+pattern RENDERBUFFER_BLUE_SIZE = 36178
+pattern RENDERBUFFER_ALPHA_SIZE = 36179
+pattern RENDERBUFFER_DEPTH_SIZE = 36180
+pattern RENDERBUFFER_STENCIL_SIZE = 36181
+pattern FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE = 36048
+pattern FRAMEBUFFER_ATTACHMENT_OBJECT_NAME = 36049
+pattern FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL = 36050
+pattern FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE = 36051
+pattern COLOR_ATTACHMENT0 = 36064
+pattern DEPTH_ATTACHMENT = 36096
+pattern STENCIL_ATTACHMENT = 36128
+pattern DEPTH_STENCIL_ATTACHMENT = 33306
+pattern NONE = 0
+pattern FRAMEBUFFER_COMPLETE = 36053
+pattern FRAMEBUFFER_INCOMPLETE_ATTACHMENT = 36054
+pattern FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT = 36055
+pattern FRAMEBUFFER_INCOMPLETE_DIMENSIONS = 36057
+pattern FRAMEBUFFER_UNSUPPORTED = 36061
+pattern FRAMEBUFFER_BINDING = 36006
+pattern RENDERBUFFER_BINDING = 36007
+pattern MAX_RENDERBUFFER_SIZE = 34024
+pattern INVALID_FRAMEBUFFER_OPERATION = 1286
+pattern UNPACK_FLIP_Y_WEBGL = 37440
+pattern UNPACK_PREMULTIPLY_ALPHA_WEBGL = 37441
+pattern CONTEXT_LOST_WEBGL = 37442
+pattern UNPACK_COLORSPACE_CONVERSION_WEBGL = 37443
+pattern BROWSER_DEFAULT_WEBGL = 37444
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.drawingBufferWidth Mozilla WebGLRenderingContextBase.drawingBufferWidth documentation> 
+getDrawingBufferWidth ::
+                      (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m GLsizei
+getDrawingBufferWidth self
+  = liftDOM
+      (((toWebGLRenderingContextBase self) ^. js "drawingBufferWidth")
+         >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.drawingBufferHeight Mozilla WebGLRenderingContextBase.drawingBufferHeight documentation> 
+getDrawingBufferHeight ::
+                       (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m GLsizei
+getDrawingBufferHeight self
+  = liftDOM
+      (((toWebGLRenderingContextBase self) ^. js "drawingBufferHeight")
+         >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/WebGLShaderPrecisionFormat.hs b/src/Language/Javascript/JSaddle/DOM/Generated/WebGLShaderPrecisionFormat.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/WebGLShaderPrecisionFormat.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.WebGLShaderPrecisionFormat
+       (getRangeMin, getRangeMax, getPrecision,
+        WebGLShaderPrecisionFormat, castToWebGLShaderPrecisionFormat,
+        gTypeWebGLShaderPrecisionFormat)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLShaderPrecisionFormat.rangeMin Mozilla WebGLShaderPrecisionFormat.rangeMin documentation> 
+getRangeMin :: (MonadDOM m) => WebGLShaderPrecisionFormat -> m Int
+getRangeMin self
+  = liftDOM (round <$> ((self ^. js "rangeMin") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLShaderPrecisionFormat.rangeMax Mozilla WebGLShaderPrecisionFormat.rangeMax documentation> 
+getRangeMax :: (MonadDOM m) => WebGLShaderPrecisionFormat -> m Int
+getRangeMax self
+  = liftDOM (round <$> ((self ^. js "rangeMax") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLShaderPrecisionFormat.precision Mozilla WebGLShaderPrecisionFormat.precision documentation> 
+getPrecision :: (MonadDOM m) => WebGLShaderPrecisionFormat -> m Int
+getPrecision self
+  = liftDOM (round <$> ((self ^. js "precision") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/WebKitAnimationEvent.hs b/src/Language/Javascript/JSaddle/DOM/Generated/WebKitAnimationEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/WebKitAnimationEvent.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.WebKitAnimationEvent
+       (getAnimationName, getElapsedTime, WebKitAnimationEvent,
+        castToWebKitAnimationEvent, gTypeWebKitAnimationEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitAnimationEvent.animationName Mozilla WebKitAnimationEvent.animationName documentation> 
+getAnimationName ::
+                 (MonadDOM m, FromJSString result) =>
+                   WebKitAnimationEvent -> m result
+getAnimationName self
+  = liftDOM ((self ^. js "animationName") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitAnimationEvent.elapsedTime Mozilla WebKitAnimationEvent.elapsedTime documentation> 
+getElapsedTime :: (MonadDOM m) => WebKitAnimationEvent -> m Double
+getElapsedTime self
+  = liftDOM ((self ^. js "elapsedTime") >>= valToNumber)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/WebKitCSSFilterValue.hs b/src/Language/Javascript/JSaddle/DOM/Generated/WebKitCSSFilterValue.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/WebKitCSSFilterValue.hs
@@ -0,0 +1,45 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.WebKitCSSFilterValue
+       (_get, pattern CSS_FILTER_REFERENCE, pattern CSS_FILTER_GRAYSCALE,
+        pattern CSS_FILTER_SEPIA, pattern CSS_FILTER_SATURATE,
+        pattern CSS_FILTER_HUE_ROTATE, pattern CSS_FILTER_INVERT,
+        pattern CSS_FILTER_OPACITY, pattern CSS_FILTER_BRIGHTNESS,
+        pattern CSS_FILTER_CONTRAST, pattern CSS_FILTER_BLUR,
+        pattern CSS_FILTER_DROP_SHADOW, getOperationType,
+        WebKitCSSFilterValue, castToWebKitCSSFilterValue,
+        gTypeWebKitCSSFilterValue)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSFilterValue._get Mozilla WebKitCSSFilterValue._get documentation> 
+_get ::
+     (MonadDOM m) => WebKitCSSFilterValue -> Word -> m (Maybe CSSValue)
+_get self index
+  = liftDOM ((self ^. jsf "_get" [toJSVal index]) >>= fromJSVal)
+pattern CSS_FILTER_REFERENCE = 1
+pattern CSS_FILTER_GRAYSCALE = 2
+pattern CSS_FILTER_SEPIA = 3
+pattern CSS_FILTER_SATURATE = 4
+pattern CSS_FILTER_HUE_ROTATE = 5
+pattern CSS_FILTER_INVERT = 6
+pattern CSS_FILTER_OPACITY = 7
+pattern CSS_FILTER_BRIGHTNESS = 8
+pattern CSS_FILTER_CONTRAST = 9
+pattern CSS_FILTER_BLUR = 10
+pattern CSS_FILTER_DROP_SHADOW = 11
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSFilterValue.operationType Mozilla WebKitCSSFilterValue.operationType documentation> 
+getOperationType :: (MonadDOM m) => WebKitCSSFilterValue -> m Word
+getOperationType self
+  = liftDOM
+      (round <$> ((self ^. js "operationType") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/WebKitCSSMatrix.hs b/src/Language/Javascript/JSaddle/DOM/Generated/WebKitCSSMatrix.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/WebKitCSSMatrix.hs
@@ -0,0 +1,289 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.WebKitCSSMatrix
+       (newWebKitCSSMatrix, setMatrixValue, multiply, inverse, translate,
+        scale, rotate, rotateAxisAngle, skewX, skewY, toString, setA, getA,
+        setB, getB, setC, getC, setD, getD, setE, getE, setF, getF, setM11,
+        getM11, setM12, getM12, setM13, getM13, setM14, getM14, setM21,
+        getM21, setM22, getM22, setM23, getM23, setM24, getM24, setM31,
+        getM31, setM32, getM32, setM33, getM33, setM34, getM34, setM41,
+        getM41, setM42, getM42, setM43, getM43, setM44, getM44,
+        WebKitCSSMatrix, castToWebKitCSSMatrix, gTypeWebKitCSSMatrix)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix Mozilla WebKitCSSMatrix documentation> 
+newWebKitCSSMatrix ::
+                   (MonadDOM m, ToJSString cssValue) => cssValue -> m WebKitCSSMatrix
+newWebKitCSSMatrix cssValue
+  = liftDOM
+      (WebKitCSSMatrix <$>
+         new (jsg "WebKitCSSMatrix") [toJSVal cssValue])
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.setMatrixValue Mozilla WebKitCSSMatrix.setMatrixValue documentation> 
+setMatrixValue ::
+               (MonadDOM m, ToJSString string) =>
+                 WebKitCSSMatrix -> string -> m ()
+setMatrixValue self string
+  = liftDOM (void (self ^. jsf "setMatrixValue" [toJSVal string]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.multiply Mozilla WebKitCSSMatrix.multiply documentation> 
+multiply ::
+         (MonadDOM m) =>
+           WebKitCSSMatrix ->
+             Maybe WebKitCSSMatrix -> m (Maybe WebKitCSSMatrix)
+multiply self secondMatrix
+  = liftDOM
+      ((self ^. jsf "multiply" [toJSVal secondMatrix]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.inverse Mozilla WebKitCSSMatrix.inverse documentation> 
+inverse ::
+        (MonadDOM m) => WebKitCSSMatrix -> m (Maybe WebKitCSSMatrix)
+inverse self = liftDOM ((self ^. js "inverse") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.translate Mozilla WebKitCSSMatrix.translate documentation> 
+translate ::
+          (MonadDOM m) =>
+            WebKitCSSMatrix ->
+              Double -> Double -> Double -> m (Maybe WebKitCSSMatrix)
+translate self x y z
+  = liftDOM
+      ((self ^. jsf "translate" [toJSVal x, toJSVal y, toJSVal z]) >>=
+         fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.scale Mozilla WebKitCSSMatrix.scale documentation> 
+scale ::
+      (MonadDOM m) =>
+        WebKitCSSMatrix ->
+          Double -> Double -> Double -> m (Maybe WebKitCSSMatrix)
+scale self scaleX scaleY scaleZ
+  = liftDOM
+      ((self ^. jsf "scale"
+          [toJSVal scaleX, toJSVal scaleY, toJSVal scaleZ])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.rotate Mozilla WebKitCSSMatrix.rotate documentation> 
+rotate ::
+       (MonadDOM m) =>
+         WebKitCSSMatrix ->
+           Double -> Double -> Double -> m (Maybe WebKitCSSMatrix)
+rotate self rotX rotY rotZ
+  = liftDOM
+      ((self ^. jsf "rotate" [toJSVal rotX, toJSVal rotY, toJSVal rotZ])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.rotateAxisAngle Mozilla WebKitCSSMatrix.rotateAxisAngle documentation> 
+rotateAxisAngle ::
+                (MonadDOM m) =>
+                  WebKitCSSMatrix ->
+                    Double -> Double -> Double -> Double -> m (Maybe WebKitCSSMatrix)
+rotateAxisAngle self x y z angle
+  = liftDOM
+      ((self ^. jsf "rotateAxisAngle"
+          [toJSVal x, toJSVal y, toJSVal z, toJSVal angle])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.skewX Mozilla WebKitCSSMatrix.skewX documentation> 
+skewX ::
+      (MonadDOM m) =>
+        WebKitCSSMatrix -> Double -> m (Maybe WebKitCSSMatrix)
+skewX self angle
+  = liftDOM ((self ^. jsf "skewX" [toJSVal angle]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.skewY Mozilla WebKitCSSMatrix.skewY documentation> 
+skewY ::
+      (MonadDOM m) =>
+        WebKitCSSMatrix -> Double -> m (Maybe WebKitCSSMatrix)
+skewY self angle
+  = liftDOM ((self ^. jsf "skewY" [toJSVal angle]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.toString Mozilla WebKitCSSMatrix.toString documentation> 
+toString ::
+         (MonadDOM m, FromJSString result) => WebKitCSSMatrix -> m result
+toString self
+  = liftDOM ((self ^. js "toString") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.a Mozilla WebKitCSSMatrix.a documentation> 
+setA :: (MonadDOM m) => WebKitCSSMatrix -> Double -> m ()
+setA self val = liftDOM (self ^. jss "a" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.a Mozilla WebKitCSSMatrix.a documentation> 
+getA :: (MonadDOM m) => WebKitCSSMatrix -> m Double
+getA self = liftDOM ((self ^. js "a") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.b Mozilla WebKitCSSMatrix.b documentation> 
+setB :: (MonadDOM m) => WebKitCSSMatrix -> Double -> m ()
+setB self val = liftDOM (self ^. jss "b" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.b Mozilla WebKitCSSMatrix.b documentation> 
+getB :: (MonadDOM m) => WebKitCSSMatrix -> m Double
+getB self = liftDOM ((self ^. js "b") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.c Mozilla WebKitCSSMatrix.c documentation> 
+setC :: (MonadDOM m) => WebKitCSSMatrix -> Double -> m ()
+setC self val = liftDOM (self ^. jss "c" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.c Mozilla WebKitCSSMatrix.c documentation> 
+getC :: (MonadDOM m) => WebKitCSSMatrix -> m Double
+getC self = liftDOM ((self ^. js "c") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.d Mozilla WebKitCSSMatrix.d documentation> 
+setD :: (MonadDOM m) => WebKitCSSMatrix -> Double -> m ()
+setD self val = liftDOM (self ^. jss "d" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.d Mozilla WebKitCSSMatrix.d documentation> 
+getD :: (MonadDOM m) => WebKitCSSMatrix -> m Double
+getD self = liftDOM ((self ^. js "d") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.e Mozilla WebKitCSSMatrix.e documentation> 
+setE :: (MonadDOM m) => WebKitCSSMatrix -> Double -> m ()
+setE self val = liftDOM (self ^. jss "e" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.e Mozilla WebKitCSSMatrix.e documentation> 
+getE :: (MonadDOM m) => WebKitCSSMatrix -> m Double
+getE self = liftDOM ((self ^. js "e") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.f Mozilla WebKitCSSMatrix.f documentation> 
+setF :: (MonadDOM m) => WebKitCSSMatrix -> Double -> m ()
+setF self val = liftDOM (self ^. jss "f" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.f Mozilla WebKitCSSMatrix.f documentation> 
+getF :: (MonadDOM m) => WebKitCSSMatrix -> m Double
+getF self = liftDOM ((self ^. js "f") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m11 Mozilla WebKitCSSMatrix.m11 documentation> 
+setM11 :: (MonadDOM m) => WebKitCSSMatrix -> Double -> m ()
+setM11 self val = liftDOM (self ^. jss "m11" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m11 Mozilla WebKitCSSMatrix.m11 documentation> 
+getM11 :: (MonadDOM m) => WebKitCSSMatrix -> m Double
+getM11 self = liftDOM ((self ^. js "m11") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m12 Mozilla WebKitCSSMatrix.m12 documentation> 
+setM12 :: (MonadDOM m) => WebKitCSSMatrix -> Double -> m ()
+setM12 self val = liftDOM (self ^. jss "m12" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m12 Mozilla WebKitCSSMatrix.m12 documentation> 
+getM12 :: (MonadDOM m) => WebKitCSSMatrix -> m Double
+getM12 self = liftDOM ((self ^. js "m12") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m13 Mozilla WebKitCSSMatrix.m13 documentation> 
+setM13 :: (MonadDOM m) => WebKitCSSMatrix -> Double -> m ()
+setM13 self val = liftDOM (self ^. jss "m13" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m13 Mozilla WebKitCSSMatrix.m13 documentation> 
+getM13 :: (MonadDOM m) => WebKitCSSMatrix -> m Double
+getM13 self = liftDOM ((self ^. js "m13") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m14 Mozilla WebKitCSSMatrix.m14 documentation> 
+setM14 :: (MonadDOM m) => WebKitCSSMatrix -> Double -> m ()
+setM14 self val = liftDOM (self ^. jss "m14" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m14 Mozilla WebKitCSSMatrix.m14 documentation> 
+getM14 :: (MonadDOM m) => WebKitCSSMatrix -> m Double
+getM14 self = liftDOM ((self ^. js "m14") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m21 Mozilla WebKitCSSMatrix.m21 documentation> 
+setM21 :: (MonadDOM m) => WebKitCSSMatrix -> Double -> m ()
+setM21 self val = liftDOM (self ^. jss "m21" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m21 Mozilla WebKitCSSMatrix.m21 documentation> 
+getM21 :: (MonadDOM m) => WebKitCSSMatrix -> m Double
+getM21 self = liftDOM ((self ^. js "m21") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m22 Mozilla WebKitCSSMatrix.m22 documentation> 
+setM22 :: (MonadDOM m) => WebKitCSSMatrix -> Double -> m ()
+setM22 self val = liftDOM (self ^. jss "m22" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m22 Mozilla WebKitCSSMatrix.m22 documentation> 
+getM22 :: (MonadDOM m) => WebKitCSSMatrix -> m Double
+getM22 self = liftDOM ((self ^. js "m22") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m23 Mozilla WebKitCSSMatrix.m23 documentation> 
+setM23 :: (MonadDOM m) => WebKitCSSMatrix -> Double -> m ()
+setM23 self val = liftDOM (self ^. jss "m23" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m23 Mozilla WebKitCSSMatrix.m23 documentation> 
+getM23 :: (MonadDOM m) => WebKitCSSMatrix -> m Double
+getM23 self = liftDOM ((self ^. js "m23") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m24 Mozilla WebKitCSSMatrix.m24 documentation> 
+setM24 :: (MonadDOM m) => WebKitCSSMatrix -> Double -> m ()
+setM24 self val = liftDOM (self ^. jss "m24" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m24 Mozilla WebKitCSSMatrix.m24 documentation> 
+getM24 :: (MonadDOM m) => WebKitCSSMatrix -> m Double
+getM24 self = liftDOM ((self ^. js "m24") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m31 Mozilla WebKitCSSMatrix.m31 documentation> 
+setM31 :: (MonadDOM m) => WebKitCSSMatrix -> Double -> m ()
+setM31 self val = liftDOM (self ^. jss "m31" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m31 Mozilla WebKitCSSMatrix.m31 documentation> 
+getM31 :: (MonadDOM m) => WebKitCSSMatrix -> m Double
+getM31 self = liftDOM ((self ^. js "m31") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m32 Mozilla WebKitCSSMatrix.m32 documentation> 
+setM32 :: (MonadDOM m) => WebKitCSSMatrix -> Double -> m ()
+setM32 self val = liftDOM (self ^. jss "m32" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m32 Mozilla WebKitCSSMatrix.m32 documentation> 
+getM32 :: (MonadDOM m) => WebKitCSSMatrix -> m Double
+getM32 self = liftDOM ((self ^. js "m32") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m33 Mozilla WebKitCSSMatrix.m33 documentation> 
+setM33 :: (MonadDOM m) => WebKitCSSMatrix -> Double -> m ()
+setM33 self val = liftDOM (self ^. jss "m33" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m33 Mozilla WebKitCSSMatrix.m33 documentation> 
+getM33 :: (MonadDOM m) => WebKitCSSMatrix -> m Double
+getM33 self = liftDOM ((self ^. js "m33") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m34 Mozilla WebKitCSSMatrix.m34 documentation> 
+setM34 :: (MonadDOM m) => WebKitCSSMatrix -> Double -> m ()
+setM34 self val = liftDOM (self ^. jss "m34" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m34 Mozilla WebKitCSSMatrix.m34 documentation> 
+getM34 :: (MonadDOM m) => WebKitCSSMatrix -> m Double
+getM34 self = liftDOM ((self ^. js "m34") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m41 Mozilla WebKitCSSMatrix.m41 documentation> 
+setM41 :: (MonadDOM m) => WebKitCSSMatrix -> Double -> m ()
+setM41 self val = liftDOM (self ^. jss "m41" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m41 Mozilla WebKitCSSMatrix.m41 documentation> 
+getM41 :: (MonadDOM m) => WebKitCSSMatrix -> m Double
+getM41 self = liftDOM ((self ^. js "m41") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m42 Mozilla WebKitCSSMatrix.m42 documentation> 
+setM42 :: (MonadDOM m) => WebKitCSSMatrix -> Double -> m ()
+setM42 self val = liftDOM (self ^. jss "m42" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m42 Mozilla WebKitCSSMatrix.m42 documentation> 
+getM42 :: (MonadDOM m) => WebKitCSSMatrix -> m Double
+getM42 self = liftDOM ((self ^. js "m42") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m43 Mozilla WebKitCSSMatrix.m43 documentation> 
+setM43 :: (MonadDOM m) => WebKitCSSMatrix -> Double -> m ()
+setM43 self val = liftDOM (self ^. jss "m43" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m43 Mozilla WebKitCSSMatrix.m43 documentation> 
+getM43 :: (MonadDOM m) => WebKitCSSMatrix -> m Double
+getM43 self = liftDOM ((self ^. js "m43") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m44 Mozilla WebKitCSSMatrix.m44 documentation> 
+setM44 :: (MonadDOM m) => WebKitCSSMatrix -> Double -> m ()
+setM44 self val = liftDOM (self ^. jss "m44" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m44 Mozilla WebKitCSSMatrix.m44 documentation> 
+getM44 :: (MonadDOM m) => WebKitCSSMatrix -> m Double
+getM44 self = liftDOM ((self ^. js "m44") >>= valToNumber)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/WebKitCSSRegionRule.hs b/src/Language/Javascript/JSaddle/DOM/Generated/WebKitCSSRegionRule.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/WebKitCSSRegionRule.hs
@@ -0,0 +1,21 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.WebKitCSSRegionRule
+       (getCssRules, WebKitCSSRegionRule, castToWebKitCSSRegionRule,
+        gTypeWebKitCSSRegionRule)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSRegionRule.cssRules Mozilla WebKitCSSRegionRule.cssRules documentation> 
+getCssRules ::
+            (MonadDOM m) => WebKitCSSRegionRule -> m (Maybe CSSRuleList)
+getCssRules self = liftDOM ((self ^. js "cssRules") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/WebKitCSSTransformValue.hs b/src/Language/Javascript/JSaddle/DOM/Generated/WebKitCSSTransformValue.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/WebKitCSSTransformValue.hs
@@ -0,0 +1,59 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.WebKitCSSTransformValue
+       (_get, pattern CSS_TRANSLATE, pattern CSS_TRANSLATEX,
+        pattern CSS_TRANSLATEY, pattern CSS_ROTATE, pattern CSS_SCALE,
+        pattern CSS_SCALEX, pattern CSS_SCALEY, pattern CSS_SKEW,
+        pattern CSS_SKEWX, pattern CSS_SKEWY, pattern CSS_MATRIX,
+        pattern CSS_TRANSLATEZ, pattern CSS_TRANSLATE3D,
+        pattern CSS_ROTATEX, pattern CSS_ROTATEY, pattern CSS_ROTATEZ,
+        pattern CSS_ROTATE3D, pattern CSS_SCALEZ, pattern CSS_SCALE3D,
+        pattern CSS_PERSPECTIVE, pattern CSS_MATRIX3D, getOperationType,
+        WebKitCSSTransformValue, castToWebKitCSSTransformValue,
+        gTypeWebKitCSSTransformValue)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSTransformValue._get Mozilla WebKitCSSTransformValue._get documentation> 
+_get ::
+     (MonadDOM m) =>
+       WebKitCSSTransformValue -> Word -> m (Maybe CSSValue)
+_get self index
+  = liftDOM ((self ^. jsf "_get" [toJSVal index]) >>= fromJSVal)
+pattern CSS_TRANSLATE = 1
+pattern CSS_TRANSLATEX = 2
+pattern CSS_TRANSLATEY = 3
+pattern CSS_ROTATE = 4
+pattern CSS_SCALE = 5
+pattern CSS_SCALEX = 6
+pattern CSS_SCALEY = 7
+pattern CSS_SKEW = 8
+pattern CSS_SKEWX = 9
+pattern CSS_SKEWY = 10
+pattern CSS_MATRIX = 11
+pattern CSS_TRANSLATEZ = 12
+pattern CSS_TRANSLATE3D = 13
+pattern CSS_ROTATEX = 14
+pattern CSS_ROTATEY = 15
+pattern CSS_ROTATEZ = 16
+pattern CSS_ROTATE3D = 17
+pattern CSS_SCALEZ = 18
+pattern CSS_SCALE3D = 19
+pattern CSS_PERSPECTIVE = 20
+pattern CSS_MATRIX3D = 21
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSTransformValue.operationType Mozilla WebKitCSSTransformValue.operationType documentation> 
+getOperationType ::
+                 (MonadDOM m) => WebKitCSSTransformValue -> m Word
+getOperationType self
+  = liftDOM
+      (round <$> ((self ^. js "operationType") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/WebKitCSSViewportRule.hs b/src/Language/Javascript/JSaddle/DOM/Generated/WebKitCSSViewportRule.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/WebKitCSSViewportRule.hs
@@ -0,0 +1,22 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.WebKitCSSViewportRule
+       (getStyle, WebKitCSSViewportRule, castToWebKitCSSViewportRule,
+        gTypeWebKitCSSViewportRule)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSViewportRule.style Mozilla WebKitCSSViewportRule.style documentation> 
+getStyle ::
+         (MonadDOM m) =>
+           WebKitCSSViewportRule -> m (Maybe CSSStyleDeclaration)
+getStyle self = liftDOM ((self ^. js "style") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/WebKitNamedFlow.hs b/src/Language/Javascript/JSaddle/DOM/Generated/WebKitNamedFlow.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/WebKitNamedFlow.hs
@@ -0,0 +1,50 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.WebKitNamedFlow
+       (getRegionsByContent, getRegions, getContent, getName, getOverset,
+        getFirstEmptyRegionIndex, WebKitNamedFlow, castToWebKitNamedFlow,
+        gTypeWebKitNamedFlow)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlow.getRegionsByContent Mozilla WebKitNamedFlow.getRegionsByContent documentation> 
+getRegionsByContent ::
+                    (MonadDOM m, IsNode contentNode) =>
+                      WebKitNamedFlow -> Maybe contentNode -> m (Maybe NodeList)
+getRegionsByContent self contentNode
+  = liftDOM
+      ((self ^. jsf "getRegionsByContent" [toJSVal contentNode]) >>=
+         fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlow.getRegions Mozilla WebKitNamedFlow.getRegions documentation> 
+getRegions :: (MonadDOM m) => WebKitNamedFlow -> m (Maybe NodeList)
+getRegions self = liftDOM ((self ^. js "getRegions") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlow.getContent Mozilla WebKitNamedFlow.getContent documentation> 
+getContent :: (MonadDOM m) => WebKitNamedFlow -> m (Maybe NodeList)
+getContent self = liftDOM ((self ^. js "getContent") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlow.name Mozilla WebKitNamedFlow.name documentation> 
+getName ::
+        (MonadDOM m, FromJSString result) => WebKitNamedFlow -> m result
+getName self = liftDOM ((self ^. js "name") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlow.overset Mozilla WebKitNamedFlow.overset documentation> 
+getOverset :: (MonadDOM m) => WebKitNamedFlow -> m Bool
+getOverset self = liftDOM ((self ^. js "overset") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlow.firstEmptyRegionIndex Mozilla WebKitNamedFlow.firstEmptyRegionIndex documentation> 
+getFirstEmptyRegionIndex ::
+                         (MonadDOM m) => WebKitNamedFlow -> m Int
+getFirstEmptyRegionIndex self
+  = liftDOM
+      (round <$> ((self ^. js "firstEmptyRegionIndex") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/WebKitNamespace.hs b/src/Language/Javascript/JSaddle/DOM/Generated/WebKitNamespace.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/WebKitNamespace.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.WebKitNamespace
+       (getMessageHandlers, WebKitNamespace, castToWebKitNamespace,
+        gTypeWebKitNamespace)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamespace.messageHandlers Mozilla WebKitNamespace.messageHandlers documentation> 
+getMessageHandlers ::
+                   (MonadDOM m) =>
+                     WebKitNamespace -> m (Maybe UserMessageHandlersNamespace)
+getMessageHandlers self
+  = liftDOM ((self ^. js "messageHandlers") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/WebKitPlaybackTargetAvailabilityEvent.hs b/src/Language/Javascript/JSaddle/DOM/Generated/WebKitPlaybackTargetAvailabilityEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/WebKitPlaybackTargetAvailabilityEvent.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.WebKitPlaybackTargetAvailabilityEvent
+       (getAvailability, WebKitPlaybackTargetAvailabilityEvent,
+        castToWebKitPlaybackTargetAvailabilityEvent,
+        gTypeWebKitPlaybackTargetAvailabilityEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitPlaybackTargetAvailabilityEvent.availability Mozilla WebKitPlaybackTargetAvailabilityEvent.availability documentation> 
+getAvailability ::
+                (MonadDOM m, FromJSString result) =>
+                  WebKitPlaybackTargetAvailabilityEvent -> m result
+getAvailability self
+  = liftDOM ((self ^. js "availability") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/WebKitPoint.hs b/src/Language/Javascript/JSaddle/DOM/Generated/WebKitPoint.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/WebKitPoint.hs
@@ -0,0 +1,45 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.WebKitPoint
+       (newWebKitPoint, newWebKitPoint', setX, getX, setY, getY,
+        WebKitPoint, castToWebKitPoint, gTypeWebKitPoint)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitPoint Mozilla WebKitPoint documentation> 
+newWebKitPoint :: (MonadDOM m) => m WebKitPoint
+newWebKitPoint
+  = liftDOM (WebKitPoint <$> new (jsg "WebKitPoint") ())
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitPoint Mozilla WebKitPoint documentation> 
+newWebKitPoint' :: (MonadDOM m) => Float -> Float -> m WebKitPoint
+newWebKitPoint' x y
+  = liftDOM
+      (WebKitPoint <$> new (jsg "WebKitPoint") [toJSVal x, toJSVal y])
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitPoint.x Mozilla WebKitPoint.x documentation> 
+setX :: (MonadDOM m) => WebKitPoint -> Float -> m ()
+setX self val = liftDOM (self ^. jss "x" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitPoint.x Mozilla WebKitPoint.x documentation> 
+getX :: (MonadDOM m) => WebKitPoint -> m Float
+getX self
+  = liftDOM (realToFrac <$> ((self ^. js "x") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitPoint.y Mozilla WebKitPoint.y documentation> 
+setY :: (MonadDOM m) => WebKitPoint -> Float -> m ()
+setY self val = liftDOM (self ^. jss "y" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitPoint.y Mozilla WebKitPoint.y documentation> 
+getY :: (MonadDOM m) => WebKitPoint -> m Float
+getY self
+  = liftDOM (realToFrac <$> ((self ^. js "y") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/WebKitTransitionEvent.hs b/src/Language/Javascript/JSaddle/DOM/Generated/WebKitTransitionEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/WebKitTransitionEvent.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.WebKitTransitionEvent
+       (getPropertyName, getElapsedTime, getPseudoElement,
+        WebKitTransitionEvent, castToWebKitTransitionEvent,
+        gTypeWebKitTransitionEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitTransitionEvent.propertyName Mozilla WebKitTransitionEvent.propertyName documentation> 
+getPropertyName ::
+                (MonadDOM m, FromJSString result) =>
+                  WebKitTransitionEvent -> m result
+getPropertyName self
+  = liftDOM ((self ^. js "propertyName") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitTransitionEvent.elapsedTime Mozilla WebKitTransitionEvent.elapsedTime documentation> 
+getElapsedTime :: (MonadDOM m) => WebKitTransitionEvent -> m Double
+getElapsedTime self
+  = liftDOM ((self ^. js "elapsedTime") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitTransitionEvent.pseudoElement Mozilla WebKitTransitionEvent.pseudoElement documentation> 
+getPseudoElement ::
+                 (MonadDOM m, FromJSString result) =>
+                   WebKitTransitionEvent -> m result
+getPseudoElement self
+  = liftDOM ((self ^. js "pseudoElement") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/WebSocket.hs b/src/Language/Javascript/JSaddle/DOM/Generated/WebSocket.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/WebSocket.hs
@@ -0,0 +1,133 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.WebSocket
+       (newWebSocket, newWebSocket', send, sendView, sendBlob, sendString,
+        close, pattern CONNECTING, pattern OPEN, pattern CLOSING,
+        pattern CLOSED, getUrl, getReadyState, getBufferedAmount, open,
+        message, error, closeEvent, getProtocol, getExtensions,
+        setBinaryType, getBinaryType, WebSocket, castToWebSocket,
+        gTypeWebSocket)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket Mozilla WebSocket documentation> 
+newWebSocket ::
+             (MonadDOM m, ToJSString url, ToJSString protocols) =>
+               url -> Maybe [protocols] -> m WebSocket
+newWebSocket url protocols
+  = liftDOM
+      (WebSocket <$>
+         new (jsg "WebSocket")
+           [toJSVal url, toJSVal (fmap array protocols)])
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket Mozilla WebSocket documentation> 
+newWebSocket' ::
+              (MonadDOM m, ToJSString url, ToJSString protocol) =>
+                url -> protocol -> m WebSocket
+newWebSocket' url protocol
+  = liftDOM
+      (WebSocket <$>
+         new (jsg "WebSocket") [toJSVal url, toJSVal protocol])
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.send Mozilla WebSocket.send documentation> 
+send ::
+     (MonadDOM m, IsArrayBuffer data') =>
+       WebSocket -> Maybe data' -> m ()
+send self data'
+  = liftDOM (void (self ^. jsf "send" [toJSVal data']))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.send Mozilla WebSocket.send documentation> 
+sendView ::
+         (MonadDOM m, IsArrayBufferView data') =>
+           WebSocket -> Maybe data' -> m ()
+sendView self data'
+  = liftDOM (void (self ^. jsf "send" [toJSVal data']))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.send Mozilla WebSocket.send documentation> 
+sendBlob ::
+         (MonadDOM m, IsBlob data') => WebSocket -> Maybe data' -> m ()
+sendBlob self data'
+  = liftDOM (void (self ^. jsf "send" [toJSVal data']))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.send Mozilla WebSocket.send documentation> 
+sendString ::
+           (MonadDOM m, ToJSString data') => WebSocket -> data' -> m ()
+sendString self data'
+  = liftDOM (void (self ^. jsf "send" [toJSVal data']))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.close Mozilla WebSocket.close documentation> 
+close ::
+      (MonadDOM m, ToJSString reason) =>
+        WebSocket -> Word -> reason -> m ()
+close self code reason
+  = liftDOM
+      (void (self ^. jsf "close" [toJSVal code, toJSVal reason]))
+pattern CONNECTING = 0
+pattern OPEN = 1
+pattern CLOSING = 2
+pattern CLOSED = 3
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.url Mozilla WebSocket.url documentation> 
+getUrl ::
+       (MonadDOM m, FromJSString result) => WebSocket -> m result
+getUrl self = liftDOM ((self ^. js "url") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.readyState Mozilla WebSocket.readyState documentation> 
+getReadyState :: (MonadDOM m) => WebSocket -> m Word
+getReadyState self
+  = liftDOM (round <$> ((self ^. js "readyState") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.bufferedAmount Mozilla WebSocket.bufferedAmount documentation> 
+getBufferedAmount :: (MonadDOM m) => WebSocket -> m Word
+getBufferedAmount self
+  = liftDOM
+      (round <$> ((self ^. js "bufferedAmount") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.onopen Mozilla WebSocket.onopen documentation> 
+open :: EventName WebSocket Event
+open = unsafeEventName (toJSString "open")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.onmessage Mozilla WebSocket.onmessage documentation> 
+message :: EventName WebSocket MessageEvent
+message = unsafeEventName (toJSString "message")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.onerror Mozilla WebSocket.onerror documentation> 
+error :: EventName WebSocket UIEvent
+error = unsafeEventName (toJSString "error")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.onclose Mozilla WebSocket.onclose documentation> 
+closeEvent :: EventName WebSocket Event
+closeEvent = unsafeEventName (toJSString "close")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.protocol Mozilla WebSocket.protocol documentation> 
+getProtocol ::
+            (MonadDOM m, FromJSString result) => WebSocket -> m (Maybe result)
+getProtocol self
+  = liftDOM ((self ^. js "protocol") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.extensions Mozilla WebSocket.extensions documentation> 
+getExtensions ::
+              (MonadDOM m, FromJSString result) => WebSocket -> m (Maybe result)
+getExtensions self
+  = liftDOM ((self ^. js "extensions") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.binaryType Mozilla WebSocket.binaryType documentation> 
+setBinaryType ::
+              (MonadDOM m, ToJSString val) => WebSocket -> val -> m ()
+setBinaryType self val
+  = liftDOM (self ^. jss "binaryType" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.binaryType Mozilla WebSocket.binaryType documentation> 
+getBinaryType ::
+              (MonadDOM m, FromJSString result) => WebSocket -> m result
+getBinaryType self
+  = liftDOM ((self ^. js "binaryType") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/WheelEvent.hs b/src/Language/Javascript/JSaddle/DOM/Generated/WheelEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/WheelEvent.hs
@@ -0,0 +1,79 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.WheelEvent
+       (initWebKitWheelEvent, pattern DOM_DELTA_PIXEL,
+        pattern DOM_DELTA_LINE, pattern DOM_DELTA_PAGE, getDeltaX,
+        getDeltaY, getDeltaZ, getDeltaMode, getWheelDeltaX, getWheelDeltaY,
+        getWheelDelta, getWebkitDirectionInvertedFromDevice, WheelEvent,
+        castToWheelEvent, gTypeWheelEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent.initWebKitWheelEvent Mozilla WheelEvent.initWebKitWheelEvent documentation> 
+initWebKitWheelEvent ::
+                     (MonadDOM m) =>
+                       WheelEvent ->
+                         Int ->
+                           Int ->
+                             Maybe Window ->
+                               Int -> Int -> Int -> Int -> Bool -> Bool -> Bool -> Bool -> m ()
+initWebKitWheelEvent self wheelDeltaX wheelDeltaY view screenX
+  screenY clientX clientY ctrlKey altKey shiftKey metaKey
+  = liftDOM
+      (void
+         (self ^. jsf "initWebKitWheelEvent"
+            [toJSVal wheelDeltaX, toJSVal wheelDeltaY, toJSVal view,
+             toJSVal screenX, toJSVal screenY, toJSVal clientX, toJSVal clientY,
+             toJSVal ctrlKey, toJSVal altKey, toJSVal shiftKey,
+             toJSVal metaKey]))
+pattern DOM_DELTA_PIXEL = 0
+pattern DOM_DELTA_LINE = 1
+pattern DOM_DELTA_PAGE = 2
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent.deltaX Mozilla WheelEvent.deltaX documentation> 
+getDeltaX :: (MonadDOM m) => WheelEvent -> m Double
+getDeltaX self = liftDOM ((self ^. js "deltaX") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent.deltaY Mozilla WheelEvent.deltaY documentation> 
+getDeltaY :: (MonadDOM m) => WheelEvent -> m Double
+getDeltaY self = liftDOM ((self ^. js "deltaY") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent.deltaZ Mozilla WheelEvent.deltaZ documentation> 
+getDeltaZ :: (MonadDOM m) => WheelEvent -> m Double
+getDeltaZ self = liftDOM ((self ^. js "deltaZ") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent.deltaMode Mozilla WheelEvent.deltaMode documentation> 
+getDeltaMode :: (MonadDOM m) => WheelEvent -> m Word
+getDeltaMode self
+  = liftDOM (round <$> ((self ^. js "deltaMode") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent.wheelDeltaX Mozilla WheelEvent.wheelDeltaX documentation> 
+getWheelDeltaX :: (MonadDOM m) => WheelEvent -> m Int
+getWheelDeltaX self
+  = liftDOM (round <$> ((self ^. js "wheelDeltaX") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent.wheelDeltaY Mozilla WheelEvent.wheelDeltaY documentation> 
+getWheelDeltaY :: (MonadDOM m) => WheelEvent -> m Int
+getWheelDeltaY self
+  = liftDOM (round <$> ((self ^. js "wheelDeltaY") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent.wheelDelta Mozilla WheelEvent.wheelDelta documentation> 
+getWheelDelta :: (MonadDOM m) => WheelEvent -> m Int
+getWheelDelta self
+  = liftDOM (round <$> ((self ^. js "wheelDelta") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent.webkitDirectionInvertedFromDevice Mozilla WheelEvent.webkitDirectionInvertedFromDevice documentation> 
+getWebkitDirectionInvertedFromDevice ::
+                                     (MonadDOM m) => WheelEvent -> m Bool
+getWebkitDirectionInvertedFromDevice self
+  = liftDOM
+      ((self ^. js "webkitDirectionInvertedFromDevice") >>= valToBool)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/Window.hs b/src/Language/Javascript/JSaddle/DOM/Generated/Window.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/Window.hs
@@ -0,0 +1,943 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.Window
+       (openDatabase, getSelection, focus, blur, close, print, stop, open,
+        showModalDialog, alert, confirm, prompt, find, scrollBy, scrollTo,
+        scroll, moveBy, moveTo, resizeBy, resizeTo, matchMedia,
+        getComputedStyle, getMatchedCSSRules,
+        webkitConvertPointFromPageToNode, webkitConvertPointFromNodeToPage,
+        postMessage, requestAnimationFrame, cancelAnimationFrame,
+        webkitRequestAnimationFrame, webkitCancelAnimationFrame,
+        webkitCancelRequestAnimationFrame, captureEvents, releaseEvents,
+        getWebkitIndexedDB, getIndexedDB, getWebkitStorageInfo,
+        getSpeechSynthesis, getScreen, getHistory, getLocationbar,
+        getMenubar, getPersonalbar, getScrollbars, getStatusbar,
+        getToolbar, getNavigator, getClientInformation, getCrypto,
+        setLocation, getLocation, getEvent, getFrameElement,
+        getOffscreenBuffering, getOuterHeight, getOuterWidth,
+        getInnerHeight, getInnerWidth, getScreenX, getScreenY,
+        getScreenLeft, getScreenTop, getScrollX, getScrollY,
+        getPageXOffset, getPageYOffset, getClosed, getLength, setName,
+        getName, setStatus, getStatus, setDefaultStatus, getDefaultStatus,
+        setDefaultstatus, getDefaultstatus, getSelf, getWindow, getFrames,
+        getOpener, getParent, getTop, getDocument, getStyleMedia,
+        getDevicePixelRatio, getApplicationCache, getSessionStorage,
+        getLocalStorage, getOrientation, getPerformance, getCSS, abort,
+        beforeUnload, blurEvent, canPlay, canPlayThrough, change, click,
+        contextMenu, dblClick, drag, dragEnd, dragEnter, dragLeave,
+        dragOver, dragStart, drop, durationChange, emptied, ended, error,
+        focusEvent, hashChange, input, invalid, keyDown, keyPress, keyUp,
+        load, loadedData, loadedMetadata, loadStart, message, mouseDown,
+        mouseEnter, mouseLeave, mouseMove, mouseOut, mouseOver, mouseUp,
+        mouseWheel, offline, online, pageHide, pageShow, pause, play,
+        playing, popState, progress, rateChange, resize, scrollEvent,
+        seeked, seeking, select, stalled, storage, submit, suspend,
+        timeUpdate, unload, volumeChange, waiting, wheel, reset, search,
+        webKitAnimationEnd, webKitAnimationIteration, webKitAnimationStart,
+        animationEnd, animationIteration, animationStart,
+        webKitTransitionEnd, transitionEnd, orientationChange, touchStart,
+        touchMove, touchEnd, touchCancel, gestureStart, gestureChange,
+        gestureEnd, deviceMotion, deviceOrientation, webKitDeviceProximity,
+        webKitWillRevealBottom, webKitWillRevealLeft,
+        webKitWillRevealRight, webKitWillRevealTop, Window, castToWindow,
+        gTypeWindow)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.openDatabase Mozilla Window.openDatabase documentation> 
+openDatabase ::
+             (MonadDOM m, ToJSString name, ToJSString version,
+              ToJSString displayName) =>
+               Window ->
+                 name ->
+                   version ->
+                     displayName -> Word -> Maybe DatabaseCallback -> m (Maybe Database)
+openDatabase self name version displayName estimatedSize
+  creationCallback
+  = liftDOM
+      ((self ^. jsf "openDatabase"
+          [toJSVal name, toJSVal version, toJSVal displayName,
+           toJSVal estimatedSize, toJSVal creationCallback])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.getSelection Mozilla Window.getSelection documentation> 
+getSelection :: (MonadDOM m) => Window -> m (Maybe Selection)
+getSelection self
+  = liftDOM ((self ^. js "getSelection") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.focus Mozilla Window.focus documentation> 
+focus :: (MonadDOM m) => Window -> m ()
+focus self = liftDOM (void (self ^. js "focus"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.blur Mozilla Window.blur documentation> 
+blur :: (MonadDOM m) => Window -> m ()
+blur self = liftDOM (void (self ^. js "blur"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.close Mozilla Window.close documentation> 
+close :: (MonadDOM m) => Window -> m ()
+close self = liftDOM (void (self ^. js "close"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.print Mozilla Window.print documentation> 
+print :: (MonadDOM m) => Window -> m ()
+print self = liftDOM (void (self ^. js "print"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.stop Mozilla Window.stop documentation> 
+stop :: (MonadDOM m) => Window -> m ()
+stop self = liftDOM (void (self ^. js "stop"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.open Mozilla Window.open documentation> 
+open ::
+     (MonadDOM m, ToJSString url, ToJSString name,
+      ToJSString options) =>
+       Window -> url -> name -> options -> m (Maybe Window)
+open self url name options
+  = liftDOM
+      ((self ^. jsf "open" [toJSVal url, toJSVal name, toJSVal options])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.showModalDialog Mozilla Window.showModalDialog documentation> 
+showModalDialog ::
+                (MonadDOM m, ToJSString url, ToJSString featureArgs) =>
+                  Window -> url -> JSVal -> featureArgs -> m JSVal
+showModalDialog self url dialogArgs featureArgs
+  = liftDOM
+      ((self ^. jsf "showModalDialog"
+          [toJSVal url, toJSVal dialogArgs, toJSVal featureArgs])
+         >>= toJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.alert Mozilla Window.alert documentation> 
+alert ::
+      (MonadDOM m, ToJSString message) => Window -> message -> m ()
+alert self message
+  = liftDOM (void (self ^. jsf "alert" [toJSVal message]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.confirm Mozilla Window.confirm documentation> 
+confirm ::
+        (MonadDOM m, ToJSString message) => Window -> message -> m Bool
+confirm self message
+  = liftDOM ((self ^. jsf "confirm" [toJSVal message]) >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.prompt Mozilla Window.prompt documentation> 
+prompt ::
+       (MonadDOM m, ToJSString message, ToJSString defaultValue,
+        FromJSString result) =>
+         Window -> message -> Maybe defaultValue -> m (Maybe result)
+prompt self message defaultValue
+  = liftDOM
+      ((self ^. jsf "prompt" [toJSVal message, toJSVal defaultValue]) >>=
+         fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.find Mozilla Window.find documentation> 
+find ::
+     (MonadDOM m, ToJSString string) =>
+       Window ->
+         string -> Bool -> Bool -> Bool -> Bool -> Bool -> Bool -> m Bool
+find self string caseSensitive backwards wrap wholeWord
+  searchInFrames showDialog
+  = liftDOM
+      ((self ^. jsf "find"
+          [toJSVal string, toJSVal caseSensitive, toJSVal backwards,
+           toJSVal wrap, toJSVal wholeWord, toJSVal searchInFrames,
+           toJSVal showDialog])
+         >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.scrollBy Mozilla Window.scrollBy documentation> 
+scrollBy :: (MonadDOM m) => Window -> Int -> Int -> m ()
+scrollBy self x y
+  = liftDOM (void (self ^. jsf "scrollBy" [toJSVal x, toJSVal y]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.scrollTo Mozilla Window.scrollTo documentation> 
+scrollTo :: (MonadDOM m) => Window -> Int -> Int -> m ()
+scrollTo self x y
+  = liftDOM (void (self ^. jsf "scrollTo" [toJSVal x, toJSVal y]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.scroll Mozilla Window.scroll documentation> 
+scroll :: (MonadDOM m) => Window -> Int -> Int -> m ()
+scroll self x y
+  = liftDOM (void (self ^. jsf "scroll" [toJSVal x, toJSVal y]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.moveBy Mozilla Window.moveBy documentation> 
+moveBy :: (MonadDOM m) => Window -> Float -> Float -> m ()
+moveBy self x y
+  = liftDOM (void (self ^. jsf "moveBy" [toJSVal x, toJSVal y]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.moveTo Mozilla Window.moveTo documentation> 
+moveTo :: (MonadDOM m) => Window -> Float -> Float -> m ()
+moveTo self x y
+  = liftDOM (void (self ^. jsf "moveTo" [toJSVal x, toJSVal y]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.resizeBy Mozilla Window.resizeBy documentation> 
+resizeBy :: (MonadDOM m) => Window -> Float -> Float -> m ()
+resizeBy self x y
+  = liftDOM (void (self ^. jsf "resizeBy" [toJSVal x, toJSVal y]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.resizeTo Mozilla Window.resizeTo documentation> 
+resizeTo :: (MonadDOM m) => Window -> Float -> Float -> m ()
+resizeTo self width height
+  = liftDOM
+      (void (self ^. jsf "resizeTo" [toJSVal width, toJSVal height]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.matchMedia Mozilla Window.matchMedia documentation> 
+matchMedia ::
+           (MonadDOM m, ToJSString query) =>
+             Window -> query -> m (Maybe MediaQueryList)
+matchMedia self query
+  = liftDOM
+      ((self ^. jsf "matchMedia" [toJSVal query]) >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.getComputedStyle Mozilla Window.getComputedStyle documentation> 
+getComputedStyle ::
+                 (MonadDOM m, IsElement element, ToJSString pseudoElement) =>
+                   Window ->
+                     Maybe element ->
+                       Maybe pseudoElement -> m (Maybe CSSStyleDeclaration)
+getComputedStyle self element pseudoElement
+  = liftDOM
+      ((self ^. jsf "getComputedStyle"
+          [toJSVal element, toJSVal pseudoElement])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.getMatchedCSSRules Mozilla Window.getMatchedCSSRules documentation> 
+getMatchedCSSRules ::
+                   (MonadDOM m, IsElement element, ToJSString pseudoElement) =>
+                     Window ->
+                       Maybe element -> Maybe pseudoElement -> m (Maybe CSSRuleList)
+getMatchedCSSRules self element pseudoElement
+  = liftDOM
+      ((self ^. jsf "getMatchedCSSRules"
+          [toJSVal element, toJSVal pseudoElement])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.webkitConvertPointFromPageToNode Mozilla Window.webkitConvertPointFromPageToNode documentation> 
+webkitConvertPointFromPageToNode ::
+                                 (MonadDOM m, IsNode node) =>
+                                   Window ->
+                                     Maybe node -> Maybe WebKitPoint -> m (Maybe WebKitPoint)
+webkitConvertPointFromPageToNode self node p
+  = liftDOM
+      ((self ^. jsf "webkitConvertPointFromPageToNode"
+          [toJSVal node, toJSVal p])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.webkitConvertPointFromNodeToPage Mozilla Window.webkitConvertPointFromNodeToPage documentation> 
+webkitConvertPointFromNodeToPage ::
+                                 (MonadDOM m, IsNode node) =>
+                                   Window ->
+                                     Maybe node -> Maybe WebKitPoint -> m (Maybe WebKitPoint)
+webkitConvertPointFromNodeToPage self node p
+  = liftDOM
+      ((self ^. jsf "webkitConvertPointFromNodeToPage"
+          [toJSVal node, toJSVal p])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.postMessage Mozilla Window.postMessage documentation> 
+postMessage ::
+            (MonadDOM m, IsSerializedScriptValue message,
+             ToJSString targetOrigin, IsArray messagePorts) =>
+              Window ->
+                Maybe message -> targetOrigin -> Maybe messagePorts -> m ()
+postMessage self message targetOrigin messagePorts
+  = liftDOM
+      (void
+         (self ^. jsf "postMessage"
+            [toJSVal message, toJSVal targetOrigin, toJSVal messagePorts]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.requestAnimationFrame Mozilla Window.requestAnimationFrame documentation> 
+requestAnimationFrame ::
+                      (MonadDOM m) =>
+                        Window -> Maybe RequestAnimationFrameCallback -> m Int
+requestAnimationFrame self callback
+  = liftDOM
+      (round <$>
+         ((self ^. jsf "requestAnimationFrame" [toJSVal callback]) >>=
+            valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.cancelAnimationFrame Mozilla Window.cancelAnimationFrame documentation> 
+cancelAnimationFrame :: (MonadDOM m) => Window -> Int -> m ()
+cancelAnimationFrame self id
+  = liftDOM (void (self ^. jsf "cancelAnimationFrame" [toJSVal id]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.webkitRequestAnimationFrame Mozilla Window.webkitRequestAnimationFrame documentation> 
+webkitRequestAnimationFrame ::
+                            (MonadDOM m) =>
+                              Window -> Maybe RequestAnimationFrameCallback -> m Int
+webkitRequestAnimationFrame self callback
+  = liftDOM
+      (round <$>
+         ((self ^. jsf "webkitRequestAnimationFrame" [toJSVal callback]) >>=
+            valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.webkitCancelAnimationFrame Mozilla Window.webkitCancelAnimationFrame documentation> 
+webkitCancelAnimationFrame :: (MonadDOM m) => Window -> Int -> m ()
+webkitCancelAnimationFrame self id
+  = liftDOM
+      (void (self ^. jsf "webkitCancelAnimationFrame" [toJSVal id]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.webkitCancelRequestAnimationFrame Mozilla Window.webkitCancelRequestAnimationFrame documentation> 
+webkitCancelRequestAnimationFrame ::
+                                  (MonadDOM m) => Window -> Int -> m ()
+webkitCancelRequestAnimationFrame self id
+  = liftDOM
+      (void
+         (self ^. jsf "webkitCancelRequestAnimationFrame" [toJSVal id]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.captureEvents Mozilla Window.captureEvents documentation> 
+captureEvents :: (MonadDOM m) => Window -> m ()
+captureEvents self = liftDOM (void (self ^. js "captureEvents"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.releaseEvents Mozilla Window.releaseEvents documentation> 
+releaseEvents :: (MonadDOM m) => Window -> m ()
+releaseEvents self = liftDOM (void (self ^. js "releaseEvents"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.webkitIndexedDB Mozilla Window.webkitIndexedDB documentation> 
+getWebkitIndexedDB ::
+                   (MonadDOM m) => Window -> m (Maybe IDBFactory)
+getWebkitIndexedDB self
+  = liftDOM ((self ^. js "webkitIndexedDB") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.indexedDB Mozilla Window.indexedDB documentation> 
+getIndexedDB :: (MonadDOM m) => Window -> m (Maybe IDBFactory)
+getIndexedDB self
+  = liftDOM ((self ^. js "indexedDB") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.webkitStorageInfo Mozilla Window.webkitStorageInfo documentation> 
+getWebkitStorageInfo ::
+                     (MonadDOM m) => Window -> m (Maybe StorageInfo)
+getWebkitStorageInfo self
+  = liftDOM ((self ^. js "webkitStorageInfo") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.speechSynthesis Mozilla Window.speechSynthesis documentation> 
+getSpeechSynthesis ::
+                   (MonadDOM m) => Window -> m (Maybe SpeechSynthesis)
+getSpeechSynthesis self
+  = liftDOM ((self ^. js "speechSynthesis") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.screen Mozilla Window.screen documentation> 
+getScreen :: (MonadDOM m) => Window -> m (Maybe Screen)
+getScreen self = liftDOM ((self ^. js "screen") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.history Mozilla Window.history documentation> 
+getHistory :: (MonadDOM m) => Window -> m (Maybe History)
+getHistory self = liftDOM ((self ^. js "history") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.locationbar Mozilla Window.locationbar documentation> 
+getLocationbar :: (MonadDOM m) => Window -> m (Maybe BarProp)
+getLocationbar self
+  = liftDOM ((self ^. js "locationbar") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.menubar Mozilla Window.menubar documentation> 
+getMenubar :: (MonadDOM m) => Window -> m (Maybe BarProp)
+getMenubar self = liftDOM ((self ^. js "menubar") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.personalbar Mozilla Window.personalbar documentation> 
+getPersonalbar :: (MonadDOM m) => Window -> m (Maybe BarProp)
+getPersonalbar self
+  = liftDOM ((self ^. js "personalbar") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.scrollbars Mozilla Window.scrollbars documentation> 
+getScrollbars :: (MonadDOM m) => Window -> m (Maybe BarProp)
+getScrollbars self
+  = liftDOM ((self ^. js "scrollbars") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.statusbar Mozilla Window.statusbar documentation> 
+getStatusbar :: (MonadDOM m) => Window -> m (Maybe BarProp)
+getStatusbar self
+  = liftDOM ((self ^. js "statusbar") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.toolbar Mozilla Window.toolbar documentation> 
+getToolbar :: (MonadDOM m) => Window -> m (Maybe BarProp)
+getToolbar self = liftDOM ((self ^. js "toolbar") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.navigator Mozilla Window.navigator documentation> 
+getNavigator :: (MonadDOM m) => Window -> m (Maybe Navigator)
+getNavigator self
+  = liftDOM ((self ^. js "navigator") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.clientInformation Mozilla Window.clientInformation documentation> 
+getClientInformation ::
+                     (MonadDOM m) => Window -> m (Maybe Navigator)
+getClientInformation self
+  = liftDOM ((self ^. js "clientInformation") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.crypto Mozilla Window.crypto documentation> 
+getCrypto :: (MonadDOM m) => Window -> m (Maybe Crypto)
+getCrypto self = liftDOM ((self ^. js "crypto") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.location Mozilla Window.location documentation> 
+setLocation :: (MonadDOM m) => Window -> Maybe Location -> m ()
+setLocation self val
+  = liftDOM (self ^. jss "location" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.location Mozilla Window.location documentation> 
+getLocation :: (MonadDOM m) => Window -> m (Maybe Location)
+getLocation self = liftDOM ((self ^. js "location") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.event Mozilla Window.event documentation> 
+getEvent :: (MonadDOM m) => Window -> m (Maybe Event)
+getEvent self = liftDOM ((self ^. js "event") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.frameElement Mozilla Window.frameElement documentation> 
+getFrameElement :: (MonadDOM m) => Window -> m (Maybe Element)
+getFrameElement self
+  = liftDOM ((self ^. js "frameElement") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.offscreenBuffering Mozilla Window.offscreenBuffering documentation> 
+getOffscreenBuffering :: (MonadDOM m) => Window -> m Bool
+getOffscreenBuffering self
+  = liftDOM ((self ^. js "offscreenBuffering") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.outerHeight Mozilla Window.outerHeight documentation> 
+getOuterHeight :: (MonadDOM m) => Window -> m Int
+getOuterHeight self
+  = liftDOM (round <$> ((self ^. js "outerHeight") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.outerWidth Mozilla Window.outerWidth documentation> 
+getOuterWidth :: (MonadDOM m) => Window -> m Int
+getOuterWidth self
+  = liftDOM (round <$> ((self ^. js "outerWidth") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.innerHeight Mozilla Window.innerHeight documentation> 
+getInnerHeight :: (MonadDOM m) => Window -> m Int
+getInnerHeight self
+  = liftDOM (round <$> ((self ^. js "innerHeight") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.innerWidth Mozilla Window.innerWidth documentation> 
+getInnerWidth :: (MonadDOM m) => Window -> m Int
+getInnerWidth self
+  = liftDOM (round <$> ((self ^. js "innerWidth") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.screenX Mozilla Window.screenX documentation> 
+getScreenX :: (MonadDOM m) => Window -> m Int
+getScreenX self
+  = liftDOM (round <$> ((self ^. js "screenX") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.screenY Mozilla Window.screenY documentation> 
+getScreenY :: (MonadDOM m) => Window -> m Int
+getScreenY self
+  = liftDOM (round <$> ((self ^. js "screenY") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.screenLeft Mozilla Window.screenLeft documentation> 
+getScreenLeft :: (MonadDOM m) => Window -> m Int
+getScreenLeft self
+  = liftDOM (round <$> ((self ^. js "screenLeft") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.screenTop Mozilla Window.screenTop documentation> 
+getScreenTop :: (MonadDOM m) => Window -> m Int
+getScreenTop self
+  = liftDOM (round <$> ((self ^. js "screenTop") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.scrollX Mozilla Window.scrollX documentation> 
+getScrollX :: (MonadDOM m) => Window -> m Int
+getScrollX self
+  = liftDOM (round <$> ((self ^. js "scrollX") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.scrollY Mozilla Window.scrollY documentation> 
+getScrollY :: (MonadDOM m) => Window -> m Int
+getScrollY self
+  = liftDOM (round <$> ((self ^. js "scrollY") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.pageXOffset Mozilla Window.pageXOffset documentation> 
+getPageXOffset :: (MonadDOM m) => Window -> m Int
+getPageXOffset self
+  = liftDOM (round <$> ((self ^. js "pageXOffset") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.pageYOffset Mozilla Window.pageYOffset documentation> 
+getPageYOffset :: (MonadDOM m) => Window -> m Int
+getPageYOffset self
+  = liftDOM (round <$> ((self ^. js "pageYOffset") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.closed Mozilla Window.closed documentation> 
+getClosed :: (MonadDOM m) => Window -> m Bool
+getClosed self = liftDOM ((self ^. js "closed") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.length Mozilla Window.length documentation> 
+getLength :: (MonadDOM m) => Window -> m Word
+getLength self
+  = liftDOM (round <$> ((self ^. js "length") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.name Mozilla Window.name documentation> 
+setName :: (MonadDOM m, ToJSString val) => Window -> val -> m ()
+setName self val = liftDOM (self ^. jss "name" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.name Mozilla Window.name documentation> 
+getName :: (MonadDOM m, FromJSString result) => Window -> m result
+getName self = liftDOM ((self ^. js "name") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.status Mozilla Window.status documentation> 
+setStatus :: (MonadDOM m, ToJSString val) => Window -> val -> m ()
+setStatus self val = liftDOM (self ^. jss "status" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.status Mozilla Window.status documentation> 
+getStatus ::
+          (MonadDOM m, FromJSString result) => Window -> m result
+getStatus self
+  = liftDOM ((self ^. js "status") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.defaultStatus Mozilla Window.defaultStatus documentation> 
+setDefaultStatus ::
+                 (MonadDOM m, ToJSString val) => Window -> val -> m ()
+setDefaultStatus self val
+  = liftDOM (self ^. jss "defaultStatus" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.defaultStatus Mozilla Window.defaultStatus documentation> 
+getDefaultStatus ::
+                 (MonadDOM m, FromJSString result) => Window -> m result
+getDefaultStatus self
+  = liftDOM ((self ^. js "defaultStatus") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.defaultstatus Mozilla Window.defaultstatus documentation> 
+setDefaultstatus ::
+                 (MonadDOM m, ToJSString val) => Window -> val -> m ()
+setDefaultstatus self val
+  = liftDOM (self ^. jss "defaultstatus" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.defaultstatus Mozilla Window.defaultstatus documentation> 
+getDefaultstatus ::
+                 (MonadDOM m, FromJSString result) => Window -> m result
+getDefaultstatus self
+  = liftDOM ((self ^. js "defaultstatus") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.self Mozilla Window.self documentation> 
+getSelf :: (MonadDOM m) => Window -> m (Maybe Window)
+getSelf self = liftDOM ((self ^. js "self") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.window Mozilla Window.window documentation> 
+getWindow :: (MonadDOM m) => Window -> m (Maybe Window)
+getWindow self = liftDOM ((self ^. js "window") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.frames Mozilla Window.frames documentation> 
+getFrames :: (MonadDOM m) => Window -> m (Maybe Window)
+getFrames self = liftDOM ((self ^. js "frames") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.opener Mozilla Window.opener documentation> 
+getOpener :: (MonadDOM m) => Window -> m (Maybe Window)
+getOpener self = liftDOM ((self ^. js "opener") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.parent Mozilla Window.parent documentation> 
+getParent :: (MonadDOM m) => Window -> m (Maybe Window)
+getParent self = liftDOM ((self ^. js "parent") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.top Mozilla Window.top documentation> 
+getTop :: (MonadDOM m) => Window -> m (Maybe Window)
+getTop self = liftDOM ((self ^. js "top") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.document Mozilla Window.document documentation> 
+getDocument :: (MonadDOM m) => Window -> m (Maybe Document)
+getDocument self = liftDOM ((self ^. js "document") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.styleMedia Mozilla Window.styleMedia documentation> 
+getStyleMedia :: (MonadDOM m) => Window -> m (Maybe StyleMedia)
+getStyleMedia self
+  = liftDOM ((self ^. js "styleMedia") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.devicePixelRatio Mozilla Window.devicePixelRatio documentation> 
+getDevicePixelRatio :: (MonadDOM m) => Window -> m Double
+getDevicePixelRatio self
+  = liftDOM ((self ^. js "devicePixelRatio") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.applicationCache Mozilla Window.applicationCache documentation> 
+getApplicationCache ::
+                    (MonadDOM m) => Window -> m (Maybe ApplicationCache)
+getApplicationCache self
+  = liftDOM ((self ^. js "applicationCache") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.sessionStorage Mozilla Window.sessionStorage documentation> 
+getSessionStorage :: (MonadDOM m) => Window -> m (Maybe Storage)
+getSessionStorage self
+  = liftDOM ((self ^. js "sessionStorage") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.localStorage Mozilla Window.localStorage documentation> 
+getLocalStorage :: (MonadDOM m) => Window -> m (Maybe Storage)
+getLocalStorage self
+  = liftDOM ((self ^. js "localStorage") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.orientation Mozilla Window.orientation documentation> 
+getOrientation :: (MonadDOM m) => Window -> m Int
+getOrientation self
+  = liftDOM (round <$> ((self ^. js "orientation") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.performance Mozilla Window.performance documentation> 
+getPerformance :: (MonadDOM m) => Window -> m (Maybe Performance)
+getPerformance self
+  = liftDOM ((self ^. js "performance") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.CSS Mozilla Window.CSS documentation> 
+getCSS :: (MonadDOM m) => Window -> m (Maybe CSS)
+getCSS self = liftDOM ((self ^. js "CSS") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onabort Mozilla Window.onabort documentation> 
+abort :: EventName Window UIEvent
+abort = unsafeEventName (toJSString "abort")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onbeforeunload Mozilla Window.onbeforeunload documentation> 
+beforeUnload :: EventName Window BeforeUnloadEvent
+beforeUnload = unsafeEventName (toJSString "beforeunload")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onblur Mozilla Window.onblur documentation> 
+blurEvent :: EventName Window FocusEvent
+blurEvent = unsafeEventName (toJSString "blur")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.oncanplay Mozilla Window.oncanplay documentation> 
+canPlay :: EventName Window Event
+canPlay = unsafeEventName (toJSString "canplay")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.oncanplaythrough Mozilla Window.oncanplaythrough documentation> 
+canPlayThrough :: EventName Window Event
+canPlayThrough = unsafeEventName (toJSString "canplaythrough")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onchange Mozilla Window.onchange documentation> 
+change :: EventName Window Event
+change = unsafeEventName (toJSString "change")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onclick Mozilla Window.onclick documentation> 
+click :: EventName Window MouseEvent
+click = unsafeEventName (toJSString "click")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.oncontextmenu Mozilla Window.oncontextmenu documentation> 
+contextMenu :: EventName Window MouseEvent
+contextMenu = unsafeEventName (toJSString "contextmenu")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.ondblclick Mozilla Window.ondblclick documentation> 
+dblClick :: EventName Window MouseEvent
+dblClick = unsafeEventName (toJSString "dblclick")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.ondrag Mozilla Window.ondrag documentation> 
+drag :: EventName Window MouseEvent
+drag = unsafeEventName (toJSString "drag")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.ondragend Mozilla Window.ondragend documentation> 
+dragEnd :: EventName Window MouseEvent
+dragEnd = unsafeEventName (toJSString "dragend")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.ondragenter Mozilla Window.ondragenter documentation> 
+dragEnter :: EventName Window MouseEvent
+dragEnter = unsafeEventName (toJSString "dragenter")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.ondragleave Mozilla Window.ondragleave documentation> 
+dragLeave :: EventName Window MouseEvent
+dragLeave = unsafeEventName (toJSString "dragleave")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.ondragover Mozilla Window.ondragover documentation> 
+dragOver :: EventName Window MouseEvent
+dragOver = unsafeEventName (toJSString "dragover")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.ondragstart Mozilla Window.ondragstart documentation> 
+dragStart :: EventName Window MouseEvent
+dragStart = unsafeEventName (toJSString "dragstart")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.ondrop Mozilla Window.ondrop documentation> 
+drop :: EventName Window MouseEvent
+drop = unsafeEventName (toJSString "drop")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.ondurationchange Mozilla Window.ondurationchange documentation> 
+durationChange :: EventName Window Event
+durationChange = unsafeEventName (toJSString "durationchange")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onemptied Mozilla Window.onemptied documentation> 
+emptied :: EventName Window Event
+emptied = unsafeEventName (toJSString "emptied")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onended Mozilla Window.onended documentation> 
+ended :: EventName Window Event
+ended = unsafeEventName (toJSString "ended")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onerror Mozilla Window.onerror documentation> 
+error :: EventName Window UIEvent
+error = unsafeEventName (toJSString "error")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onfocus Mozilla Window.onfocus documentation> 
+focusEvent :: EventName Window FocusEvent
+focusEvent = unsafeEventName (toJSString "focus")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onhashchange Mozilla Window.onhashchange documentation> 
+hashChange :: EventName Window HashChangeEvent
+hashChange = unsafeEventName (toJSString "hashchange")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.oninput Mozilla Window.oninput documentation> 
+input :: EventName Window Event
+input = unsafeEventName (toJSString "input")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.oninvalid Mozilla Window.oninvalid documentation> 
+invalid :: EventName Window Event
+invalid = unsafeEventName (toJSString "invalid")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onkeydown Mozilla Window.onkeydown documentation> 
+keyDown :: EventName Window KeyboardEvent
+keyDown = unsafeEventName (toJSString "keydown")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onkeypress Mozilla Window.onkeypress documentation> 
+keyPress :: EventName Window KeyboardEvent
+keyPress = unsafeEventName (toJSString "keypress")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onkeyup Mozilla Window.onkeyup documentation> 
+keyUp :: EventName Window KeyboardEvent
+keyUp = unsafeEventName (toJSString "keyup")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onload Mozilla Window.onload documentation> 
+load :: EventName Window UIEvent
+load = unsafeEventName (toJSString "load")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onloadeddata Mozilla Window.onloadeddata documentation> 
+loadedData :: EventName Window Event
+loadedData = unsafeEventName (toJSString "loadeddata")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onloadedmetadata Mozilla Window.onloadedmetadata documentation> 
+loadedMetadata :: EventName Window Event
+loadedMetadata = unsafeEventName (toJSString "loadedmetadata")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onloadstart Mozilla Window.onloadstart documentation> 
+loadStart :: EventName Window ProgressEvent
+loadStart = unsafeEventName (toJSString "loadstart")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onmessage Mozilla Window.onmessage documentation> 
+message :: EventName Window MessageEvent
+message = unsafeEventName (toJSString "message")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onmousedown Mozilla Window.onmousedown documentation> 
+mouseDown :: EventName Window MouseEvent
+mouseDown = unsafeEventName (toJSString "mousedown")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onmouseenter Mozilla Window.onmouseenter documentation> 
+mouseEnter :: EventName Window MouseEvent
+mouseEnter = unsafeEventName (toJSString "mouseenter")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onmouseleave Mozilla Window.onmouseleave documentation> 
+mouseLeave :: EventName Window MouseEvent
+mouseLeave = unsafeEventName (toJSString "mouseleave")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onmousemove Mozilla Window.onmousemove documentation> 
+mouseMove :: EventName Window MouseEvent
+mouseMove = unsafeEventName (toJSString "mousemove")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onmouseout Mozilla Window.onmouseout documentation> 
+mouseOut :: EventName Window MouseEvent
+mouseOut = unsafeEventName (toJSString "mouseout")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onmouseover Mozilla Window.onmouseover documentation> 
+mouseOver :: EventName Window MouseEvent
+mouseOver = unsafeEventName (toJSString "mouseover")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onmouseup Mozilla Window.onmouseup documentation> 
+mouseUp :: EventName Window MouseEvent
+mouseUp = unsafeEventName (toJSString "mouseup")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onmousewheel Mozilla Window.onmousewheel documentation> 
+mouseWheel :: EventName Window MouseEvent
+mouseWheel = unsafeEventName (toJSString "mousewheel")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onoffline Mozilla Window.onoffline documentation> 
+offline :: EventName Window Event
+offline = unsafeEventName (toJSString "offline")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.ononline Mozilla Window.ononline documentation> 
+online :: EventName Window Event
+online = unsafeEventName (toJSString "online")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onpagehide Mozilla Window.onpagehide documentation> 
+pageHide :: EventName Window PageTransitionEvent
+pageHide = unsafeEventName (toJSString "pagehide")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onpageshow Mozilla Window.onpageshow documentation> 
+pageShow :: EventName Window PageTransitionEvent
+pageShow = unsafeEventName (toJSString "pageshow")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onpause Mozilla Window.onpause documentation> 
+pause :: EventName Window Event
+pause = unsafeEventName (toJSString "pause")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onplay Mozilla Window.onplay documentation> 
+play :: EventName Window Event
+play = unsafeEventName (toJSString "play")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onplaying Mozilla Window.onplaying documentation> 
+playing :: EventName Window Event
+playing = unsafeEventName (toJSString "playing")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onpopstate Mozilla Window.onpopstate documentation> 
+popState :: EventName Window PopStateEvent
+popState = unsafeEventName (toJSString "popstate")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onprogress Mozilla Window.onprogress documentation> 
+progress :: EventName Window ProgressEvent
+progress = unsafeEventName (toJSString "progress")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onratechange Mozilla Window.onratechange documentation> 
+rateChange :: EventName Window Event
+rateChange = unsafeEventName (toJSString "ratechange")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onresize Mozilla Window.onresize documentation> 
+resize :: EventName Window UIEvent
+resize = unsafeEventName (toJSString "resize")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onscroll Mozilla Window.onscroll documentation> 
+scrollEvent :: EventName Window UIEvent
+scrollEvent = unsafeEventName (toJSString "scroll")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onseeked Mozilla Window.onseeked documentation> 
+seeked :: EventName Window Event
+seeked = unsafeEventName (toJSString "seeked")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onseeking Mozilla Window.onseeking documentation> 
+seeking :: EventName Window Event
+seeking = unsafeEventName (toJSString "seeking")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onselect Mozilla Window.onselect documentation> 
+select :: EventName Window UIEvent
+select = unsafeEventName (toJSString "select")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onstalled Mozilla Window.onstalled documentation> 
+stalled :: EventName Window Event
+stalled = unsafeEventName (toJSString "stalled")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onstorage Mozilla Window.onstorage documentation> 
+storage :: EventName Window StorageEvent
+storage = unsafeEventName (toJSString "storage")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onsubmit Mozilla Window.onsubmit documentation> 
+submit :: EventName Window Event
+submit = unsafeEventName (toJSString "submit")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onsuspend Mozilla Window.onsuspend documentation> 
+suspend :: EventName Window Event
+suspend = unsafeEventName (toJSString "suspend")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.ontimeupdate Mozilla Window.ontimeupdate documentation> 
+timeUpdate :: EventName Window Event
+timeUpdate = unsafeEventName (toJSString "timeupdate")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onunload Mozilla Window.onunload documentation> 
+unload :: EventName Window UIEvent
+unload = unsafeEventName (toJSString "unload")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onvolumechange Mozilla Window.onvolumechange documentation> 
+volumeChange :: EventName Window Event
+volumeChange = unsafeEventName (toJSString "volumechange")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onwaiting Mozilla Window.onwaiting documentation> 
+waiting :: EventName Window Event
+waiting = unsafeEventName (toJSString "waiting")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onwheel Mozilla Window.onwheel documentation> 
+wheel :: EventName Window WheelEvent
+wheel = unsafeEventName (toJSString "wheel")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onreset Mozilla Window.onreset documentation> 
+reset :: EventName Window Event
+reset = unsafeEventName (toJSString "reset")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onsearch Mozilla Window.onsearch documentation> 
+search :: EventName Window Event
+search = unsafeEventName (toJSString "search")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onwebkitanimationend Mozilla Window.onwebkitanimationend documentation> 
+webKitAnimationEnd :: EventName Window AnimationEvent
+webKitAnimationEnd
+  = unsafeEventName (toJSString "webkitanimationend")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onwebkitanimationiteration Mozilla Window.onwebkitanimationiteration documentation> 
+webKitAnimationIteration :: EventName Window AnimationEvent
+webKitAnimationIteration
+  = unsafeEventName (toJSString "webkitanimationiteration")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onwebkitanimationstart Mozilla Window.onwebkitanimationstart documentation> 
+webKitAnimationStart :: EventName Window AnimationEvent
+webKitAnimationStart
+  = unsafeEventName (toJSString "webkitanimationstart")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onanimationend Mozilla Window.onanimationend documentation> 
+animationEnd :: EventName Window AnimationEvent
+animationEnd = unsafeEventName (toJSString "animationend")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onanimationiteration Mozilla Window.onanimationiteration documentation> 
+animationIteration :: EventName Window AnimationEvent
+animationIteration
+  = unsafeEventName (toJSString "animationiteration")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onanimationstart Mozilla Window.onanimationstart documentation> 
+animationStart :: EventName Window AnimationEvent
+animationStart = unsafeEventName (toJSString "animationstart")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onwebkittransitionend Mozilla Window.onwebkittransitionend documentation> 
+webKitTransitionEnd :: EventName Window TransitionEvent
+webKitTransitionEnd
+  = unsafeEventName (toJSString "webkittransitionend")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.ontransitionend Mozilla Window.ontransitionend documentation> 
+transitionEnd :: EventName Window TransitionEvent
+transitionEnd = unsafeEventName (toJSString "transitionend")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onorientationchange Mozilla Window.onorientationchange documentation> 
+orientationChange :: EventName Window Event
+orientationChange
+  = unsafeEventName (toJSString "orientationchange")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.ontouchstart Mozilla Window.ontouchstart documentation> 
+touchStart :: EventName Window TouchEvent
+touchStart = unsafeEventName (toJSString "touchstart")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.ontouchmove Mozilla Window.ontouchmove documentation> 
+touchMove :: EventName Window TouchEvent
+touchMove = unsafeEventName (toJSString "touchmove")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.ontouchend Mozilla Window.ontouchend documentation> 
+touchEnd :: EventName Window TouchEvent
+touchEnd = unsafeEventName (toJSString "touchend")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.ontouchcancel Mozilla Window.ontouchcancel documentation> 
+touchCancel :: EventName Window TouchEvent
+touchCancel = unsafeEventName (toJSString "touchcancel")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.ongesturestart Mozilla Window.ongesturestart documentation> 
+gestureStart :: EventName Window UIEvent
+gestureStart = unsafeEventName (toJSString "gesturestart")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.ongesturechange Mozilla Window.ongesturechange documentation> 
+gestureChange :: EventName Window UIEvent
+gestureChange = unsafeEventName (toJSString "gesturechange")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.ongestureend Mozilla Window.ongestureend documentation> 
+gestureEnd :: EventName Window UIEvent
+gestureEnd = unsafeEventName (toJSString "gestureend")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.ondevicemotion Mozilla Window.ondevicemotion documentation> 
+deviceMotion :: EventName Window DeviceMotionEvent
+deviceMotion = unsafeEventName (toJSString "devicemotion")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.ondeviceorientation Mozilla Window.ondeviceorientation documentation> 
+deviceOrientation :: EventName Window DeviceOrientationEvent
+deviceOrientation
+  = unsafeEventName (toJSString "deviceorientation")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onwebkitdeviceproximity Mozilla Window.onwebkitdeviceproximity documentation> 
+webKitDeviceProximity :: EventName Window DeviceProximityEvent
+webKitDeviceProximity
+  = unsafeEventName (toJSString "webkitdeviceproximity")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onwebkitwillrevealbottom Mozilla Window.onwebkitwillrevealbottom documentation> 
+webKitWillRevealBottom :: EventName Window Event
+webKitWillRevealBottom
+  = unsafeEventName (toJSString "webkitwillrevealbottom")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onwebkitwillrevealleft Mozilla Window.onwebkitwillrevealleft documentation> 
+webKitWillRevealLeft :: EventName Window Event
+webKitWillRevealLeft
+  = unsafeEventName (toJSString "webkitwillrevealleft")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onwebkitwillrevealright Mozilla Window.onwebkitwillrevealright documentation> 
+webKitWillRevealRight :: EventName Window Event
+webKitWillRevealRight
+  = unsafeEventName (toJSString "webkitwillrevealright")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onwebkitwillrevealtop Mozilla Window.onwebkitwillrevealtop documentation> 
+webKitWillRevealTop :: EventName Window Event
+webKitWillRevealTop
+  = unsafeEventName (toJSString "webkitwillrevealtop")
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/WindowBase64.hs b/src/Language/Javascript/JSaddle/DOM/Generated/WindowBase64.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/WindowBase64.hs
@@ -0,0 +1,31 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.WindowBase64
+       (atob, btoa, WindowBase64, castToWindowBase64, gTypeWindowBase64)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64.atob Mozilla WindowBase64.atob documentation> 
+atob ::
+     (MonadDOM m, ToJSString string, FromJSString result) =>
+       WindowBase64 -> string -> m result
+atob self string
+  = liftDOM
+      ((self ^. jsf "atob" [toJSVal string]) >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64.btoa Mozilla WindowBase64.btoa documentation> 
+btoa ::
+     (MonadDOM m, ToJSString string, FromJSString result) =>
+       WindowBase64 -> string -> m result
+btoa self string
+  = liftDOM
+      ((self ^. jsf "btoa" [toJSVal string]) >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/WindowTimers.hs b/src/Language/Javascript/JSaddle/DOM/Generated/WindowTimers.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/WindowTimers.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.WindowTimers
+       (setTimeout, clearTimeout, setInterval, clearInterval,
+        WindowTimers, castToWindowTimers, gTypeWindowTimers)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers.setTimeout Mozilla WindowTimers.setTimeout documentation> 
+setTimeout :: (MonadDOM m) => WindowTimers -> JSVal -> Int -> m Int
+setTimeout self handler timeout
+  = liftDOM
+      (round <$>
+         ((self ^. jsf "setTimeout" [toJSVal handler, toJSVal timeout]) >>=
+            valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers.clearTimeout Mozilla WindowTimers.clearTimeout documentation> 
+clearTimeout :: (MonadDOM m) => WindowTimers -> Int -> m ()
+clearTimeout self handle
+  = liftDOM (void (self ^. jsf "clearTimeout" [toJSVal handle]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers.setInterval Mozilla WindowTimers.setInterval documentation> 
+setInterval ::
+            (MonadDOM m) => WindowTimers -> JSVal -> Int -> m Int
+setInterval self handler timeout
+  = liftDOM
+      (round <$>
+         ((self ^. jsf "setInterval" [toJSVal handler, toJSVal timeout]) >>=
+            valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers.clearInterval Mozilla WindowTimers.clearInterval documentation> 
+clearInterval :: (MonadDOM m) => WindowTimers -> Int -> m ()
+clearInterval self handle
+  = liftDOM (void (self ^. jsf "clearInterval" [toJSVal handle]))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/Worker.hs b/src/Language/Javascript/JSaddle/DOM/Generated/Worker.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/Worker.hs
@@ -0,0 +1,41 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.Worker
+       (newWorker, postMessage, terminate, message, Worker, castToWorker,
+        gTypeWorker)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Worker Mozilla Worker documentation> 
+newWorker ::
+          (MonadDOM m, ToJSString scriptUrl) => scriptUrl -> m Worker
+newWorker scriptUrl
+  = liftDOM (Worker <$> new (jsg "Worker") [toJSVal scriptUrl])
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Worker.postMessage Mozilla Worker.postMessage documentation> 
+postMessage ::
+            (MonadDOM m, IsSerializedScriptValue message,
+             IsArray messagePorts) =>
+              Worker -> Maybe message -> Maybe messagePorts -> m ()
+postMessage self message messagePorts
+  = liftDOM
+      (void
+         (self ^. jsf "postMessage"
+            [toJSVal message, toJSVal messagePorts]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Worker.terminate Mozilla Worker.terminate documentation> 
+terminate :: (MonadDOM m) => Worker -> m ()
+terminate self = liftDOM (void (self ^. js "terminate"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Worker.onmessage Mozilla Worker.onmessage documentation> 
+message :: EventName Worker MessageEvent
+message = unsafeEventName (toJSString "message")
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/WorkerGlobalScope.hs b/src/Language/Javascript/JSaddle/DOM/Generated/WorkerGlobalScope.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/WorkerGlobalScope.hs
@@ -0,0 +1,69 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.WorkerGlobalScope
+       (close, importScripts, getSelf, getLocation, error, offline,
+        online, getNavigator, WorkerGlobalScope, castToWorkerGlobalScope,
+        gTypeWorkerGlobalScope, IsWorkerGlobalScope, toWorkerGlobalScope)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope.close Mozilla WorkerGlobalScope.close documentation> 
+close :: (MonadDOM m, IsWorkerGlobalScope self) => self -> m ()
+close self
+  = liftDOM (void ((toWorkerGlobalScope self) ^. js "close"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope.importScripts Mozilla WorkerGlobalScope.importScripts documentation> 
+importScripts ::
+              (MonadDOM m, IsWorkerGlobalScope self) => self -> m ()
+importScripts self
+  = liftDOM (void ((toWorkerGlobalScope self) ^. js "importScripts"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope.self Mozilla WorkerGlobalScope.self documentation> 
+getSelf ::
+        (MonadDOM m, IsWorkerGlobalScope self) =>
+          self -> m (Maybe WorkerGlobalScope)
+getSelf self
+  = liftDOM (((toWorkerGlobalScope self) ^. js "self") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope.location Mozilla WorkerGlobalScope.location documentation> 
+getLocation ::
+            (MonadDOM m, IsWorkerGlobalScope self) =>
+              self -> m (Maybe WorkerLocation)
+getLocation self
+  = liftDOM
+      (((toWorkerGlobalScope self) ^. js "location") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope.onerror Mozilla WorkerGlobalScope.onerror documentation> 
+error ::
+      (IsWorkerGlobalScope self, IsEventTarget self) =>
+        EventName self UIEvent
+error = unsafeEventName (toJSString "error")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope.onoffline Mozilla WorkerGlobalScope.onoffline documentation> 
+offline ::
+        (IsWorkerGlobalScope self, IsEventTarget self) =>
+          EventName self Event
+offline = unsafeEventName (toJSString "offline")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope.ononline Mozilla WorkerGlobalScope.ononline documentation> 
+online ::
+       (IsWorkerGlobalScope self, IsEventTarget self) =>
+         EventName self Event
+online = unsafeEventName (toJSString "online")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope.navigator Mozilla WorkerGlobalScope.navigator documentation> 
+getNavigator ::
+             (MonadDOM m, IsWorkerGlobalScope self) =>
+               self -> m (Maybe WorkerNavigator)
+getNavigator self
+  = liftDOM
+      (((toWorkerGlobalScope self) ^. js "navigator") >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/WorkerLocation.hs b/src/Language/Javascript/JSaddle/DOM/Generated/WorkerLocation.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/WorkerLocation.hs
@@ -0,0 +1,67 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.WorkerLocation
+       (toString, getHref, getProtocol, getHost, getHostname, getPort,
+        getPathname, getSearch, getHash, WorkerLocation,
+        castToWorkerLocation, gTypeWorkerLocation)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerLocation.toString Mozilla WorkerLocation.toString documentation> 
+toString ::
+         (MonadDOM m, FromJSString result) => WorkerLocation -> m result
+toString self
+  = liftDOM ((self ^. js "toString") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerLocation.href Mozilla WorkerLocation.href documentation> 
+getHref ::
+        (MonadDOM m, FromJSString result) => WorkerLocation -> m result
+getHref self = liftDOM ((self ^. js "href") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerLocation.protocol Mozilla WorkerLocation.protocol documentation> 
+getProtocol ::
+            (MonadDOM m, FromJSString result) => WorkerLocation -> m result
+getProtocol self
+  = liftDOM ((self ^. js "protocol") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerLocation.host Mozilla WorkerLocation.host documentation> 
+getHost ::
+        (MonadDOM m, FromJSString result) => WorkerLocation -> m result
+getHost self = liftDOM ((self ^. js "host") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerLocation.hostname Mozilla WorkerLocation.hostname documentation> 
+getHostname ::
+            (MonadDOM m, FromJSString result) => WorkerLocation -> m result
+getHostname self
+  = liftDOM ((self ^. js "hostname") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerLocation.port Mozilla WorkerLocation.port documentation> 
+getPort ::
+        (MonadDOM m, FromJSString result) => WorkerLocation -> m result
+getPort self = liftDOM ((self ^. js "port") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerLocation.pathname Mozilla WorkerLocation.pathname documentation> 
+getPathname ::
+            (MonadDOM m, FromJSString result) => WorkerLocation -> m result
+getPathname self
+  = liftDOM ((self ^. js "pathname") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerLocation.search Mozilla WorkerLocation.search documentation> 
+getSearch ::
+          (MonadDOM m, FromJSString result) => WorkerLocation -> m result
+getSearch self
+  = liftDOM ((self ^. js "search") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerLocation.hash Mozilla WorkerLocation.hash documentation> 
+getHash ::
+        (MonadDOM m, FromJSString result) => WorkerLocation -> m result
+getHash self = liftDOM ((self ^. js "hash") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/WorkerNavigator.hs b/src/Language/Javascript/JSaddle/DOM/Generated/WorkerNavigator.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/WorkerNavigator.hs
@@ -0,0 +1,57 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.WorkerNavigator
+       (getWebkitTemporaryStorage, getWebkitPersistentStorage, getAppName,
+        getAppVersion, getPlatform, getUserAgent, getOnLine,
+        WorkerNavigator, castToWorkerNavigator, gTypeWorkerNavigator)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerNavigator.webkitTemporaryStorage Mozilla WorkerNavigator.webkitTemporaryStorage documentation> 
+getWebkitTemporaryStorage ::
+                          (MonadDOM m) => WorkerNavigator -> m (Maybe StorageQuota)
+getWebkitTemporaryStorage self
+  = liftDOM ((self ^. js "webkitTemporaryStorage") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerNavigator.webkitPersistentStorage Mozilla WorkerNavigator.webkitPersistentStorage documentation> 
+getWebkitPersistentStorage ::
+                           (MonadDOM m) => WorkerNavigator -> m (Maybe StorageQuota)
+getWebkitPersistentStorage self
+  = liftDOM ((self ^. js "webkitPersistentStorage") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerNavigator.appName Mozilla WorkerNavigator.appName documentation> 
+getAppName ::
+           (MonadDOM m, FromJSString result) => WorkerNavigator -> m result
+getAppName self
+  = liftDOM ((self ^. js "appName") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerNavigator.appVersion Mozilla WorkerNavigator.appVersion documentation> 
+getAppVersion ::
+              (MonadDOM m, FromJSString result) => WorkerNavigator -> m result
+getAppVersion self
+  = liftDOM ((self ^. js "appVersion") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerNavigator.platform Mozilla WorkerNavigator.platform documentation> 
+getPlatform ::
+            (MonadDOM m, FromJSString result) => WorkerNavigator -> m result
+getPlatform self
+  = liftDOM ((self ^. js "platform") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerNavigator.userAgent Mozilla WorkerNavigator.userAgent documentation> 
+getUserAgent ::
+             (MonadDOM m, FromJSString result) => WorkerNavigator -> m result
+getUserAgent self
+  = liftDOM ((self ^. js "userAgent") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerNavigator.onLine Mozilla WorkerNavigator.onLine documentation> 
+getOnLine :: (MonadDOM m) => WorkerNavigator -> m Bool
+getOnLine self = liftDOM ((self ^. js "onLine") >>= valToBool)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/XMLHttpRequest.hs b/src/Language/Javascript/JSaddle/DOM/Generated/XMLHttpRequest.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/XMLHttpRequest.hs
@@ -0,0 +1,197 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.XMLHttpRequest
+       (newXMLHttpRequest, open, setRequestHeader, send, abort,
+        getAllResponseHeaders, getResponseHeader, overrideMimeType,
+        pattern UNSENT, pattern OPENED, pattern HEADERS_RECEIVED,
+        pattern LOADING, pattern DONE, abortEvent, error, load, loadEnd,
+        loadStart, progress, timeout, readyStateChange, setTimeout,
+        getTimeout, getReadyState, setWithCredentials, getWithCredentials,
+        getUpload, getResponseText, getResponseXML, setResponseType,
+        getResponseType, getResponse, getStatus, getStatusText,
+        getResponseURL, XMLHttpRequest, castToXMLHttpRequest,
+        gTypeXMLHttpRequest)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest Mozilla XMLHttpRequest documentation> 
+newXMLHttpRequest :: (MonadDOM m) => m XMLHttpRequest
+newXMLHttpRequest
+  = liftDOM (XMLHttpRequest <$> new (jsg "XMLHttpRequest") ())
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.open Mozilla XMLHttpRequest.open documentation> 
+open ::
+     (MonadDOM m, ToJSString method, ToJSString url, ToJSString user,
+      ToJSString password) =>
+       XMLHttpRequest -> method -> url -> Bool -> user -> password -> m ()
+open self method url async user password
+  = liftDOM
+      (void
+         (self ^. jsf "open"
+            [toJSVal method, toJSVal url, toJSVal async, toJSVal user,
+             toJSVal password]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.setRequestHeader Mozilla XMLHttpRequest.setRequestHeader documentation> 
+setRequestHeader ::
+                 (MonadDOM m, ToJSString header, ToJSString value) =>
+                   XMLHttpRequest -> header -> value -> m ()
+setRequestHeader self header value
+  = liftDOM
+      (void
+         (self ^. jsf "setRequestHeader" [toJSVal header, toJSVal value]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.send Mozilla XMLHttpRequest.send documentation> 
+send :: (MonadDOM m) => XMLHttpRequest -> m ()
+send self = liftDOM (void (self ^. js "send"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.abort Mozilla XMLHttpRequest.abort documentation> 
+abort :: (MonadDOM m) => XMLHttpRequest -> m ()
+abort self = liftDOM (void (self ^. js "abort"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.getAllResponseHeaders Mozilla XMLHttpRequest.getAllResponseHeaders documentation> 
+getAllResponseHeaders ::
+                      (MonadDOM m, FromJSString result) =>
+                        XMLHttpRequest -> m (Maybe result)
+getAllResponseHeaders self
+  = liftDOM
+      ((self ^. js "getAllResponseHeaders") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.getResponseHeader Mozilla XMLHttpRequest.getResponseHeader documentation> 
+getResponseHeader ::
+                  (MonadDOM m, ToJSString header, FromJSString result) =>
+                    XMLHttpRequest -> header -> m (Maybe result)
+getResponseHeader self header
+  = liftDOM
+      ((self ^. jsf "getResponseHeader" [toJSVal header]) >>=
+         fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.overrideMimeType Mozilla XMLHttpRequest.overrideMimeType documentation> 
+overrideMimeType ::
+                 (MonadDOM m, ToJSString override) =>
+                   XMLHttpRequest -> override -> m ()
+overrideMimeType self override
+  = liftDOM
+      (void (self ^. jsf "overrideMimeType" [toJSVal override]))
+pattern UNSENT = 0
+pattern OPENED = 1
+pattern HEADERS_RECEIVED = 2
+pattern LOADING = 3
+pattern DONE = 4
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.onabort Mozilla XMLHttpRequest.onabort documentation> 
+abortEvent :: EventName XMLHttpRequest XMLHttpRequestProgressEvent
+abortEvent = unsafeEventName (toJSString "abort")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.onerror Mozilla XMLHttpRequest.onerror documentation> 
+error :: EventName XMLHttpRequest XMLHttpRequestProgressEvent
+error = unsafeEventName (toJSString "error")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.onload Mozilla XMLHttpRequest.onload documentation> 
+load :: EventName XMLHttpRequest XMLHttpRequestProgressEvent
+load = unsafeEventName (toJSString "load")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.onloadend Mozilla XMLHttpRequest.onloadend documentation> 
+loadEnd :: EventName XMLHttpRequest ProgressEvent
+loadEnd = unsafeEventName (toJSString "loadend")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.onloadstart Mozilla XMLHttpRequest.onloadstart documentation> 
+loadStart :: EventName XMLHttpRequest ProgressEvent
+loadStart = unsafeEventName (toJSString "loadstart")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.onprogress Mozilla XMLHttpRequest.onprogress documentation> 
+progress :: EventName XMLHttpRequest XMLHttpRequestProgressEvent
+progress = unsafeEventName (toJSString "progress")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.ontimeout Mozilla XMLHttpRequest.ontimeout documentation> 
+timeout :: EventName XMLHttpRequest ProgressEvent
+timeout = unsafeEventName (toJSString "timeout")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.onreadystatechange Mozilla XMLHttpRequest.onreadystatechange documentation> 
+readyStateChange :: EventName XMLHttpRequest Event
+readyStateChange = unsafeEventName (toJSString "readystatechange")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.timeout Mozilla XMLHttpRequest.timeout documentation> 
+setTimeout :: (MonadDOM m) => XMLHttpRequest -> Word -> m ()
+setTimeout self val = liftDOM (self ^. jss "timeout" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.timeout Mozilla XMLHttpRequest.timeout documentation> 
+getTimeout :: (MonadDOM m) => XMLHttpRequest -> m Word
+getTimeout self
+  = liftDOM (round <$> ((self ^. js "timeout") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.readyState Mozilla XMLHttpRequest.readyState documentation> 
+getReadyState :: (MonadDOM m) => XMLHttpRequest -> m Word
+getReadyState self
+  = liftDOM (round <$> ((self ^. js "readyState") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.withCredentials Mozilla XMLHttpRequest.withCredentials documentation> 
+setWithCredentials ::
+                   (MonadDOM m) => XMLHttpRequest -> Bool -> m ()
+setWithCredentials self val
+  = liftDOM (self ^. jss "withCredentials" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.withCredentials Mozilla XMLHttpRequest.withCredentials documentation> 
+getWithCredentials :: (MonadDOM m) => XMLHttpRequest -> m Bool
+getWithCredentials self
+  = liftDOM ((self ^. js "withCredentials") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.upload Mozilla XMLHttpRequest.upload documentation> 
+getUpload ::
+          (MonadDOM m) => XMLHttpRequest -> m (Maybe XMLHttpRequestUpload)
+getUpload self = liftDOM ((self ^. js "upload") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.responseText Mozilla XMLHttpRequest.responseText documentation> 
+getResponseText ::
+                (MonadDOM m, FromJSString result) =>
+                  XMLHttpRequest -> m (Maybe result)
+getResponseText self
+  = liftDOM ((self ^. js "responseText") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.responseXML Mozilla XMLHttpRequest.responseXML documentation> 
+getResponseXML ::
+               (MonadDOM m) => XMLHttpRequest -> m (Maybe Document)
+getResponseXML self
+  = liftDOM ((self ^. js "responseXML") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.responseType Mozilla XMLHttpRequest.responseType documentation> 
+setResponseType ::
+                (MonadDOM m) =>
+                  XMLHttpRequest -> XMLHttpRequestResponseType -> m ()
+setResponseType self val
+  = liftDOM (self ^. jss "responseType" (toJSVal val))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.responseType Mozilla XMLHttpRequest.responseType documentation> 
+getResponseType ::
+                (MonadDOM m) => XMLHttpRequest -> m XMLHttpRequestResponseType
+getResponseType self
+  = liftDOM ((self ^. js "responseType") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.response Mozilla XMLHttpRequest.response documentation> 
+getResponse :: (MonadDOM m) => XMLHttpRequest -> m (Maybe GObject)
+getResponse self = liftDOM ((self ^. js "response") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.status Mozilla XMLHttpRequest.status documentation> 
+getStatus :: (MonadDOM m) => XMLHttpRequest -> m Word
+getStatus self
+  = liftDOM (round <$> ((self ^. js "status") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.statusText Mozilla XMLHttpRequest.statusText documentation> 
+getStatusText ::
+              (MonadDOM m, FromJSString result) => XMLHttpRequest -> m result
+getStatusText self
+  = liftDOM ((self ^. js "statusText") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.responseURL Mozilla XMLHttpRequest.responseURL documentation> 
+getResponseURL ::
+               (MonadDOM m, FromJSString result) => XMLHttpRequest -> m result
+getResponseURL self
+  = liftDOM ((self ^. js "responseURL") >>= fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/XMLHttpRequestProgressEvent.hs b/src/Language/Javascript/JSaddle/DOM/Generated/XMLHttpRequestProgressEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/XMLHttpRequestProgressEvent.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.XMLHttpRequestProgressEvent
+       (getPosition, getTotalSize, XMLHttpRequestProgressEvent,
+        castToXMLHttpRequestProgressEvent,
+        gTypeXMLHttpRequestProgressEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequestProgressEvent.position Mozilla XMLHttpRequestProgressEvent.position documentation> 
+getPosition ::
+            (MonadDOM m) => XMLHttpRequestProgressEvent -> m Word64
+getPosition self
+  = liftDOM (round <$> ((self ^. js "position") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequestProgressEvent.totalSize Mozilla XMLHttpRequestProgressEvent.totalSize documentation> 
+getTotalSize ::
+             (MonadDOM m) => XMLHttpRequestProgressEvent -> m Word64
+getTotalSize self
+  = liftDOM (round <$> ((self ^. js "totalSize") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/XMLHttpRequestUpload.hs b/src/Language/Javascript/JSaddle/DOM/Generated/XMLHttpRequestUpload.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/XMLHttpRequestUpload.hs
@@ -0,0 +1,42 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.XMLHttpRequestUpload
+       (abort, error, load, loadEnd, loadStart, progress,
+        XMLHttpRequestUpload, castToXMLHttpRequestUpload,
+        gTypeXMLHttpRequestUpload)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequestUpload.onabort Mozilla XMLHttpRequestUpload.onabort documentation> 
+abort :: EventName XMLHttpRequestUpload XMLHttpRequestProgressEvent
+abort = unsafeEventName (toJSString "abort")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequestUpload.onerror Mozilla XMLHttpRequestUpload.onerror documentation> 
+error :: EventName XMLHttpRequestUpload XMLHttpRequestProgressEvent
+error = unsafeEventName (toJSString "error")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequestUpload.onload Mozilla XMLHttpRequestUpload.onload documentation> 
+load :: EventName XMLHttpRequestUpload XMLHttpRequestProgressEvent
+load = unsafeEventName (toJSString "load")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequestUpload.onloadend Mozilla XMLHttpRequestUpload.onloadend documentation> 
+loadEnd :: EventName XMLHttpRequestUpload ProgressEvent
+loadEnd = unsafeEventName (toJSString "loadend")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequestUpload.onloadstart Mozilla XMLHttpRequestUpload.onloadstart documentation> 
+loadStart :: EventName XMLHttpRequestUpload ProgressEvent
+loadStart = unsafeEventName (toJSString "loadstart")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequestUpload.onprogress Mozilla XMLHttpRequestUpload.onprogress documentation> 
+progress ::
+           EventName XMLHttpRequestUpload XMLHttpRequestProgressEvent
+progress = unsafeEventName (toJSString "progress")
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/XMLSerializer.hs b/src/Language/Javascript/JSaddle/DOM/Generated/XMLSerializer.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/XMLSerializer.hs
@@ -0,0 +1,30 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.XMLSerializer
+       (newXMLSerializer, serializeToString, XMLSerializer,
+        castToXMLSerializer, gTypeXMLSerializer)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLSerializer Mozilla XMLSerializer documentation> 
+newXMLSerializer :: (MonadDOM m) => m XMLSerializer
+newXMLSerializer
+  = liftDOM (XMLSerializer <$> new (jsg "XMLSerializer") ())
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLSerializer.serializeToString Mozilla XMLSerializer.serializeToString documentation> 
+serializeToString ::
+                  (MonadDOM m, IsNode node, FromJSString result) =>
+                    XMLSerializer -> Maybe node -> m result
+serializeToString self node
+  = liftDOM
+      ((self ^. jsf "serializeToString" [toJSVal node]) >>=
+         fromJSValUnchecked)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/XPathEvaluator.hs b/src/Language/Javascript/JSaddle/DOM/Generated/XPathEvaluator.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/XPathEvaluator.hs
@@ -0,0 +1,56 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.XPathEvaluator
+       (newXPathEvaluator, createExpression, createNSResolver, evaluate,
+        XPathEvaluator, castToXPathEvaluator, gTypeXPathEvaluator)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathEvaluator Mozilla XPathEvaluator documentation> 
+newXPathEvaluator :: (MonadDOM m) => m XPathEvaluator
+newXPathEvaluator
+  = liftDOM (XPathEvaluator <$> new (jsg "XPathEvaluator") ())
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathEvaluator.createExpression Mozilla XPathEvaluator.createExpression documentation> 
+createExpression ::
+                 (MonadDOM m, ToJSString expression) =>
+                   XPathEvaluator ->
+                     expression -> Maybe XPathNSResolver -> m (Maybe XPathExpression)
+createExpression self expression resolver
+  = liftDOM
+      ((self ^. jsf "createExpression"
+          [toJSVal expression, toJSVal resolver])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathEvaluator.createNSResolver Mozilla XPathEvaluator.createNSResolver documentation> 
+createNSResolver ::
+                 (MonadDOM m, IsNode nodeResolver) =>
+                   XPathEvaluator -> Maybe nodeResolver -> m (Maybe XPathNSResolver)
+createNSResolver self nodeResolver
+  = liftDOM
+      ((self ^. jsf "createNSResolver" [toJSVal nodeResolver]) >>=
+         fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathEvaluator.evaluate Mozilla XPathEvaluator.evaluate documentation> 
+evaluate ::
+         (MonadDOM m, ToJSString expression, IsNode contextNode) =>
+           XPathEvaluator ->
+             expression ->
+               Maybe contextNode ->
+                 Maybe XPathNSResolver ->
+                   Word -> Maybe XPathResult -> m (Maybe XPathResult)
+evaluate self expression contextNode resolver type' inResult
+  = liftDOM
+      ((self ^. jsf "evaluate"
+          [toJSVal expression, toJSVal contextNode, toJSVal resolver,
+           toJSVal type', toJSVal inResult])
+         >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/XPathExpression.hs b/src/Language/Javascript/JSaddle/DOM/Generated/XPathExpression.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/XPathExpression.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.XPathExpression
+       (evaluate, XPathExpression, castToXPathExpression,
+        gTypeXPathExpression)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathExpression.evaluate Mozilla XPathExpression.evaluate documentation> 
+evaluate ::
+         (MonadDOM m, IsNode contextNode) =>
+           XPathExpression ->
+             Maybe contextNode ->
+               Word -> Maybe XPathResult -> m (Maybe XPathResult)
+evaluate self contextNode type' inResult
+  = liftDOM
+      ((self ^. jsf "evaluate"
+          [toJSVal contextNode, toJSVal type', toJSVal inResult])
+         >>= fromJSVal)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/XPathNSResolver.hs b/src/Language/Javascript/JSaddle/DOM/Generated/XPathNSResolver.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/XPathNSResolver.hs
@@ -0,0 +1,25 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.XPathNSResolver
+       (lookupNamespaceURI, XPathNSResolver, castToXPathNSResolver,
+        gTypeXPathNSResolver)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathNSResolver.lookupNamespaceURI Mozilla XPathNSResolver.lookupNamespaceURI documentation> 
+lookupNamespaceURI ::
+                   (MonadDOM m, ToJSString prefix, FromJSString result) =>
+                     XPathNSResolver -> prefix -> m (Maybe result)
+lookupNamespaceURI self prefix
+  = liftDOM
+      ((self ^. jsf "lookupNamespaceURI" [toJSVal prefix]) >>=
+         fromMaybeJSString)
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/XPathResult.hs b/src/Language/Javascript/JSaddle/DOM/Generated/XPathResult.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/XPathResult.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.XPathResult
+       (iterateNext, snapshotItem, pattern ANY_TYPE, pattern NUMBER_TYPE,
+        pattern STRING_TYPE, pattern BOOLEAN_TYPE,
+        pattern UNORDERED_NODE_ITERATOR_TYPE,
+        pattern ORDERED_NODE_ITERATOR_TYPE,
+        pattern UNORDERED_NODE_SNAPSHOT_TYPE,
+        pattern ORDERED_NODE_SNAPSHOT_TYPE,
+        pattern ANY_UNORDERED_NODE_TYPE, pattern FIRST_ORDERED_NODE_TYPE,
+        getResultType, getNumberValue, getStringValue, getBooleanValue,
+        getSingleNodeValue, getInvalidIteratorState, getSnapshotLength,
+        XPathResult, castToXPathResult, gTypeXPathResult)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathResult.iterateNext Mozilla XPathResult.iterateNext documentation> 
+iterateNext :: (MonadDOM m) => XPathResult -> m (Maybe Node)
+iterateNext self
+  = liftDOM ((self ^. js "iterateNext") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathResult.snapshotItem Mozilla XPathResult.snapshotItem documentation> 
+snapshotItem ::
+             (MonadDOM m) => XPathResult -> Word -> m (Maybe Node)
+snapshotItem self index
+  = liftDOM
+      ((self ^. jsf "snapshotItem" [toJSVal index]) >>= fromJSVal)
+pattern ANY_TYPE = 0
+pattern NUMBER_TYPE = 1
+pattern STRING_TYPE = 2
+pattern BOOLEAN_TYPE = 3
+pattern UNORDERED_NODE_ITERATOR_TYPE = 4
+pattern ORDERED_NODE_ITERATOR_TYPE = 5
+pattern UNORDERED_NODE_SNAPSHOT_TYPE = 6
+pattern ORDERED_NODE_SNAPSHOT_TYPE = 7
+pattern ANY_UNORDERED_NODE_TYPE = 8
+pattern FIRST_ORDERED_NODE_TYPE = 9
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathResult.resultType Mozilla XPathResult.resultType documentation> 
+getResultType :: (MonadDOM m) => XPathResult -> m Word
+getResultType self
+  = liftDOM (round <$> ((self ^. js "resultType") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathResult.numberValue Mozilla XPathResult.numberValue documentation> 
+getNumberValue :: (MonadDOM m) => XPathResult -> m Double
+getNumberValue self
+  = liftDOM ((self ^. js "numberValue") >>= valToNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathResult.stringValue Mozilla XPathResult.stringValue documentation> 
+getStringValue ::
+               (MonadDOM m, FromJSString result) => XPathResult -> m result
+getStringValue self
+  = liftDOM ((self ^. js "stringValue") >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathResult.booleanValue Mozilla XPathResult.booleanValue documentation> 
+getBooleanValue :: (MonadDOM m) => XPathResult -> m Bool
+getBooleanValue self
+  = liftDOM ((self ^. js "booleanValue") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathResult.singleNodeValue Mozilla XPathResult.singleNodeValue documentation> 
+getSingleNodeValue :: (MonadDOM m) => XPathResult -> m (Maybe Node)
+getSingleNodeValue self
+  = liftDOM ((self ^. js "singleNodeValue") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathResult.invalidIteratorState Mozilla XPathResult.invalidIteratorState documentation> 
+getInvalidIteratorState :: (MonadDOM m) => XPathResult -> m Bool
+getInvalidIteratorState self
+  = liftDOM ((self ^. js "invalidIteratorState") >>= valToBool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathResult.snapshotLength Mozilla XPathResult.snapshotLength documentation> 
+getSnapshotLength :: (MonadDOM m) => XPathResult -> m Word
+getSnapshotLength self
+  = liftDOM
+      (round <$> ((self ^. js "snapshotLength") >>= valToNumber))
diff --git a/src/Language/Javascript/JSaddle/DOM/Generated/XSLTProcessor.hs b/src/Language/Javascript/JSaddle/DOM/Generated/XSLTProcessor.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Generated/XSLTProcessor.hs
@@ -0,0 +1,92 @@
+{-# LANGUAGE PatternSynonyms #-}
+module Language.Javascript.JSaddle.DOM.Generated.XSLTProcessor
+       (newXSLTProcessor, importStylesheet, transformToFragment,
+        transformToDocument, setParameter, getParameter, removeParameter,
+        clearParameters, reset, XSLTProcessor, castToXSLTProcessor,
+        gTypeXSLTProcessor)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import Data.Typeable (Typeable)
+import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Language.Javascript.JSaddle.DOM.Types
+import Control.Applicative ((<$>))
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName)
+import Language.Javascript.JSaddle.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor Mozilla XSLTProcessor documentation> 
+newXSLTProcessor :: (MonadDOM m) => m XSLTProcessor
+newXSLTProcessor
+  = liftDOM (XSLTProcessor <$> new (jsg "XSLTProcessor") ())
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor.importStylesheet Mozilla XSLTProcessor.importStylesheet documentation> 
+importStylesheet ::
+                 (MonadDOM m, IsNode stylesheet) =>
+                   XSLTProcessor -> Maybe stylesheet -> m ()
+importStylesheet self stylesheet
+  = liftDOM
+      (void (self ^. jsf "importStylesheet" [toJSVal stylesheet]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor.transformToFragment Mozilla XSLTProcessor.transformToFragment documentation> 
+transformToFragment ::
+                    (MonadDOM m, IsNode source, IsDocument docVal) =>
+                      XSLTProcessor ->
+                        Maybe source -> Maybe docVal -> m (Maybe DocumentFragment)
+transformToFragment self source docVal
+  = liftDOM
+      ((self ^. jsf "transformToFragment"
+          [toJSVal source, toJSVal docVal])
+         >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor.transformToDocument Mozilla XSLTProcessor.transformToDocument documentation> 
+transformToDocument ::
+                    (MonadDOM m, IsNode source) =>
+                      XSLTProcessor -> Maybe source -> m (Maybe Document)
+transformToDocument self source
+  = liftDOM
+      ((self ^. jsf "transformToDocument" [toJSVal source]) >>=
+         fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor.setParameter Mozilla XSLTProcessor.setParameter documentation> 
+setParameter ::
+             (MonadDOM m, ToJSString namespaceURI, ToJSString localName,
+              ToJSString value) =>
+               XSLTProcessor -> namespaceURI -> localName -> value -> m ()
+setParameter self namespaceURI localName value
+  = liftDOM
+      (void
+         (self ^. jsf "setParameter"
+            [toJSVal namespaceURI, toJSVal localName, toJSVal value]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor.getParameter Mozilla XSLTProcessor.getParameter documentation> 
+getParameter ::
+             (MonadDOM m, ToJSString namespaceURI, ToJSString localName,
+              FromJSString result) =>
+               XSLTProcessor -> namespaceURI -> localName -> m (Maybe result)
+getParameter self namespaceURI localName
+  = liftDOM
+      ((self ^. jsf "getParameter"
+          [toJSVal namespaceURI, toJSVal localName])
+         >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor.removeParameter Mozilla XSLTProcessor.removeParameter documentation> 
+removeParameter ::
+                (MonadDOM m, ToJSString namespaceURI, ToJSString localName) =>
+                  XSLTProcessor -> namespaceURI -> localName -> m ()
+removeParameter self namespaceURI localName
+  = liftDOM
+      (void
+         (self ^. jsf "removeParameter"
+            [toJSVal namespaceURI, toJSVal localName]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor.clearParameters Mozilla XSLTProcessor.clearParameters documentation> 
+clearParameters :: (MonadDOM m) => XSLTProcessor -> m ()
+clearParameters self
+  = liftDOM (void (self ^. js "clearParameters"))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor.reset Mozilla XSLTProcessor.reset documentation> 
+reset :: (MonadDOM m) => XSLTProcessor -> m ()
+reset self = liftDOM (void (self ^. js "reset"))
diff --git a/src/Language/Javascript/JSaddle/DOM/Geolocation.hs b/src/Language/Javascript/JSaddle/DOM/Geolocation.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Geolocation.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.Geolocation (
+  module Language.Javascript.JSaddle.DOM.Custom.Geolocation
+  ) where
+import Language.Javascript.JSaddle.DOM.Custom.Geolocation
diff --git a/src/Language/Javascript/JSaddle/DOM/Geoposition.hs b/src/Language/Javascript/JSaddle/DOM/Geoposition.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Geoposition.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.Geoposition (
+  module Language.Javascript.JSaddle.DOM.Generated.Geoposition
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.Geoposition
diff --git a/src/Language/Javascript/JSaddle/DOM/HTMLAllCollection.hs b/src/Language/Javascript/JSaddle/DOM/HTMLAllCollection.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HTMLAllCollection.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HTMLAllCollection (
+  module Language.Javascript.JSaddle.DOM.Generated.HTMLAllCollection
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HTMLAllCollection
diff --git a/src/Language/Javascript/JSaddle/DOM/HTMLAnchorElement.hs b/src/Language/Javascript/JSaddle/DOM/HTMLAnchorElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HTMLAnchorElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HTMLAnchorElement (
+  module Language.Javascript.JSaddle.DOM.Generated.HTMLAnchorElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HTMLAnchorElement
diff --git a/src/Language/Javascript/JSaddle/DOM/HTMLAppletElement.hs b/src/Language/Javascript/JSaddle/DOM/HTMLAppletElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HTMLAppletElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HTMLAppletElement (
+  module Language.Javascript.JSaddle.DOM.Generated.HTMLAppletElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HTMLAppletElement
diff --git a/src/Language/Javascript/JSaddle/DOM/HTMLAreaElement.hs b/src/Language/Javascript/JSaddle/DOM/HTMLAreaElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HTMLAreaElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HTMLAreaElement (
+  module Language.Javascript.JSaddle.DOM.Generated.HTMLAreaElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HTMLAreaElement
diff --git a/src/Language/Javascript/JSaddle/DOM/HTMLBRElement.hs b/src/Language/Javascript/JSaddle/DOM/HTMLBRElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HTMLBRElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HTMLBRElement (
+  module Language.Javascript.JSaddle.DOM.Generated.HTMLBRElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HTMLBRElement
diff --git a/src/Language/Javascript/JSaddle/DOM/HTMLBaseElement.hs b/src/Language/Javascript/JSaddle/DOM/HTMLBaseElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HTMLBaseElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HTMLBaseElement (
+  module Language.Javascript.JSaddle.DOM.Generated.HTMLBaseElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HTMLBaseElement
diff --git a/src/Language/Javascript/JSaddle/DOM/HTMLBaseFontElement.hs b/src/Language/Javascript/JSaddle/DOM/HTMLBaseFontElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HTMLBaseFontElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HTMLBaseFontElement (
+  module Language.Javascript.JSaddle.DOM.Generated.HTMLBaseFontElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HTMLBaseFontElement
diff --git a/src/Language/Javascript/JSaddle/DOM/HTMLBodyElement.hs b/src/Language/Javascript/JSaddle/DOM/HTMLBodyElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HTMLBodyElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HTMLBodyElement (
+  module Language.Javascript.JSaddle.DOM.Generated.HTMLBodyElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HTMLBodyElement
diff --git a/src/Language/Javascript/JSaddle/DOM/HTMLButtonElement.hs b/src/Language/Javascript/JSaddle/DOM/HTMLButtonElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HTMLButtonElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HTMLButtonElement (
+  module Language.Javascript.JSaddle.DOM.Generated.HTMLButtonElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HTMLButtonElement
diff --git a/src/Language/Javascript/JSaddle/DOM/HTMLCanvasElement.hs b/src/Language/Javascript/JSaddle/DOM/HTMLCanvasElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HTMLCanvasElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HTMLCanvasElement (
+  module Language.Javascript.JSaddle.DOM.Generated.HTMLCanvasElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HTMLCanvasElement
diff --git a/src/Language/Javascript/JSaddle/DOM/HTMLCollection.hs b/src/Language/Javascript/JSaddle/DOM/HTMLCollection.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HTMLCollection.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HTMLCollection (
+  module Language.Javascript.JSaddle.DOM.Generated.HTMLCollection
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HTMLCollection
diff --git a/src/Language/Javascript/JSaddle/DOM/HTMLDListElement.hs b/src/Language/Javascript/JSaddle/DOM/HTMLDListElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HTMLDListElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HTMLDListElement (
+  module Language.Javascript.JSaddle.DOM.Generated.HTMLDListElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HTMLDListElement
diff --git a/src/Language/Javascript/JSaddle/DOM/HTMLDataListElement.hs b/src/Language/Javascript/JSaddle/DOM/HTMLDataListElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HTMLDataListElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HTMLDataListElement (
+  module Language.Javascript.JSaddle.DOM.Generated.HTMLDataListElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HTMLDataListElement
diff --git a/src/Language/Javascript/JSaddle/DOM/HTMLDetailsElement.hs b/src/Language/Javascript/JSaddle/DOM/HTMLDetailsElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HTMLDetailsElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HTMLDetailsElement (
+  module Language.Javascript.JSaddle.DOM.Generated.HTMLDetailsElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HTMLDetailsElement
diff --git a/src/Language/Javascript/JSaddle/DOM/HTMLDirectoryElement.hs b/src/Language/Javascript/JSaddle/DOM/HTMLDirectoryElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HTMLDirectoryElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HTMLDirectoryElement (
+  module Language.Javascript.JSaddle.DOM.Generated.HTMLDirectoryElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HTMLDirectoryElement
diff --git a/src/Language/Javascript/JSaddle/DOM/HTMLDivElement.hs b/src/Language/Javascript/JSaddle/DOM/HTMLDivElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HTMLDivElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HTMLDivElement (
+  module Language.Javascript.JSaddle.DOM.Generated.HTMLDivElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HTMLDivElement
diff --git a/src/Language/Javascript/JSaddle/DOM/HTMLDocument.hs b/src/Language/Javascript/JSaddle/DOM/HTMLDocument.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HTMLDocument.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HTMLDocument (
+  module Language.Javascript.JSaddle.DOM.Generated.HTMLDocument
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HTMLDocument
diff --git a/src/Language/Javascript/JSaddle/DOM/HTMLElement.hs b/src/Language/Javascript/JSaddle/DOM/HTMLElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HTMLElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HTMLElement (
+  module Language.Javascript.JSaddle.DOM.Generated.HTMLElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HTMLElement
diff --git a/src/Language/Javascript/JSaddle/DOM/HTMLEmbedElement.hs b/src/Language/Javascript/JSaddle/DOM/HTMLEmbedElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HTMLEmbedElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HTMLEmbedElement (
+  module Language.Javascript.JSaddle.DOM.Generated.HTMLEmbedElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HTMLEmbedElement
diff --git a/src/Language/Javascript/JSaddle/DOM/HTMLFieldSetElement.hs b/src/Language/Javascript/JSaddle/DOM/HTMLFieldSetElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HTMLFieldSetElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HTMLFieldSetElement (
+  module Language.Javascript.JSaddle.DOM.Generated.HTMLFieldSetElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HTMLFieldSetElement
diff --git a/src/Language/Javascript/JSaddle/DOM/HTMLFontElement.hs b/src/Language/Javascript/JSaddle/DOM/HTMLFontElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HTMLFontElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HTMLFontElement (
+  module Language.Javascript.JSaddle.DOM.Generated.HTMLFontElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HTMLFontElement
diff --git a/src/Language/Javascript/JSaddle/DOM/HTMLFormControlsCollection.hs b/src/Language/Javascript/JSaddle/DOM/HTMLFormControlsCollection.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HTMLFormControlsCollection.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HTMLFormControlsCollection (
+  module Language.Javascript.JSaddle.DOM.Generated.HTMLFormControlsCollection
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HTMLFormControlsCollection
diff --git a/src/Language/Javascript/JSaddle/DOM/HTMLFormElement.hs b/src/Language/Javascript/JSaddle/DOM/HTMLFormElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HTMLFormElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HTMLFormElement (
+  module Language.Javascript.JSaddle.DOM.Generated.HTMLFormElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HTMLFormElement
diff --git a/src/Language/Javascript/JSaddle/DOM/HTMLFrameElement.hs b/src/Language/Javascript/JSaddle/DOM/HTMLFrameElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HTMLFrameElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HTMLFrameElement (
+  module Language.Javascript.JSaddle.DOM.Generated.HTMLFrameElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HTMLFrameElement
diff --git a/src/Language/Javascript/JSaddle/DOM/HTMLFrameSetElement.hs b/src/Language/Javascript/JSaddle/DOM/HTMLFrameSetElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HTMLFrameSetElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HTMLFrameSetElement (
+  module Language.Javascript.JSaddle.DOM.Generated.HTMLFrameSetElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HTMLFrameSetElement
diff --git a/src/Language/Javascript/JSaddle/DOM/HTMLHRElement.hs b/src/Language/Javascript/JSaddle/DOM/HTMLHRElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HTMLHRElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HTMLHRElement (
+  module Language.Javascript.JSaddle.DOM.Generated.HTMLHRElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HTMLHRElement
diff --git a/src/Language/Javascript/JSaddle/DOM/HTMLHeadElement.hs b/src/Language/Javascript/JSaddle/DOM/HTMLHeadElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HTMLHeadElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HTMLHeadElement (
+  module Language.Javascript.JSaddle.DOM.Generated.HTMLHeadElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HTMLHeadElement
diff --git a/src/Language/Javascript/JSaddle/DOM/HTMLHeadingElement.hs b/src/Language/Javascript/JSaddle/DOM/HTMLHeadingElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HTMLHeadingElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HTMLHeadingElement (
+  module Language.Javascript.JSaddle.DOM.Generated.HTMLHeadingElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HTMLHeadingElement
diff --git a/src/Language/Javascript/JSaddle/DOM/HTMLHtmlElement.hs b/src/Language/Javascript/JSaddle/DOM/HTMLHtmlElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HTMLHtmlElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HTMLHtmlElement (
+  module Language.Javascript.JSaddle.DOM.Generated.HTMLHtmlElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HTMLHtmlElement
diff --git a/src/Language/Javascript/JSaddle/DOM/HTMLIFrameElement.hs b/src/Language/Javascript/JSaddle/DOM/HTMLIFrameElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HTMLIFrameElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HTMLIFrameElement (
+  module Language.Javascript.JSaddle.DOM.Generated.HTMLIFrameElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HTMLIFrameElement
diff --git a/src/Language/Javascript/JSaddle/DOM/HTMLImageElement.hs b/src/Language/Javascript/JSaddle/DOM/HTMLImageElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HTMLImageElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HTMLImageElement (
+  module Language.Javascript.JSaddle.DOM.Generated.HTMLImageElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HTMLImageElement
diff --git a/src/Language/Javascript/JSaddle/DOM/HTMLInputElement.hs b/src/Language/Javascript/JSaddle/DOM/HTMLInputElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HTMLInputElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HTMLInputElement (
+  module Language.Javascript.JSaddle.DOM.Generated.HTMLInputElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HTMLInputElement
diff --git a/src/Language/Javascript/JSaddle/DOM/HTMLKeygenElement.hs b/src/Language/Javascript/JSaddle/DOM/HTMLKeygenElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HTMLKeygenElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HTMLKeygenElement (
+  module Language.Javascript.JSaddle.DOM.Generated.HTMLKeygenElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HTMLKeygenElement
diff --git a/src/Language/Javascript/JSaddle/DOM/HTMLLIElement.hs b/src/Language/Javascript/JSaddle/DOM/HTMLLIElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HTMLLIElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HTMLLIElement (
+  module Language.Javascript.JSaddle.DOM.Generated.HTMLLIElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HTMLLIElement
diff --git a/src/Language/Javascript/JSaddle/DOM/HTMLLabelElement.hs b/src/Language/Javascript/JSaddle/DOM/HTMLLabelElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HTMLLabelElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HTMLLabelElement (
+  module Language.Javascript.JSaddle.DOM.Generated.HTMLLabelElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HTMLLabelElement
diff --git a/src/Language/Javascript/JSaddle/DOM/HTMLLegendElement.hs b/src/Language/Javascript/JSaddle/DOM/HTMLLegendElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HTMLLegendElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HTMLLegendElement (
+  module Language.Javascript.JSaddle.DOM.Generated.HTMLLegendElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HTMLLegendElement
diff --git a/src/Language/Javascript/JSaddle/DOM/HTMLLinkElement.hs b/src/Language/Javascript/JSaddle/DOM/HTMLLinkElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HTMLLinkElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HTMLLinkElement (
+  module Language.Javascript.JSaddle.DOM.Generated.HTMLLinkElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HTMLLinkElement
diff --git a/src/Language/Javascript/JSaddle/DOM/HTMLMapElement.hs b/src/Language/Javascript/JSaddle/DOM/HTMLMapElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HTMLMapElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HTMLMapElement (
+  module Language.Javascript.JSaddle.DOM.Generated.HTMLMapElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HTMLMapElement
diff --git a/src/Language/Javascript/JSaddle/DOM/HTMLMarqueeElement.hs b/src/Language/Javascript/JSaddle/DOM/HTMLMarqueeElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HTMLMarqueeElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HTMLMarqueeElement (
+  module Language.Javascript.JSaddle.DOM.Generated.HTMLMarqueeElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HTMLMarqueeElement
diff --git a/src/Language/Javascript/JSaddle/DOM/HTMLMediaElement.hs b/src/Language/Javascript/JSaddle/DOM/HTMLMediaElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HTMLMediaElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HTMLMediaElement (
+  module Language.Javascript.JSaddle.DOM.Generated.HTMLMediaElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HTMLMediaElement
diff --git a/src/Language/Javascript/JSaddle/DOM/HTMLMenuElement.hs b/src/Language/Javascript/JSaddle/DOM/HTMLMenuElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HTMLMenuElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HTMLMenuElement (
+  module Language.Javascript.JSaddle.DOM.Generated.HTMLMenuElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HTMLMenuElement
diff --git a/src/Language/Javascript/JSaddle/DOM/HTMLMetaElement.hs b/src/Language/Javascript/JSaddle/DOM/HTMLMetaElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HTMLMetaElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HTMLMetaElement (
+  module Language.Javascript.JSaddle.DOM.Generated.HTMLMetaElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HTMLMetaElement
diff --git a/src/Language/Javascript/JSaddle/DOM/HTMLMeterElement.hs b/src/Language/Javascript/JSaddle/DOM/HTMLMeterElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HTMLMeterElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HTMLMeterElement (
+  module Language.Javascript.JSaddle.DOM.Generated.HTMLMeterElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HTMLMeterElement
diff --git a/src/Language/Javascript/JSaddle/DOM/HTMLModElement.hs b/src/Language/Javascript/JSaddle/DOM/HTMLModElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HTMLModElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HTMLModElement (
+  module Language.Javascript.JSaddle.DOM.Generated.HTMLModElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HTMLModElement
diff --git a/src/Language/Javascript/JSaddle/DOM/HTMLOListElement.hs b/src/Language/Javascript/JSaddle/DOM/HTMLOListElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HTMLOListElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HTMLOListElement (
+  module Language.Javascript.JSaddle.DOM.Generated.HTMLOListElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HTMLOListElement
diff --git a/src/Language/Javascript/JSaddle/DOM/HTMLObjectElement.hs b/src/Language/Javascript/JSaddle/DOM/HTMLObjectElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HTMLObjectElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HTMLObjectElement (
+  module Language.Javascript.JSaddle.DOM.Generated.HTMLObjectElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HTMLObjectElement
diff --git a/src/Language/Javascript/JSaddle/DOM/HTMLOptGroupElement.hs b/src/Language/Javascript/JSaddle/DOM/HTMLOptGroupElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HTMLOptGroupElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HTMLOptGroupElement (
+  module Language.Javascript.JSaddle.DOM.Generated.HTMLOptGroupElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HTMLOptGroupElement
diff --git a/src/Language/Javascript/JSaddle/DOM/HTMLOptionElement.hs b/src/Language/Javascript/JSaddle/DOM/HTMLOptionElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HTMLOptionElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HTMLOptionElement (
+  module Language.Javascript.JSaddle.DOM.Generated.HTMLOptionElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HTMLOptionElement
diff --git a/src/Language/Javascript/JSaddle/DOM/HTMLOptionsCollection.hs b/src/Language/Javascript/JSaddle/DOM/HTMLOptionsCollection.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HTMLOptionsCollection.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HTMLOptionsCollection (
+  module Language.Javascript.JSaddle.DOM.Generated.HTMLOptionsCollection
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HTMLOptionsCollection
diff --git a/src/Language/Javascript/JSaddle/DOM/HTMLOutputElement.hs b/src/Language/Javascript/JSaddle/DOM/HTMLOutputElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HTMLOutputElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HTMLOutputElement (
+  module Language.Javascript.JSaddle.DOM.Generated.HTMLOutputElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HTMLOutputElement
diff --git a/src/Language/Javascript/JSaddle/DOM/HTMLParagraphElement.hs b/src/Language/Javascript/JSaddle/DOM/HTMLParagraphElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HTMLParagraphElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HTMLParagraphElement (
+  module Language.Javascript.JSaddle.DOM.Generated.HTMLParagraphElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HTMLParagraphElement
diff --git a/src/Language/Javascript/JSaddle/DOM/HTMLParamElement.hs b/src/Language/Javascript/JSaddle/DOM/HTMLParamElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HTMLParamElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HTMLParamElement (
+  module Language.Javascript.JSaddle.DOM.Generated.HTMLParamElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HTMLParamElement
diff --git a/src/Language/Javascript/JSaddle/DOM/HTMLPreElement.hs b/src/Language/Javascript/JSaddle/DOM/HTMLPreElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HTMLPreElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HTMLPreElement (
+  module Language.Javascript.JSaddle.DOM.Generated.HTMLPreElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HTMLPreElement
diff --git a/src/Language/Javascript/JSaddle/DOM/HTMLProgressElement.hs b/src/Language/Javascript/JSaddle/DOM/HTMLProgressElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HTMLProgressElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HTMLProgressElement (
+  module Language.Javascript.JSaddle.DOM.Generated.HTMLProgressElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HTMLProgressElement
diff --git a/src/Language/Javascript/JSaddle/DOM/HTMLQuoteElement.hs b/src/Language/Javascript/JSaddle/DOM/HTMLQuoteElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HTMLQuoteElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HTMLQuoteElement (
+  module Language.Javascript.JSaddle.DOM.Generated.HTMLQuoteElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HTMLQuoteElement
diff --git a/src/Language/Javascript/JSaddle/DOM/HTMLScriptElement.hs b/src/Language/Javascript/JSaddle/DOM/HTMLScriptElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HTMLScriptElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HTMLScriptElement (
+  module Language.Javascript.JSaddle.DOM.Generated.HTMLScriptElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HTMLScriptElement
diff --git a/src/Language/Javascript/JSaddle/DOM/HTMLSelectElement.hs b/src/Language/Javascript/JSaddle/DOM/HTMLSelectElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HTMLSelectElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HTMLSelectElement (
+  module Language.Javascript.JSaddle.DOM.Generated.HTMLSelectElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HTMLSelectElement
diff --git a/src/Language/Javascript/JSaddle/DOM/HTMLSourceElement.hs b/src/Language/Javascript/JSaddle/DOM/HTMLSourceElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HTMLSourceElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HTMLSourceElement (
+  module Language.Javascript.JSaddle.DOM.Generated.HTMLSourceElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HTMLSourceElement
diff --git a/src/Language/Javascript/JSaddle/DOM/HTMLStyleElement.hs b/src/Language/Javascript/JSaddle/DOM/HTMLStyleElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HTMLStyleElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HTMLStyleElement (
+  module Language.Javascript.JSaddle.DOM.Generated.HTMLStyleElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HTMLStyleElement
diff --git a/src/Language/Javascript/JSaddle/DOM/HTMLTableCaptionElement.hs b/src/Language/Javascript/JSaddle/DOM/HTMLTableCaptionElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HTMLTableCaptionElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HTMLTableCaptionElement (
+  module Language.Javascript.JSaddle.DOM.Generated.HTMLTableCaptionElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HTMLTableCaptionElement
diff --git a/src/Language/Javascript/JSaddle/DOM/HTMLTableCellElement.hs b/src/Language/Javascript/JSaddle/DOM/HTMLTableCellElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HTMLTableCellElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HTMLTableCellElement (
+  module Language.Javascript.JSaddle.DOM.Generated.HTMLTableCellElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HTMLTableCellElement
diff --git a/src/Language/Javascript/JSaddle/DOM/HTMLTableColElement.hs b/src/Language/Javascript/JSaddle/DOM/HTMLTableColElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HTMLTableColElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HTMLTableColElement (
+  module Language.Javascript.JSaddle.DOM.Generated.HTMLTableColElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HTMLTableColElement
diff --git a/src/Language/Javascript/JSaddle/DOM/HTMLTableElement.hs b/src/Language/Javascript/JSaddle/DOM/HTMLTableElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HTMLTableElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HTMLTableElement (
+  module Language.Javascript.JSaddle.DOM.Generated.HTMLTableElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HTMLTableElement
diff --git a/src/Language/Javascript/JSaddle/DOM/HTMLTableRowElement.hs b/src/Language/Javascript/JSaddle/DOM/HTMLTableRowElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HTMLTableRowElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HTMLTableRowElement (
+  module Language.Javascript.JSaddle.DOM.Generated.HTMLTableRowElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HTMLTableRowElement
diff --git a/src/Language/Javascript/JSaddle/DOM/HTMLTableSectionElement.hs b/src/Language/Javascript/JSaddle/DOM/HTMLTableSectionElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HTMLTableSectionElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HTMLTableSectionElement (
+  module Language.Javascript.JSaddle.DOM.Generated.HTMLTableSectionElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HTMLTableSectionElement
diff --git a/src/Language/Javascript/JSaddle/DOM/HTMLTemplateElement.hs b/src/Language/Javascript/JSaddle/DOM/HTMLTemplateElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HTMLTemplateElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HTMLTemplateElement (
+  module Language.Javascript.JSaddle.DOM.Generated.HTMLTemplateElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HTMLTemplateElement
diff --git a/src/Language/Javascript/JSaddle/DOM/HTMLTextAreaElement.hs b/src/Language/Javascript/JSaddle/DOM/HTMLTextAreaElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HTMLTextAreaElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HTMLTextAreaElement (
+  module Language.Javascript.JSaddle.DOM.Generated.HTMLTextAreaElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HTMLTextAreaElement
diff --git a/src/Language/Javascript/JSaddle/DOM/HTMLTitleElement.hs b/src/Language/Javascript/JSaddle/DOM/HTMLTitleElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HTMLTitleElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HTMLTitleElement (
+  module Language.Javascript.JSaddle.DOM.Generated.HTMLTitleElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HTMLTitleElement
diff --git a/src/Language/Javascript/JSaddle/DOM/HTMLTrackElement.hs b/src/Language/Javascript/JSaddle/DOM/HTMLTrackElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HTMLTrackElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HTMLTrackElement (
+  module Language.Javascript.JSaddle.DOM.Generated.HTMLTrackElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HTMLTrackElement
diff --git a/src/Language/Javascript/JSaddle/DOM/HTMLUListElement.hs b/src/Language/Javascript/JSaddle/DOM/HTMLUListElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HTMLUListElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HTMLUListElement (
+  module Language.Javascript.JSaddle.DOM.Generated.HTMLUListElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HTMLUListElement
diff --git a/src/Language/Javascript/JSaddle/DOM/HTMLVideoElement.hs b/src/Language/Javascript/JSaddle/DOM/HTMLVideoElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HTMLVideoElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HTMLVideoElement (
+  module Language.Javascript.JSaddle.DOM.Generated.HTMLVideoElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HTMLVideoElement
diff --git a/src/Language/Javascript/JSaddle/DOM/HashChangeEvent.hs b/src/Language/Javascript/JSaddle/DOM/HashChangeEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/HashChangeEvent.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.HashChangeEvent (
+  module Language.Javascript.JSaddle.DOM.Generated.HashChangeEvent
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.HashChangeEvent
diff --git a/src/Language/Javascript/JSaddle/DOM/History.hs b/src/Language/Javascript/JSaddle/DOM/History.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/History.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.History (
+  module Language.Javascript.JSaddle.DOM.Generated.History
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.History
diff --git a/src/Language/Javascript/JSaddle/DOM/IDBCursor.hs b/src/Language/Javascript/JSaddle/DOM/IDBCursor.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/IDBCursor.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.IDBCursor (
+  module Language.Javascript.JSaddle.DOM.Generated.IDBCursor
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.IDBCursor
diff --git a/src/Language/Javascript/JSaddle/DOM/IDBCursorWithValue.hs b/src/Language/Javascript/JSaddle/DOM/IDBCursorWithValue.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/IDBCursorWithValue.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.IDBCursorWithValue (
+  module Language.Javascript.JSaddle.DOM.Generated.IDBCursorWithValue
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.IDBCursorWithValue
diff --git a/src/Language/Javascript/JSaddle/DOM/IDBDatabase.hs b/src/Language/Javascript/JSaddle/DOM/IDBDatabase.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/IDBDatabase.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.IDBDatabase (
+  module Language.Javascript.JSaddle.DOM.Generated.IDBDatabase
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.IDBDatabase
diff --git a/src/Language/Javascript/JSaddle/DOM/IDBFactory.hs b/src/Language/Javascript/JSaddle/DOM/IDBFactory.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/IDBFactory.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.IDBFactory (
+  module Language.Javascript.JSaddle.DOM.Generated.IDBFactory
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.IDBFactory
diff --git a/src/Language/Javascript/JSaddle/DOM/IDBIndex.hs b/src/Language/Javascript/JSaddle/DOM/IDBIndex.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/IDBIndex.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.IDBIndex (
+  module Language.Javascript.JSaddle.DOM.Generated.IDBIndex
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.IDBIndex
diff --git a/src/Language/Javascript/JSaddle/DOM/IDBKeyRange.hs b/src/Language/Javascript/JSaddle/DOM/IDBKeyRange.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/IDBKeyRange.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.IDBKeyRange (
+  module Language.Javascript.JSaddle.DOM.Generated.IDBKeyRange
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.IDBKeyRange
diff --git a/src/Language/Javascript/JSaddle/DOM/IDBObjectStore.hs b/src/Language/Javascript/JSaddle/DOM/IDBObjectStore.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/IDBObjectStore.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.IDBObjectStore (
+  module Language.Javascript.JSaddle.DOM.Generated.IDBObjectStore
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.IDBObjectStore
diff --git a/src/Language/Javascript/JSaddle/DOM/IDBOpenDBRequest.hs b/src/Language/Javascript/JSaddle/DOM/IDBOpenDBRequest.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/IDBOpenDBRequest.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.IDBOpenDBRequest (
+  module Language.Javascript.JSaddle.DOM.Generated.IDBOpenDBRequest
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.IDBOpenDBRequest
diff --git a/src/Language/Javascript/JSaddle/DOM/IDBRequest.hs b/src/Language/Javascript/JSaddle/DOM/IDBRequest.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/IDBRequest.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.IDBRequest (
+  module Language.Javascript.JSaddle.DOM.Generated.IDBRequest
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.IDBRequest
diff --git a/src/Language/Javascript/JSaddle/DOM/IDBTransaction.hs b/src/Language/Javascript/JSaddle/DOM/IDBTransaction.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/IDBTransaction.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.IDBTransaction (
+  module Language.Javascript.JSaddle.DOM.Generated.IDBTransaction
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.IDBTransaction
diff --git a/src/Language/Javascript/JSaddle/DOM/IDBVersionChangeEvent.hs b/src/Language/Javascript/JSaddle/DOM/IDBVersionChangeEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/IDBVersionChangeEvent.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.IDBVersionChangeEvent (
+  module Language.Javascript.JSaddle.DOM.Generated.IDBVersionChangeEvent
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.IDBVersionChangeEvent
diff --git a/src/Language/Javascript/JSaddle/DOM/ImageData.hs b/src/Language/Javascript/JSaddle/DOM/ImageData.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/ImageData.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.ImageData (
+  module Language.Javascript.JSaddle.DOM.Generated.ImageData
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.ImageData
diff --git a/src/Language/Javascript/JSaddle/DOM/InspectorFrontendHost.hs b/src/Language/Javascript/JSaddle/DOM/InspectorFrontendHost.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/InspectorFrontendHost.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.InspectorFrontendHost (
+  module Language.Javascript.JSaddle.DOM.Generated.InspectorFrontendHost
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.InspectorFrontendHost
diff --git a/src/Language/Javascript/JSaddle/DOM/InternalSettings.hs b/src/Language/Javascript/JSaddle/DOM/InternalSettings.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/InternalSettings.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.InternalSettings (
+  module Language.Javascript.JSaddle.DOM.Generated.InternalSettings
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.InternalSettings
diff --git a/src/Language/Javascript/JSaddle/DOM/Internals.hs b/src/Language/Javascript/JSaddle/DOM/Internals.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Internals.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.Internals (
+  module Language.Javascript.JSaddle.DOM.Generated.Internals
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.Internals
diff --git a/src/Language/Javascript/JSaddle/DOM/KeyboardEvent.hs b/src/Language/Javascript/JSaddle/DOM/KeyboardEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/KeyboardEvent.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.KeyboardEvent (
+  module Language.Javascript.JSaddle.DOM.Generated.KeyboardEvent
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.KeyboardEvent
diff --git a/src/Language/Javascript/JSaddle/DOM/Location.hs b/src/Language/Javascript/JSaddle/DOM/Location.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Location.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.Location (
+  module Language.Javascript.JSaddle.DOM.Generated.Location
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.Location
diff --git a/src/Language/Javascript/JSaddle/DOM/MallocStatistics.hs b/src/Language/Javascript/JSaddle/DOM/MallocStatistics.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/MallocStatistics.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.MallocStatistics (
+  module Language.Javascript.JSaddle.DOM.Generated.MallocStatistics
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.MallocStatistics
diff --git a/src/Language/Javascript/JSaddle/DOM/MediaController.hs b/src/Language/Javascript/JSaddle/DOM/MediaController.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/MediaController.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.MediaController (
+  module Language.Javascript.JSaddle.DOM.Generated.MediaController
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.MediaController
diff --git a/src/Language/Javascript/JSaddle/DOM/MediaControlsHost.hs b/src/Language/Javascript/JSaddle/DOM/MediaControlsHost.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/MediaControlsHost.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.MediaControlsHost (
+  module Language.Javascript.JSaddle.DOM.Generated.MediaControlsHost
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.MediaControlsHost
diff --git a/src/Language/Javascript/JSaddle/DOM/MediaElementAudioSourceNode.hs b/src/Language/Javascript/JSaddle/DOM/MediaElementAudioSourceNode.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/MediaElementAudioSourceNode.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.MediaElementAudioSourceNode (
+  module Language.Javascript.JSaddle.DOM.Generated.MediaElementAudioSourceNode
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.MediaElementAudioSourceNode
diff --git a/src/Language/Javascript/JSaddle/DOM/MediaError.hs b/src/Language/Javascript/JSaddle/DOM/MediaError.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/MediaError.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.MediaError (
+  module Language.Javascript.JSaddle.DOM.Generated.MediaError
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.MediaError
diff --git a/src/Language/Javascript/JSaddle/DOM/MediaKeyError.hs b/src/Language/Javascript/JSaddle/DOM/MediaKeyError.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/MediaKeyError.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.MediaKeyError (
+  module Language.Javascript.JSaddle.DOM.Generated.MediaKeyError
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.MediaKeyError
diff --git a/src/Language/Javascript/JSaddle/DOM/MediaKeyEvent.hs b/src/Language/Javascript/JSaddle/DOM/MediaKeyEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/MediaKeyEvent.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.MediaKeyEvent (
+  module Language.Javascript.JSaddle.DOM.Generated.MediaKeyEvent
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.MediaKeyEvent
diff --git a/src/Language/Javascript/JSaddle/DOM/MediaKeyMessageEvent.hs b/src/Language/Javascript/JSaddle/DOM/MediaKeyMessageEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/MediaKeyMessageEvent.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.MediaKeyMessageEvent (
+  module Language.Javascript.JSaddle.DOM.Generated.MediaKeyMessageEvent
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.MediaKeyMessageEvent
diff --git a/src/Language/Javascript/JSaddle/DOM/MediaKeyNeededEvent.hs b/src/Language/Javascript/JSaddle/DOM/MediaKeyNeededEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/MediaKeyNeededEvent.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.MediaKeyNeededEvent (
+  module Language.Javascript.JSaddle.DOM.Generated.MediaKeyNeededEvent
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.MediaKeyNeededEvent
diff --git a/src/Language/Javascript/JSaddle/DOM/MediaKeySession.hs b/src/Language/Javascript/JSaddle/DOM/MediaKeySession.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/MediaKeySession.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.MediaKeySession (
+  module Language.Javascript.JSaddle.DOM.Generated.MediaKeySession
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.MediaKeySession
diff --git a/src/Language/Javascript/JSaddle/DOM/MediaKeys.hs b/src/Language/Javascript/JSaddle/DOM/MediaKeys.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/MediaKeys.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.MediaKeys (
+  module Language.Javascript.JSaddle.DOM.Generated.MediaKeys
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.MediaKeys
diff --git a/src/Language/Javascript/JSaddle/DOM/MediaList.hs b/src/Language/Javascript/JSaddle/DOM/MediaList.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/MediaList.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.MediaList (
+  module Language.Javascript.JSaddle.DOM.Generated.MediaList
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.MediaList
diff --git a/src/Language/Javascript/JSaddle/DOM/MediaQueryList.hs b/src/Language/Javascript/JSaddle/DOM/MediaQueryList.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/MediaQueryList.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.MediaQueryList (
+  module Language.Javascript.JSaddle.DOM.Generated.MediaQueryList
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.MediaQueryList
diff --git a/src/Language/Javascript/JSaddle/DOM/MediaQueryListListener.hs b/src/Language/Javascript/JSaddle/DOM/MediaQueryListListener.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/MediaQueryListListener.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.MediaQueryListListener (
+  module Language.Javascript.JSaddle.DOM.Generated.MediaQueryListListener
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.MediaQueryListListener
diff --git a/src/Language/Javascript/JSaddle/DOM/MediaSource.hs b/src/Language/Javascript/JSaddle/DOM/MediaSource.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/MediaSource.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.MediaSource (
+  module Language.Javascript.JSaddle.DOM.Generated.MediaSource
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.MediaSource
diff --git a/src/Language/Javascript/JSaddle/DOM/MediaSourceStates.hs b/src/Language/Javascript/JSaddle/DOM/MediaSourceStates.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/MediaSourceStates.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.MediaSourceStates (
+  module Language.Javascript.JSaddle.DOM.Generated.MediaSourceStates
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.MediaSourceStates
diff --git a/src/Language/Javascript/JSaddle/DOM/MediaStream.hs b/src/Language/Javascript/JSaddle/DOM/MediaStream.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/MediaStream.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.MediaStream (
+  module Language.Javascript.JSaddle.DOM.Generated.MediaStream
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.MediaStream
diff --git a/src/Language/Javascript/JSaddle/DOM/MediaStreamAudioDestinationNode.hs b/src/Language/Javascript/JSaddle/DOM/MediaStreamAudioDestinationNode.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/MediaStreamAudioDestinationNode.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.MediaStreamAudioDestinationNode (
+  module Language.Javascript.JSaddle.DOM.Generated.MediaStreamAudioDestinationNode
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.MediaStreamAudioDestinationNode
diff --git a/src/Language/Javascript/JSaddle/DOM/MediaStreamAudioSourceNode.hs b/src/Language/Javascript/JSaddle/DOM/MediaStreamAudioSourceNode.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/MediaStreamAudioSourceNode.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.MediaStreamAudioSourceNode (
+  module Language.Javascript.JSaddle.DOM.Generated.MediaStreamAudioSourceNode
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.MediaStreamAudioSourceNode
diff --git a/src/Language/Javascript/JSaddle/DOM/MediaStreamEvent.hs b/src/Language/Javascript/JSaddle/DOM/MediaStreamEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/MediaStreamEvent.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.MediaStreamEvent (
+  module Language.Javascript.JSaddle.DOM.Generated.MediaStreamEvent
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.MediaStreamEvent
diff --git a/src/Language/Javascript/JSaddle/DOM/MediaStreamTrack.hs b/src/Language/Javascript/JSaddle/DOM/MediaStreamTrack.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/MediaStreamTrack.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.MediaStreamTrack (
+  module Language.Javascript.JSaddle.DOM.Custom.MediaStreamTrack
+  ) where
+import Language.Javascript.JSaddle.DOM.Custom.MediaStreamTrack
diff --git a/src/Language/Javascript/JSaddle/DOM/MediaStreamTrackEvent.hs b/src/Language/Javascript/JSaddle/DOM/MediaStreamTrackEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/MediaStreamTrackEvent.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.MediaStreamTrackEvent (
+  module Language.Javascript.JSaddle.DOM.Generated.MediaStreamTrackEvent
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.MediaStreamTrackEvent
diff --git a/src/Language/Javascript/JSaddle/DOM/MediaStreamTrackSourcesCallback.hs b/src/Language/Javascript/JSaddle/DOM/MediaStreamTrackSourcesCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/MediaStreamTrackSourcesCallback.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.MediaStreamTrackSourcesCallback (
+  module Language.Javascript.JSaddle.DOM.Generated.MediaStreamTrackSourcesCallback
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.MediaStreamTrackSourcesCallback
diff --git a/src/Language/Javascript/JSaddle/DOM/MediaTrackConstraints.hs b/src/Language/Javascript/JSaddle/DOM/MediaTrackConstraints.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/MediaTrackConstraints.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.MediaTrackConstraints (
+  module Language.Javascript.JSaddle.DOM.Generated.MediaTrackConstraints
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.MediaTrackConstraints
diff --git a/src/Language/Javascript/JSaddle/DOM/MemoryInfo.hs b/src/Language/Javascript/JSaddle/DOM/MemoryInfo.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/MemoryInfo.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.MemoryInfo (
+  module Language.Javascript.JSaddle.DOM.Generated.MemoryInfo
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.MemoryInfo
diff --git a/src/Language/Javascript/JSaddle/DOM/MessageChannel.hs b/src/Language/Javascript/JSaddle/DOM/MessageChannel.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/MessageChannel.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.MessageChannel (
+  module Language.Javascript.JSaddle.DOM.Generated.MessageChannel
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.MessageChannel
diff --git a/src/Language/Javascript/JSaddle/DOM/MessageEvent.hs b/src/Language/Javascript/JSaddle/DOM/MessageEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/MessageEvent.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.MessageEvent (
+  module Language.Javascript.JSaddle.DOM.Generated.MessageEvent
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.MessageEvent
diff --git a/src/Language/Javascript/JSaddle/DOM/MessagePort.hs b/src/Language/Javascript/JSaddle/DOM/MessagePort.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/MessagePort.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.MessagePort (
+  module Language.Javascript.JSaddle.DOM.Generated.MessagePort
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.MessagePort
diff --git a/src/Language/Javascript/JSaddle/DOM/MimeType.hs b/src/Language/Javascript/JSaddle/DOM/MimeType.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/MimeType.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.MimeType (
+  module Language.Javascript.JSaddle.DOM.Generated.MimeType
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.MimeType
diff --git a/src/Language/Javascript/JSaddle/DOM/MimeTypeArray.hs b/src/Language/Javascript/JSaddle/DOM/MimeTypeArray.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/MimeTypeArray.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.MimeTypeArray (
+  module Language.Javascript.JSaddle.DOM.Generated.MimeTypeArray
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.MimeTypeArray
diff --git a/src/Language/Javascript/JSaddle/DOM/MouseEvent.hs b/src/Language/Javascript/JSaddle/DOM/MouseEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/MouseEvent.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.MouseEvent (
+  module Language.Javascript.JSaddle.DOM.Generated.MouseEvent
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.MouseEvent
diff --git a/src/Language/Javascript/JSaddle/DOM/MutationEvent.hs b/src/Language/Javascript/JSaddle/DOM/MutationEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/MutationEvent.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.MutationEvent (
+  module Language.Javascript.JSaddle.DOM.Generated.MutationEvent
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.MutationEvent
diff --git a/src/Language/Javascript/JSaddle/DOM/MutationObserver.hs b/src/Language/Javascript/JSaddle/DOM/MutationObserver.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/MutationObserver.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.MutationObserver (
+  module Language.Javascript.JSaddle.DOM.Generated.MutationObserver
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.MutationObserver
diff --git a/src/Language/Javascript/JSaddle/DOM/MutationRecord.hs b/src/Language/Javascript/JSaddle/DOM/MutationRecord.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/MutationRecord.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.MutationRecord (
+  module Language.Javascript.JSaddle.DOM.Generated.MutationRecord
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.MutationRecord
diff --git a/src/Language/Javascript/JSaddle/DOM/NamedNodeMap.hs b/src/Language/Javascript/JSaddle/DOM/NamedNodeMap.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/NamedNodeMap.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.NamedNodeMap (
+  module Language.Javascript.JSaddle.DOM.Generated.NamedNodeMap
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.NamedNodeMap
diff --git a/src/Language/Javascript/JSaddle/DOM/Navigator.hs b/src/Language/Javascript/JSaddle/DOM/Navigator.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Navigator.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.Navigator (
+  module Language.Javascript.JSaddle.DOM.Custom.Navigator
+  ) where
+import Language.Javascript.JSaddle.DOM.Custom.Navigator
diff --git a/src/Language/Javascript/JSaddle/DOM/NavigatorUserMediaError.hs b/src/Language/Javascript/JSaddle/DOM/NavigatorUserMediaError.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/NavigatorUserMediaError.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.NavigatorUserMediaError (
+  module Language.Javascript.JSaddle.DOM.Custom.NavigatorUserMediaError
+  ) where
+import Language.Javascript.JSaddle.DOM.Custom.NavigatorUserMediaError
diff --git a/src/Language/Javascript/JSaddle/DOM/NavigatorUserMediaErrorCallback.hs b/src/Language/Javascript/JSaddle/DOM/NavigatorUserMediaErrorCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/NavigatorUserMediaErrorCallback.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.NavigatorUserMediaErrorCallback (
+  module Language.Javascript.JSaddle.DOM.Generated.NavigatorUserMediaErrorCallback
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.NavigatorUserMediaErrorCallback
diff --git a/src/Language/Javascript/JSaddle/DOM/NavigatorUserMediaSuccessCallback.hs b/src/Language/Javascript/JSaddle/DOM/NavigatorUserMediaSuccessCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/NavigatorUserMediaSuccessCallback.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.NavigatorUserMediaSuccessCallback (
+  module Language.Javascript.JSaddle.DOM.Generated.NavigatorUserMediaSuccessCallback
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.NavigatorUserMediaSuccessCallback
diff --git a/src/Language/Javascript/JSaddle/DOM/Node.hs b/src/Language/Javascript/JSaddle/DOM/Node.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Node.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.Node (
+  module Language.Javascript.JSaddle.DOM.Generated.Node
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.Node
diff --git a/src/Language/Javascript/JSaddle/DOM/NodeFilter.hs b/src/Language/Javascript/JSaddle/DOM/NodeFilter.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/NodeFilter.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.NodeFilter (
+  module Language.Javascript.JSaddle.DOM.Generated.NodeFilter
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.NodeFilter
diff --git a/src/Language/Javascript/JSaddle/DOM/NodeIterator.hs b/src/Language/Javascript/JSaddle/DOM/NodeIterator.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/NodeIterator.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.NodeIterator (
+  module Language.Javascript.JSaddle.DOM.Generated.NodeIterator
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.NodeIterator
diff --git a/src/Language/Javascript/JSaddle/DOM/NodeList.hs b/src/Language/Javascript/JSaddle/DOM/NodeList.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/NodeList.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.NodeList (
+  module Language.Javascript.JSaddle.DOM.Generated.NodeList
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.NodeList
diff --git a/src/Language/Javascript/JSaddle/DOM/Notification.hs b/src/Language/Javascript/JSaddle/DOM/Notification.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Notification.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.Notification (
+  module Language.Javascript.JSaddle.DOM.Generated.Notification
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.Notification
diff --git a/src/Language/Javascript/JSaddle/DOM/NotificationCenter.hs b/src/Language/Javascript/JSaddle/DOM/NotificationCenter.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/NotificationCenter.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.NotificationCenter (
+  module Language.Javascript.JSaddle.DOM.Generated.NotificationCenter
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.NotificationCenter
diff --git a/src/Language/Javascript/JSaddle/DOM/NotificationPermissionCallback.hs b/src/Language/Javascript/JSaddle/DOM/NotificationPermissionCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/NotificationPermissionCallback.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.NotificationPermissionCallback (
+  module Language.Javascript.JSaddle.DOM.Generated.NotificationPermissionCallback
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.NotificationPermissionCallback
diff --git a/src/Language/Javascript/JSaddle/DOM/OESStandardDerivatives.hs b/src/Language/Javascript/JSaddle/DOM/OESStandardDerivatives.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/OESStandardDerivatives.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.OESStandardDerivatives (
+  module Language.Javascript.JSaddle.DOM.Generated.OESStandardDerivatives
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.OESStandardDerivatives
diff --git a/src/Language/Javascript/JSaddle/DOM/OESTextureHalfFloat.hs b/src/Language/Javascript/JSaddle/DOM/OESTextureHalfFloat.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/OESTextureHalfFloat.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.OESTextureHalfFloat (
+  module Language.Javascript.JSaddle.DOM.Generated.OESTextureHalfFloat
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.OESTextureHalfFloat
diff --git a/src/Language/Javascript/JSaddle/DOM/OESVertexArrayObject.hs b/src/Language/Javascript/JSaddle/DOM/OESVertexArrayObject.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/OESVertexArrayObject.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.OESVertexArrayObject (
+  module Language.Javascript.JSaddle.DOM.Generated.OESVertexArrayObject
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.OESVertexArrayObject
diff --git a/src/Language/Javascript/JSaddle/DOM/OfflineAudioCompletionEvent.hs b/src/Language/Javascript/JSaddle/DOM/OfflineAudioCompletionEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/OfflineAudioCompletionEvent.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.OfflineAudioCompletionEvent (
+  module Language.Javascript.JSaddle.DOM.Generated.OfflineAudioCompletionEvent
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.OfflineAudioCompletionEvent
diff --git a/src/Language/Javascript/JSaddle/DOM/OfflineAudioContext.hs b/src/Language/Javascript/JSaddle/DOM/OfflineAudioContext.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/OfflineAudioContext.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.OfflineAudioContext (
+  module Language.Javascript.JSaddle.DOM.Generated.OfflineAudioContext
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.OfflineAudioContext
diff --git a/src/Language/Javascript/JSaddle/DOM/OscillatorNode.hs b/src/Language/Javascript/JSaddle/DOM/OscillatorNode.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/OscillatorNode.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.OscillatorNode (
+  module Language.Javascript.JSaddle.DOM.Generated.OscillatorNode
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.OscillatorNode
diff --git a/src/Language/Javascript/JSaddle/DOM/OverflowEvent.hs b/src/Language/Javascript/JSaddle/DOM/OverflowEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/OverflowEvent.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.OverflowEvent (
+  module Language.Javascript.JSaddle.DOM.Generated.OverflowEvent
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.OverflowEvent
diff --git a/src/Language/Javascript/JSaddle/DOM/PageTransitionEvent.hs b/src/Language/Javascript/JSaddle/DOM/PageTransitionEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/PageTransitionEvent.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.PageTransitionEvent (
+  module Language.Javascript.JSaddle.DOM.Generated.PageTransitionEvent
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.PageTransitionEvent
diff --git a/src/Language/Javascript/JSaddle/DOM/PannerNode.hs b/src/Language/Javascript/JSaddle/DOM/PannerNode.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/PannerNode.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.PannerNode (
+  module Language.Javascript.JSaddle.DOM.Generated.PannerNode
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.PannerNode
diff --git a/src/Language/Javascript/JSaddle/DOM/Path2D.hs b/src/Language/Javascript/JSaddle/DOM/Path2D.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Path2D.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.Path2D (
+  module Language.Javascript.JSaddle.DOM.Generated.Path2D
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.Path2D
diff --git a/src/Language/Javascript/JSaddle/DOM/Performance.hs b/src/Language/Javascript/JSaddle/DOM/Performance.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Performance.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.Performance (
+  module Language.Javascript.JSaddle.DOM.Generated.Performance
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.Performance
diff --git a/src/Language/Javascript/JSaddle/DOM/PerformanceEntry.hs b/src/Language/Javascript/JSaddle/DOM/PerformanceEntry.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/PerformanceEntry.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.PerformanceEntry (
+  module Language.Javascript.JSaddle.DOM.Generated.PerformanceEntry
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.PerformanceEntry
diff --git a/src/Language/Javascript/JSaddle/DOM/PerformanceEntryList.hs b/src/Language/Javascript/JSaddle/DOM/PerformanceEntryList.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/PerformanceEntryList.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.PerformanceEntryList (
+  module Language.Javascript.JSaddle.DOM.Generated.PerformanceEntryList
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.PerformanceEntryList
diff --git a/src/Language/Javascript/JSaddle/DOM/PerformanceNavigation.hs b/src/Language/Javascript/JSaddle/DOM/PerformanceNavigation.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/PerformanceNavigation.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.PerformanceNavigation (
+  module Language.Javascript.JSaddle.DOM.Generated.PerformanceNavigation
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.PerformanceNavigation
diff --git a/src/Language/Javascript/JSaddle/DOM/PerformanceResourceTiming.hs b/src/Language/Javascript/JSaddle/DOM/PerformanceResourceTiming.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/PerformanceResourceTiming.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.PerformanceResourceTiming (
+  module Language.Javascript.JSaddle.DOM.Generated.PerformanceResourceTiming
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.PerformanceResourceTiming
diff --git a/src/Language/Javascript/JSaddle/DOM/PerformanceTiming.hs b/src/Language/Javascript/JSaddle/DOM/PerformanceTiming.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/PerformanceTiming.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.PerformanceTiming (
+  module Language.Javascript.JSaddle.DOM.Generated.PerformanceTiming
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.PerformanceTiming
diff --git a/src/Language/Javascript/JSaddle/DOM/Plugin.hs b/src/Language/Javascript/JSaddle/DOM/Plugin.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Plugin.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.Plugin (
+  module Language.Javascript.JSaddle.DOM.Generated.Plugin
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.Plugin
diff --git a/src/Language/Javascript/JSaddle/DOM/PluginArray.hs b/src/Language/Javascript/JSaddle/DOM/PluginArray.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/PluginArray.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.PluginArray (
+  module Language.Javascript.JSaddle.DOM.Generated.PluginArray
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.PluginArray
diff --git a/src/Language/Javascript/JSaddle/DOM/PopStateEvent.hs b/src/Language/Javascript/JSaddle/DOM/PopStateEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/PopStateEvent.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.PopStateEvent (
+  module Language.Javascript.JSaddle.DOM.Generated.PopStateEvent
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.PopStateEvent
diff --git a/src/Language/Javascript/JSaddle/DOM/PositionCallback.hs b/src/Language/Javascript/JSaddle/DOM/PositionCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/PositionCallback.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.PositionCallback (
+  module Language.Javascript.JSaddle.DOM.Generated.PositionCallback
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.PositionCallback
diff --git a/src/Language/Javascript/JSaddle/DOM/PositionError.hs b/src/Language/Javascript/JSaddle/DOM/PositionError.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/PositionError.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.PositionError (
+  module Language.Javascript.JSaddle.DOM.Custom.PositionError
+  ) where
+import Language.Javascript.JSaddle.DOM.Custom.PositionError
diff --git a/src/Language/Javascript/JSaddle/DOM/PositionErrorCallback.hs b/src/Language/Javascript/JSaddle/DOM/PositionErrorCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/PositionErrorCallback.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.PositionErrorCallback (
+  module Language.Javascript.JSaddle.DOM.Generated.PositionErrorCallback
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.PositionErrorCallback
diff --git a/src/Language/Javascript/JSaddle/DOM/ProcessingInstruction.hs b/src/Language/Javascript/JSaddle/DOM/ProcessingInstruction.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/ProcessingInstruction.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.ProcessingInstruction (
+  module Language.Javascript.JSaddle.DOM.Generated.ProcessingInstruction
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.ProcessingInstruction
diff --git a/src/Language/Javascript/JSaddle/DOM/ProgressEvent.hs b/src/Language/Javascript/JSaddle/DOM/ProgressEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/ProgressEvent.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.ProgressEvent (
+  module Language.Javascript.JSaddle.DOM.Generated.ProgressEvent
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.ProgressEvent
diff --git a/src/Language/Javascript/JSaddle/DOM/QuickTimePluginReplacement.hs b/src/Language/Javascript/JSaddle/DOM/QuickTimePluginReplacement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/QuickTimePluginReplacement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.QuickTimePluginReplacement (
+  module Language.Javascript.JSaddle.DOM.Generated.QuickTimePluginReplacement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.QuickTimePluginReplacement
diff --git a/src/Language/Javascript/JSaddle/DOM/RGBColor.hs b/src/Language/Javascript/JSaddle/DOM/RGBColor.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/RGBColor.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.RGBColor (
+  module Language.Javascript.JSaddle.DOM.Generated.RGBColor
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.RGBColor
diff --git a/src/Language/Javascript/JSaddle/DOM/RTCConfiguration.hs b/src/Language/Javascript/JSaddle/DOM/RTCConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/RTCConfiguration.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.RTCConfiguration (
+  module Language.Javascript.JSaddle.DOM.Generated.RTCConfiguration
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.RTCConfiguration
diff --git a/src/Language/Javascript/JSaddle/DOM/RTCDTMFSender.hs b/src/Language/Javascript/JSaddle/DOM/RTCDTMFSender.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/RTCDTMFSender.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.RTCDTMFSender (
+  module Language.Javascript.JSaddle.DOM.Generated.RTCDTMFSender
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.RTCDTMFSender
diff --git a/src/Language/Javascript/JSaddle/DOM/RTCDTMFToneChangeEvent.hs b/src/Language/Javascript/JSaddle/DOM/RTCDTMFToneChangeEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/RTCDTMFToneChangeEvent.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.RTCDTMFToneChangeEvent (
+  module Language.Javascript.JSaddle.DOM.Generated.RTCDTMFToneChangeEvent
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.RTCDTMFToneChangeEvent
diff --git a/src/Language/Javascript/JSaddle/DOM/RTCDataChannel.hs b/src/Language/Javascript/JSaddle/DOM/RTCDataChannel.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/RTCDataChannel.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.RTCDataChannel (
+  module Language.Javascript.JSaddle.DOM.Generated.RTCDataChannel
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.RTCDataChannel
diff --git a/src/Language/Javascript/JSaddle/DOM/RTCDataChannelEvent.hs b/src/Language/Javascript/JSaddle/DOM/RTCDataChannelEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/RTCDataChannelEvent.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.RTCDataChannelEvent (
+  module Language.Javascript.JSaddle.DOM.Generated.RTCDataChannelEvent
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.RTCDataChannelEvent
diff --git a/src/Language/Javascript/JSaddle/DOM/RTCIceCandidate.hs b/src/Language/Javascript/JSaddle/DOM/RTCIceCandidate.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/RTCIceCandidate.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.RTCIceCandidate (
+  module Language.Javascript.JSaddle.DOM.Generated.RTCIceCandidate
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.RTCIceCandidate
diff --git a/src/Language/Javascript/JSaddle/DOM/RTCIceCandidateEvent.hs b/src/Language/Javascript/JSaddle/DOM/RTCIceCandidateEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/RTCIceCandidateEvent.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.RTCIceCandidateEvent (
+  module Language.Javascript.JSaddle.DOM.Generated.RTCIceCandidateEvent
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.RTCIceCandidateEvent
diff --git a/src/Language/Javascript/JSaddle/DOM/RTCIceServer.hs b/src/Language/Javascript/JSaddle/DOM/RTCIceServer.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/RTCIceServer.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.RTCIceServer (
+  module Language.Javascript.JSaddle.DOM.Generated.RTCIceServer
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.RTCIceServer
diff --git a/src/Language/Javascript/JSaddle/DOM/RTCPeerConnection.hs b/src/Language/Javascript/JSaddle/DOM/RTCPeerConnection.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/RTCPeerConnection.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.RTCPeerConnection (
+  module Language.Javascript.JSaddle.DOM.Custom.RTCPeerConnection
+  ) where
+import Language.Javascript.JSaddle.DOM.Custom.RTCPeerConnection
diff --git a/src/Language/Javascript/JSaddle/DOM/RTCPeerConnectionErrorCallback.hs b/src/Language/Javascript/JSaddle/DOM/RTCPeerConnectionErrorCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/RTCPeerConnectionErrorCallback.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.RTCPeerConnectionErrorCallback (
+  module Language.Javascript.JSaddle.DOM.Generated.RTCPeerConnectionErrorCallback
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.RTCPeerConnectionErrorCallback
diff --git a/src/Language/Javascript/JSaddle/DOM/RTCSessionDescription.hs b/src/Language/Javascript/JSaddle/DOM/RTCSessionDescription.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/RTCSessionDescription.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.RTCSessionDescription (
+  module Language.Javascript.JSaddle.DOM.Generated.RTCSessionDescription
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.RTCSessionDescription
diff --git a/src/Language/Javascript/JSaddle/DOM/RTCSessionDescriptionCallback.hs b/src/Language/Javascript/JSaddle/DOM/RTCSessionDescriptionCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/RTCSessionDescriptionCallback.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.RTCSessionDescriptionCallback (
+  module Language.Javascript.JSaddle.DOM.Generated.RTCSessionDescriptionCallback
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.RTCSessionDescriptionCallback
diff --git a/src/Language/Javascript/JSaddle/DOM/RTCStatsCallback.hs b/src/Language/Javascript/JSaddle/DOM/RTCStatsCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/RTCStatsCallback.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.RTCStatsCallback (
+  module Language.Javascript.JSaddle.DOM.Generated.RTCStatsCallback
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.RTCStatsCallback
diff --git a/src/Language/Javascript/JSaddle/DOM/RTCStatsReport.hs b/src/Language/Javascript/JSaddle/DOM/RTCStatsReport.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/RTCStatsReport.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.RTCStatsReport (
+  module Language.Javascript.JSaddle.DOM.Generated.RTCStatsReport
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.RTCStatsReport
diff --git a/src/Language/Javascript/JSaddle/DOM/RTCStatsResponse.hs b/src/Language/Javascript/JSaddle/DOM/RTCStatsResponse.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/RTCStatsResponse.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.RTCStatsResponse (
+  module Language.Javascript.JSaddle.DOM.Generated.RTCStatsResponse
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.RTCStatsResponse
diff --git a/src/Language/Javascript/JSaddle/DOM/RadioNodeList.hs b/src/Language/Javascript/JSaddle/DOM/RadioNodeList.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/RadioNodeList.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.RadioNodeList (
+  module Language.Javascript.JSaddle.DOM.Generated.RadioNodeList
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.RadioNodeList
diff --git a/src/Language/Javascript/JSaddle/DOM/Range.hs b/src/Language/Javascript/JSaddle/DOM/Range.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Range.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.Range (
+  module Language.Javascript.JSaddle.DOM.Generated.Range
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.Range
diff --git a/src/Language/Javascript/JSaddle/DOM/ReadableStream.hs b/src/Language/Javascript/JSaddle/DOM/ReadableStream.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/ReadableStream.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.ReadableStream (
+  module Language.Javascript.JSaddle.DOM.Generated.ReadableStream
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.ReadableStream
diff --git a/src/Language/Javascript/JSaddle/DOM/Rect.hs b/src/Language/Javascript/JSaddle/DOM/Rect.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Rect.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.Rect (
+  module Language.Javascript.JSaddle.DOM.Generated.Rect
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.Rect
diff --git a/src/Language/Javascript/JSaddle/DOM/RequestAnimationFrameCallback.hs b/src/Language/Javascript/JSaddle/DOM/RequestAnimationFrameCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/RequestAnimationFrameCallback.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.RequestAnimationFrameCallback (
+  module Language.Javascript.JSaddle.DOM.Generated.RequestAnimationFrameCallback
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.RequestAnimationFrameCallback
diff --git a/src/Language/Javascript/JSaddle/DOM/SQLError.hs b/src/Language/Javascript/JSaddle/DOM/SQLError.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SQLError.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SQLError (
+  module Language.Javascript.JSaddle.DOM.Custom.SQLError
+  ) where
+import Language.Javascript.JSaddle.DOM.Custom.SQLError
diff --git a/src/Language/Javascript/JSaddle/DOM/SQLResultSet.hs b/src/Language/Javascript/JSaddle/DOM/SQLResultSet.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SQLResultSet.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SQLResultSet (
+  module Language.Javascript.JSaddle.DOM.Generated.SQLResultSet
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SQLResultSet
diff --git a/src/Language/Javascript/JSaddle/DOM/SQLResultSetRowList.hs b/src/Language/Javascript/JSaddle/DOM/SQLResultSetRowList.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SQLResultSetRowList.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SQLResultSetRowList (
+  module Language.Javascript.JSaddle.DOM.Generated.SQLResultSetRowList
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SQLResultSetRowList
diff --git a/src/Language/Javascript/JSaddle/DOM/SQLStatementCallback.hs b/src/Language/Javascript/JSaddle/DOM/SQLStatementCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SQLStatementCallback.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SQLStatementCallback (
+  module Language.Javascript.JSaddle.DOM.Generated.SQLStatementCallback
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SQLStatementCallback
diff --git a/src/Language/Javascript/JSaddle/DOM/SQLStatementErrorCallback.hs b/src/Language/Javascript/JSaddle/DOM/SQLStatementErrorCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SQLStatementErrorCallback.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SQLStatementErrorCallback (
+  module Language.Javascript.JSaddle.DOM.Generated.SQLStatementErrorCallback
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SQLStatementErrorCallback
diff --git a/src/Language/Javascript/JSaddle/DOM/SQLTransaction.hs b/src/Language/Javascript/JSaddle/DOM/SQLTransaction.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SQLTransaction.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SQLTransaction (
+  module Language.Javascript.JSaddle.DOM.Custom.SQLTransaction
+  ) where
+import Language.Javascript.JSaddle.DOM.Custom.SQLTransaction
diff --git a/src/Language/Javascript/JSaddle/DOM/SQLTransactionCallback.hs b/src/Language/Javascript/JSaddle/DOM/SQLTransactionCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SQLTransactionCallback.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SQLTransactionCallback (
+  module Language.Javascript.JSaddle.DOM.Generated.SQLTransactionCallback
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SQLTransactionCallback
diff --git a/src/Language/Javascript/JSaddle/DOM/SQLTransactionErrorCallback.hs b/src/Language/Javascript/JSaddle/DOM/SQLTransactionErrorCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SQLTransactionErrorCallback.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SQLTransactionErrorCallback (
+  module Language.Javascript.JSaddle.DOM.Generated.SQLTransactionErrorCallback
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SQLTransactionErrorCallback
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGAElement.hs b/src/Language/Javascript/JSaddle/DOM/SVGAElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGAElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGAElement (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGAElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGAElement
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGAltGlyphElement.hs b/src/Language/Javascript/JSaddle/DOM/SVGAltGlyphElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGAltGlyphElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGAltGlyphElement (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGAltGlyphElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGAltGlyphElement
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGAngle.hs b/src/Language/Javascript/JSaddle/DOM/SVGAngle.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGAngle.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGAngle (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGAngle
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGAngle
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGAnimatedAngle.hs b/src/Language/Javascript/JSaddle/DOM/SVGAnimatedAngle.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGAnimatedAngle.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGAnimatedAngle (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGAnimatedAngle
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGAnimatedAngle
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGAnimatedBoolean.hs b/src/Language/Javascript/JSaddle/DOM/SVGAnimatedBoolean.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGAnimatedBoolean.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGAnimatedBoolean (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGAnimatedBoolean
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGAnimatedBoolean
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGAnimatedEnumeration.hs b/src/Language/Javascript/JSaddle/DOM/SVGAnimatedEnumeration.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGAnimatedEnumeration.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGAnimatedEnumeration (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGAnimatedEnumeration
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGAnimatedEnumeration
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGAnimatedInteger.hs b/src/Language/Javascript/JSaddle/DOM/SVGAnimatedInteger.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGAnimatedInteger.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGAnimatedInteger (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGAnimatedInteger
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGAnimatedInteger
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGAnimatedLength.hs b/src/Language/Javascript/JSaddle/DOM/SVGAnimatedLength.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGAnimatedLength.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGAnimatedLength (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGAnimatedLength
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGAnimatedLength
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGAnimatedLengthList.hs b/src/Language/Javascript/JSaddle/DOM/SVGAnimatedLengthList.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGAnimatedLengthList.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGAnimatedLengthList (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGAnimatedLengthList
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGAnimatedLengthList
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGAnimatedNumber.hs b/src/Language/Javascript/JSaddle/DOM/SVGAnimatedNumber.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGAnimatedNumber.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGAnimatedNumber (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGAnimatedNumber
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGAnimatedNumber
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGAnimatedNumberList.hs b/src/Language/Javascript/JSaddle/DOM/SVGAnimatedNumberList.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGAnimatedNumberList.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGAnimatedNumberList (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGAnimatedNumberList
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGAnimatedNumberList
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGAnimatedPreserveAspectRatio.hs b/src/Language/Javascript/JSaddle/DOM/SVGAnimatedPreserveAspectRatio.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGAnimatedPreserveAspectRatio.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGAnimatedPreserveAspectRatio (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGAnimatedPreserveAspectRatio
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGAnimatedPreserveAspectRatio
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGAnimatedRect.hs b/src/Language/Javascript/JSaddle/DOM/SVGAnimatedRect.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGAnimatedRect.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGAnimatedRect (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGAnimatedRect
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGAnimatedRect
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGAnimatedString.hs b/src/Language/Javascript/JSaddle/DOM/SVGAnimatedString.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGAnimatedString.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGAnimatedString (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGAnimatedString
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGAnimatedString
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGAnimatedTransformList.hs b/src/Language/Javascript/JSaddle/DOM/SVGAnimatedTransformList.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGAnimatedTransformList.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGAnimatedTransformList (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGAnimatedTransformList
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGAnimatedTransformList
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGAnimationElement.hs b/src/Language/Javascript/JSaddle/DOM/SVGAnimationElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGAnimationElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGAnimationElement (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGAnimationElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGAnimationElement
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGCircleElement.hs b/src/Language/Javascript/JSaddle/DOM/SVGCircleElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGCircleElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGCircleElement (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGCircleElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGCircleElement
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGClipPathElement.hs b/src/Language/Javascript/JSaddle/DOM/SVGClipPathElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGClipPathElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGClipPathElement (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGClipPathElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGClipPathElement
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGColor.hs b/src/Language/Javascript/JSaddle/DOM/SVGColor.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGColor.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGColor (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGColor
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGColor
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGComponentTransferFunctionElement.hs b/src/Language/Javascript/JSaddle/DOM/SVGComponentTransferFunctionElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGComponentTransferFunctionElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGComponentTransferFunctionElement (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGComponentTransferFunctionElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGComponentTransferFunctionElement
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGCursorElement.hs b/src/Language/Javascript/JSaddle/DOM/SVGCursorElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGCursorElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGCursorElement (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGCursorElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGCursorElement
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGDocument.hs b/src/Language/Javascript/JSaddle/DOM/SVGDocument.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGDocument.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGDocument (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGDocument
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGDocument
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGElement.hs b/src/Language/Javascript/JSaddle/DOM/SVGElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGElement (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGElement
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGEllipseElement.hs b/src/Language/Javascript/JSaddle/DOM/SVGEllipseElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGEllipseElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGEllipseElement (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGEllipseElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGEllipseElement
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGExternalResourcesRequired.hs b/src/Language/Javascript/JSaddle/DOM/SVGExternalResourcesRequired.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGExternalResourcesRequired.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGExternalResourcesRequired (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGExternalResourcesRequired
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGExternalResourcesRequired
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGFEBlendElement.hs b/src/Language/Javascript/JSaddle/DOM/SVGFEBlendElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGFEBlendElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGFEBlendElement (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGFEBlendElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGFEBlendElement
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGFEColorMatrixElement.hs b/src/Language/Javascript/JSaddle/DOM/SVGFEColorMatrixElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGFEColorMatrixElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGFEColorMatrixElement (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGFEColorMatrixElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGFEColorMatrixElement
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGFEComponentTransferElement.hs b/src/Language/Javascript/JSaddle/DOM/SVGFEComponentTransferElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGFEComponentTransferElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGFEComponentTransferElement (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGFEComponentTransferElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGFEComponentTransferElement
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGFECompositeElement.hs b/src/Language/Javascript/JSaddle/DOM/SVGFECompositeElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGFECompositeElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGFECompositeElement (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGFECompositeElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGFECompositeElement
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGFEConvolveMatrixElement.hs b/src/Language/Javascript/JSaddle/DOM/SVGFEConvolveMatrixElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGFEConvolveMatrixElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGFEConvolveMatrixElement (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGFEConvolveMatrixElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGFEConvolveMatrixElement
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGFEDiffuseLightingElement.hs b/src/Language/Javascript/JSaddle/DOM/SVGFEDiffuseLightingElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGFEDiffuseLightingElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGFEDiffuseLightingElement (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGFEDiffuseLightingElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGFEDiffuseLightingElement
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGFEDisplacementMapElement.hs b/src/Language/Javascript/JSaddle/DOM/SVGFEDisplacementMapElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGFEDisplacementMapElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGFEDisplacementMapElement (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGFEDisplacementMapElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGFEDisplacementMapElement
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGFEDistantLightElement.hs b/src/Language/Javascript/JSaddle/DOM/SVGFEDistantLightElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGFEDistantLightElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGFEDistantLightElement (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGFEDistantLightElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGFEDistantLightElement
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGFEDropShadowElement.hs b/src/Language/Javascript/JSaddle/DOM/SVGFEDropShadowElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGFEDropShadowElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGFEDropShadowElement (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGFEDropShadowElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGFEDropShadowElement
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGFEGaussianBlurElement.hs b/src/Language/Javascript/JSaddle/DOM/SVGFEGaussianBlurElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGFEGaussianBlurElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGFEGaussianBlurElement (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGFEGaussianBlurElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGFEGaussianBlurElement
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGFEImageElement.hs b/src/Language/Javascript/JSaddle/DOM/SVGFEImageElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGFEImageElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGFEImageElement (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGFEImageElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGFEImageElement
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGFEMergeNodeElement.hs b/src/Language/Javascript/JSaddle/DOM/SVGFEMergeNodeElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGFEMergeNodeElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGFEMergeNodeElement (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGFEMergeNodeElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGFEMergeNodeElement
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGFEMorphologyElement.hs b/src/Language/Javascript/JSaddle/DOM/SVGFEMorphologyElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGFEMorphologyElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGFEMorphologyElement (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGFEMorphologyElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGFEMorphologyElement
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGFEOffsetElement.hs b/src/Language/Javascript/JSaddle/DOM/SVGFEOffsetElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGFEOffsetElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGFEOffsetElement (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGFEOffsetElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGFEOffsetElement
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGFEPointLightElement.hs b/src/Language/Javascript/JSaddle/DOM/SVGFEPointLightElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGFEPointLightElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGFEPointLightElement (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGFEPointLightElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGFEPointLightElement
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGFESpecularLightingElement.hs b/src/Language/Javascript/JSaddle/DOM/SVGFESpecularLightingElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGFESpecularLightingElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGFESpecularLightingElement (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGFESpecularLightingElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGFESpecularLightingElement
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGFESpotLightElement.hs b/src/Language/Javascript/JSaddle/DOM/SVGFESpotLightElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGFESpotLightElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGFESpotLightElement (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGFESpotLightElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGFESpotLightElement
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGFETileElement.hs b/src/Language/Javascript/JSaddle/DOM/SVGFETileElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGFETileElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGFETileElement (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGFETileElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGFETileElement
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGFETurbulenceElement.hs b/src/Language/Javascript/JSaddle/DOM/SVGFETurbulenceElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGFETurbulenceElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGFETurbulenceElement (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGFETurbulenceElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGFETurbulenceElement
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGFilterElement.hs b/src/Language/Javascript/JSaddle/DOM/SVGFilterElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGFilterElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGFilterElement (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGFilterElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGFilterElement
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGFilterPrimitiveStandardAttributes.hs b/src/Language/Javascript/JSaddle/DOM/SVGFilterPrimitiveStandardAttributes.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGFilterPrimitiveStandardAttributes.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGFilterPrimitiveStandardAttributes (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGFilterPrimitiveStandardAttributes
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGFilterPrimitiveStandardAttributes
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGFitToViewBox.hs b/src/Language/Javascript/JSaddle/DOM/SVGFitToViewBox.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGFitToViewBox.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGFitToViewBox (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGFitToViewBox
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGFitToViewBox
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGForeignObjectElement.hs b/src/Language/Javascript/JSaddle/DOM/SVGForeignObjectElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGForeignObjectElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGForeignObjectElement (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGForeignObjectElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGForeignObjectElement
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGGlyphRefElement.hs b/src/Language/Javascript/JSaddle/DOM/SVGGlyphRefElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGGlyphRefElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGGlyphRefElement (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGGlyphRefElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGGlyphRefElement
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGGradientElement.hs b/src/Language/Javascript/JSaddle/DOM/SVGGradientElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGGradientElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGGradientElement (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGGradientElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGGradientElement
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGGraphicsElement.hs b/src/Language/Javascript/JSaddle/DOM/SVGGraphicsElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGGraphicsElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGGraphicsElement (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGGraphicsElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGGraphicsElement
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGImageElement.hs b/src/Language/Javascript/JSaddle/DOM/SVGImageElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGImageElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGImageElement (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGImageElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGImageElement
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGLength.hs b/src/Language/Javascript/JSaddle/DOM/SVGLength.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGLength.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGLength (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGLength
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGLength
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGLengthList.hs b/src/Language/Javascript/JSaddle/DOM/SVGLengthList.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGLengthList.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGLengthList (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGLengthList
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGLengthList
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGLineElement.hs b/src/Language/Javascript/JSaddle/DOM/SVGLineElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGLineElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGLineElement (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGLineElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGLineElement
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGLinearGradientElement.hs b/src/Language/Javascript/JSaddle/DOM/SVGLinearGradientElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGLinearGradientElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGLinearGradientElement (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGLinearGradientElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGLinearGradientElement
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGMarkerElement.hs b/src/Language/Javascript/JSaddle/DOM/SVGMarkerElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGMarkerElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGMarkerElement (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGMarkerElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGMarkerElement
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGMaskElement.hs b/src/Language/Javascript/JSaddle/DOM/SVGMaskElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGMaskElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGMaskElement (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGMaskElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGMaskElement
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGMatrix.hs b/src/Language/Javascript/JSaddle/DOM/SVGMatrix.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGMatrix.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGMatrix (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGMatrix
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGMatrix
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGNumber.hs b/src/Language/Javascript/JSaddle/DOM/SVGNumber.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGNumber.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGNumber (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGNumber
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGNumber
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGNumberList.hs b/src/Language/Javascript/JSaddle/DOM/SVGNumberList.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGNumberList.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGNumberList (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGNumberList
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGNumberList
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGPaint.hs b/src/Language/Javascript/JSaddle/DOM/SVGPaint.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGPaint.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGPaint (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGPaint
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGPaint
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGPathElement.hs b/src/Language/Javascript/JSaddle/DOM/SVGPathElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGPathElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGPathElement (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGPathElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGPathElement
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGPathSeg.hs b/src/Language/Javascript/JSaddle/DOM/SVGPathSeg.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGPathSeg.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGPathSeg (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGPathSeg
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGPathSeg
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGPathSegArcAbs.hs b/src/Language/Javascript/JSaddle/DOM/SVGPathSegArcAbs.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGPathSegArcAbs.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGPathSegArcAbs (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGPathSegArcAbs
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGPathSegArcAbs
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGPathSegArcRel.hs b/src/Language/Javascript/JSaddle/DOM/SVGPathSegArcRel.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGPathSegArcRel.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGPathSegArcRel (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGPathSegArcRel
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGPathSegArcRel
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGPathSegCurvetoCubicAbs.hs b/src/Language/Javascript/JSaddle/DOM/SVGPathSegCurvetoCubicAbs.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGPathSegCurvetoCubicAbs.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGPathSegCurvetoCubicAbs (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGPathSegCurvetoCubicAbs
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGPathSegCurvetoCubicAbs
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGPathSegCurvetoCubicRel.hs b/src/Language/Javascript/JSaddle/DOM/SVGPathSegCurvetoCubicRel.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGPathSegCurvetoCubicRel.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGPathSegCurvetoCubicRel (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGPathSegCurvetoCubicRel
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGPathSegCurvetoCubicRel
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGPathSegCurvetoCubicSmoothAbs.hs b/src/Language/Javascript/JSaddle/DOM/SVGPathSegCurvetoCubicSmoothAbs.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGPathSegCurvetoCubicSmoothAbs.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGPathSegCurvetoCubicSmoothAbs (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGPathSegCurvetoCubicSmoothAbs
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGPathSegCurvetoCubicSmoothAbs
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGPathSegCurvetoCubicSmoothRel.hs b/src/Language/Javascript/JSaddle/DOM/SVGPathSegCurvetoCubicSmoothRel.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGPathSegCurvetoCubicSmoothRel.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGPathSegCurvetoCubicSmoothRel (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGPathSegCurvetoCubicSmoothRel
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGPathSegCurvetoCubicSmoothRel
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGPathSegCurvetoQuadraticAbs.hs b/src/Language/Javascript/JSaddle/DOM/SVGPathSegCurvetoQuadraticAbs.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGPathSegCurvetoQuadraticAbs.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGPathSegCurvetoQuadraticAbs (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGPathSegCurvetoQuadraticAbs
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGPathSegCurvetoQuadraticAbs
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGPathSegCurvetoQuadraticRel.hs b/src/Language/Javascript/JSaddle/DOM/SVGPathSegCurvetoQuadraticRel.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGPathSegCurvetoQuadraticRel.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGPathSegCurvetoQuadraticRel (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGPathSegCurvetoQuadraticRel
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGPathSegCurvetoQuadraticRel
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGPathSegCurvetoQuadraticSmoothAbs.hs b/src/Language/Javascript/JSaddle/DOM/SVGPathSegCurvetoQuadraticSmoothAbs.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGPathSegCurvetoQuadraticSmoothAbs.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGPathSegCurvetoQuadraticSmoothAbs (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGPathSegCurvetoQuadraticSmoothAbs
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGPathSegCurvetoQuadraticSmoothAbs
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGPathSegCurvetoQuadraticSmoothRel.hs b/src/Language/Javascript/JSaddle/DOM/SVGPathSegCurvetoQuadraticSmoothRel.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGPathSegCurvetoQuadraticSmoothRel.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGPathSegCurvetoQuadraticSmoothRel (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGPathSegCurvetoQuadraticSmoothRel
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGPathSegCurvetoQuadraticSmoothRel
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGPathSegLinetoAbs.hs b/src/Language/Javascript/JSaddle/DOM/SVGPathSegLinetoAbs.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGPathSegLinetoAbs.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGPathSegLinetoAbs (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGPathSegLinetoAbs
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGPathSegLinetoAbs
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGPathSegLinetoHorizontalAbs.hs b/src/Language/Javascript/JSaddle/DOM/SVGPathSegLinetoHorizontalAbs.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGPathSegLinetoHorizontalAbs.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGPathSegLinetoHorizontalAbs (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGPathSegLinetoHorizontalAbs
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGPathSegLinetoHorizontalAbs
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGPathSegLinetoHorizontalRel.hs b/src/Language/Javascript/JSaddle/DOM/SVGPathSegLinetoHorizontalRel.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGPathSegLinetoHorizontalRel.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGPathSegLinetoHorizontalRel (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGPathSegLinetoHorizontalRel
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGPathSegLinetoHorizontalRel
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGPathSegLinetoRel.hs b/src/Language/Javascript/JSaddle/DOM/SVGPathSegLinetoRel.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGPathSegLinetoRel.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGPathSegLinetoRel (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGPathSegLinetoRel
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGPathSegLinetoRel
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGPathSegLinetoVerticalAbs.hs b/src/Language/Javascript/JSaddle/DOM/SVGPathSegLinetoVerticalAbs.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGPathSegLinetoVerticalAbs.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGPathSegLinetoVerticalAbs (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGPathSegLinetoVerticalAbs
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGPathSegLinetoVerticalAbs
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGPathSegLinetoVerticalRel.hs b/src/Language/Javascript/JSaddle/DOM/SVGPathSegLinetoVerticalRel.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGPathSegLinetoVerticalRel.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGPathSegLinetoVerticalRel (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGPathSegLinetoVerticalRel
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGPathSegLinetoVerticalRel
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGPathSegList.hs b/src/Language/Javascript/JSaddle/DOM/SVGPathSegList.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGPathSegList.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGPathSegList (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGPathSegList
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGPathSegList
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGPathSegMovetoAbs.hs b/src/Language/Javascript/JSaddle/DOM/SVGPathSegMovetoAbs.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGPathSegMovetoAbs.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGPathSegMovetoAbs (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGPathSegMovetoAbs
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGPathSegMovetoAbs
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGPathSegMovetoRel.hs b/src/Language/Javascript/JSaddle/DOM/SVGPathSegMovetoRel.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGPathSegMovetoRel.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGPathSegMovetoRel (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGPathSegMovetoRel
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGPathSegMovetoRel
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGPatternElement.hs b/src/Language/Javascript/JSaddle/DOM/SVGPatternElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGPatternElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGPatternElement (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGPatternElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGPatternElement
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGPoint.hs b/src/Language/Javascript/JSaddle/DOM/SVGPoint.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGPoint.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGPoint (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGPoint
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGPoint
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGPointList.hs b/src/Language/Javascript/JSaddle/DOM/SVGPointList.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGPointList.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGPointList (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGPointList
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGPointList
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGPolygonElement.hs b/src/Language/Javascript/JSaddle/DOM/SVGPolygonElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGPolygonElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGPolygonElement (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGPolygonElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGPolygonElement
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGPolylineElement.hs b/src/Language/Javascript/JSaddle/DOM/SVGPolylineElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGPolylineElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGPolylineElement (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGPolylineElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGPolylineElement
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGPreserveAspectRatio.hs b/src/Language/Javascript/JSaddle/DOM/SVGPreserveAspectRatio.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGPreserveAspectRatio.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGPreserveAspectRatio (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGPreserveAspectRatio
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGPreserveAspectRatio
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGRadialGradientElement.hs b/src/Language/Javascript/JSaddle/DOM/SVGRadialGradientElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGRadialGradientElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGRadialGradientElement (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGRadialGradientElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGRadialGradientElement
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGRect.hs b/src/Language/Javascript/JSaddle/DOM/SVGRect.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGRect.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGRect (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGRect
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGRect
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGRectElement.hs b/src/Language/Javascript/JSaddle/DOM/SVGRectElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGRectElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGRectElement (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGRectElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGRectElement
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGRenderingIntent.hs b/src/Language/Javascript/JSaddle/DOM/SVGRenderingIntent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGRenderingIntent.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGRenderingIntent (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGRenderingIntent
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGRenderingIntent
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGSVGElement.hs b/src/Language/Javascript/JSaddle/DOM/SVGSVGElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGSVGElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGSVGElement (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGSVGElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGSVGElement
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGScriptElement.hs b/src/Language/Javascript/JSaddle/DOM/SVGScriptElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGScriptElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGScriptElement (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGScriptElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGScriptElement
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGStopElement.hs b/src/Language/Javascript/JSaddle/DOM/SVGStopElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGStopElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGStopElement (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGStopElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGStopElement
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGStringList.hs b/src/Language/Javascript/JSaddle/DOM/SVGStringList.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGStringList.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGStringList (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGStringList
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGStringList
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGStyleElement.hs b/src/Language/Javascript/JSaddle/DOM/SVGStyleElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGStyleElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGStyleElement (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGStyleElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGStyleElement
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGTests.hs b/src/Language/Javascript/JSaddle/DOM/SVGTests.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGTests.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGTests (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGTests
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGTests
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGTextContentElement.hs b/src/Language/Javascript/JSaddle/DOM/SVGTextContentElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGTextContentElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGTextContentElement (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGTextContentElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGTextContentElement
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGTextPathElement.hs b/src/Language/Javascript/JSaddle/DOM/SVGTextPathElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGTextPathElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGTextPathElement (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGTextPathElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGTextPathElement
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGTextPositioningElement.hs b/src/Language/Javascript/JSaddle/DOM/SVGTextPositioningElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGTextPositioningElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGTextPositioningElement (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGTextPositioningElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGTextPositioningElement
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGTransform.hs b/src/Language/Javascript/JSaddle/DOM/SVGTransform.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGTransform.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGTransform (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGTransform
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGTransform
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGTransformList.hs b/src/Language/Javascript/JSaddle/DOM/SVGTransformList.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGTransformList.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGTransformList (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGTransformList
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGTransformList
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGURIReference.hs b/src/Language/Javascript/JSaddle/DOM/SVGURIReference.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGURIReference.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGURIReference (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGURIReference
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGURIReference
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGUnitTypes.hs b/src/Language/Javascript/JSaddle/DOM/SVGUnitTypes.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGUnitTypes.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGUnitTypes (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGUnitTypes
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGUnitTypes
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGUseElement.hs b/src/Language/Javascript/JSaddle/DOM/SVGUseElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGUseElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGUseElement (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGUseElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGUseElement
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGViewElement.hs b/src/Language/Javascript/JSaddle/DOM/SVGViewElement.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGViewElement.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGViewElement (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGViewElement
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGViewElement
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGViewSpec.hs b/src/Language/Javascript/JSaddle/DOM/SVGViewSpec.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGViewSpec.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGViewSpec (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGViewSpec
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGViewSpec
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGZoomAndPan.hs b/src/Language/Javascript/JSaddle/DOM/SVGZoomAndPan.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGZoomAndPan.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGZoomAndPan (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGZoomAndPan
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGZoomAndPan
diff --git a/src/Language/Javascript/JSaddle/DOM/SVGZoomEvent.hs b/src/Language/Javascript/JSaddle/DOM/SVGZoomEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SVGZoomEvent.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SVGZoomEvent (
+  module Language.Javascript.JSaddle.DOM.Generated.SVGZoomEvent
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SVGZoomEvent
diff --git a/src/Language/Javascript/JSaddle/DOM/Screen.hs b/src/Language/Javascript/JSaddle/DOM/Screen.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Screen.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.Screen (
+  module Language.Javascript.JSaddle.DOM.Generated.Screen
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.Screen
diff --git a/src/Language/Javascript/JSaddle/DOM/ScriptProcessorNode.hs b/src/Language/Javascript/JSaddle/DOM/ScriptProcessorNode.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/ScriptProcessorNode.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.ScriptProcessorNode (
+  module Language.Javascript.JSaddle.DOM.Generated.ScriptProcessorNode
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.ScriptProcessorNode
diff --git a/src/Language/Javascript/JSaddle/DOM/ScriptProfile.hs b/src/Language/Javascript/JSaddle/DOM/ScriptProfile.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/ScriptProfile.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.ScriptProfile (
+  module Language.Javascript.JSaddle.DOM.Generated.ScriptProfile
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.ScriptProfile
diff --git a/src/Language/Javascript/JSaddle/DOM/ScriptProfileNode.hs b/src/Language/Javascript/JSaddle/DOM/ScriptProfileNode.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/ScriptProfileNode.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.ScriptProfileNode (
+  module Language.Javascript.JSaddle.DOM.Generated.ScriptProfileNode
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.ScriptProfileNode
diff --git a/src/Language/Javascript/JSaddle/DOM/SecurityPolicy.hs b/src/Language/Javascript/JSaddle/DOM/SecurityPolicy.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SecurityPolicy.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SecurityPolicy (
+  module Language.Javascript.JSaddle.DOM.Generated.SecurityPolicy
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SecurityPolicy
diff --git a/src/Language/Javascript/JSaddle/DOM/SecurityPolicyViolationEvent.hs b/src/Language/Javascript/JSaddle/DOM/SecurityPolicyViolationEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SecurityPolicyViolationEvent.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SecurityPolicyViolationEvent (
+  module Language.Javascript.JSaddle.DOM.Generated.SecurityPolicyViolationEvent
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SecurityPolicyViolationEvent
diff --git a/src/Language/Javascript/JSaddle/DOM/Selection.hs b/src/Language/Javascript/JSaddle/DOM/Selection.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Selection.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.Selection (
+  module Language.Javascript.JSaddle.DOM.Generated.Selection
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.Selection
diff --git a/src/Language/Javascript/JSaddle/DOM/SourceBuffer.hs b/src/Language/Javascript/JSaddle/DOM/SourceBuffer.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SourceBuffer.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SourceBuffer (
+  module Language.Javascript.JSaddle.DOM.Generated.SourceBuffer
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SourceBuffer
diff --git a/src/Language/Javascript/JSaddle/DOM/SourceBufferList.hs b/src/Language/Javascript/JSaddle/DOM/SourceBufferList.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SourceBufferList.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SourceBufferList (
+  module Language.Javascript.JSaddle.DOM.Generated.SourceBufferList
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SourceBufferList
diff --git a/src/Language/Javascript/JSaddle/DOM/SourceInfo.hs b/src/Language/Javascript/JSaddle/DOM/SourceInfo.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SourceInfo.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SourceInfo (
+  module Language.Javascript.JSaddle.DOM.Generated.SourceInfo
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SourceInfo
diff --git a/src/Language/Javascript/JSaddle/DOM/SpeechSynthesis.hs b/src/Language/Javascript/JSaddle/DOM/SpeechSynthesis.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SpeechSynthesis.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SpeechSynthesis (
+  module Language.Javascript.JSaddle.DOM.Generated.SpeechSynthesis
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SpeechSynthesis
diff --git a/src/Language/Javascript/JSaddle/DOM/SpeechSynthesisEvent.hs b/src/Language/Javascript/JSaddle/DOM/SpeechSynthesisEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SpeechSynthesisEvent.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SpeechSynthesisEvent (
+  module Language.Javascript.JSaddle.DOM.Generated.SpeechSynthesisEvent
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SpeechSynthesisEvent
diff --git a/src/Language/Javascript/JSaddle/DOM/SpeechSynthesisUtterance.hs b/src/Language/Javascript/JSaddle/DOM/SpeechSynthesisUtterance.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SpeechSynthesisUtterance.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SpeechSynthesisUtterance (
+  module Language.Javascript.JSaddle.DOM.Generated.SpeechSynthesisUtterance
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SpeechSynthesisUtterance
diff --git a/src/Language/Javascript/JSaddle/DOM/SpeechSynthesisVoice.hs b/src/Language/Javascript/JSaddle/DOM/SpeechSynthesisVoice.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SpeechSynthesisVoice.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SpeechSynthesisVoice (
+  module Language.Javascript.JSaddle.DOM.Generated.SpeechSynthesisVoice
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SpeechSynthesisVoice
diff --git a/src/Language/Javascript/JSaddle/DOM/Storage.hs b/src/Language/Javascript/JSaddle/DOM/Storage.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Storage.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.Storage (
+  module Language.Javascript.JSaddle.DOM.Generated.Storage
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.Storage
diff --git a/src/Language/Javascript/JSaddle/DOM/StorageErrorCallback.hs b/src/Language/Javascript/JSaddle/DOM/StorageErrorCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/StorageErrorCallback.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.StorageErrorCallback (
+  module Language.Javascript.JSaddle.DOM.Generated.StorageErrorCallback
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.StorageErrorCallback
diff --git a/src/Language/Javascript/JSaddle/DOM/StorageEvent.hs b/src/Language/Javascript/JSaddle/DOM/StorageEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/StorageEvent.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.StorageEvent (
+  module Language.Javascript.JSaddle.DOM.Generated.StorageEvent
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.StorageEvent
diff --git a/src/Language/Javascript/JSaddle/DOM/StorageInfo.hs b/src/Language/Javascript/JSaddle/DOM/StorageInfo.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/StorageInfo.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.StorageInfo (
+  module Language.Javascript.JSaddle.DOM.Generated.StorageInfo
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.StorageInfo
diff --git a/src/Language/Javascript/JSaddle/DOM/StorageQuota.hs b/src/Language/Javascript/JSaddle/DOM/StorageQuota.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/StorageQuota.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.StorageQuota (
+  module Language.Javascript.JSaddle.DOM.Generated.StorageQuota
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.StorageQuota
diff --git a/src/Language/Javascript/JSaddle/DOM/StorageQuotaCallback.hs b/src/Language/Javascript/JSaddle/DOM/StorageQuotaCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/StorageQuotaCallback.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.StorageQuotaCallback (
+  module Language.Javascript.JSaddle.DOM.Generated.StorageQuotaCallback
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.StorageQuotaCallback
diff --git a/src/Language/Javascript/JSaddle/DOM/StorageUsageCallback.hs b/src/Language/Javascript/JSaddle/DOM/StorageUsageCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/StorageUsageCallback.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.StorageUsageCallback (
+  module Language.Javascript.JSaddle.DOM.Generated.StorageUsageCallback
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.StorageUsageCallback
diff --git a/src/Language/Javascript/JSaddle/DOM/StringCallback.hs b/src/Language/Javascript/JSaddle/DOM/StringCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/StringCallback.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.StringCallback (
+  module Language.Javascript.JSaddle.DOM.Generated.StringCallback
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.StringCallback
diff --git a/src/Language/Javascript/JSaddle/DOM/StyleMedia.hs b/src/Language/Javascript/JSaddle/DOM/StyleMedia.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/StyleMedia.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.StyleMedia (
+  module Language.Javascript.JSaddle.DOM.Generated.StyleMedia
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.StyleMedia
diff --git a/src/Language/Javascript/JSaddle/DOM/StyleSheet.hs b/src/Language/Javascript/JSaddle/DOM/StyleSheet.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/StyleSheet.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.StyleSheet (
+  module Language.Javascript.JSaddle.DOM.Generated.StyleSheet
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.StyleSheet
diff --git a/src/Language/Javascript/JSaddle/DOM/StyleSheetList.hs b/src/Language/Javascript/JSaddle/DOM/StyleSheetList.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/StyleSheetList.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.StyleSheetList (
+  module Language.Javascript.JSaddle.DOM.Generated.StyleSheetList
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.StyleSheetList
diff --git a/src/Language/Javascript/JSaddle/DOM/SubtleCrypto.hs b/src/Language/Javascript/JSaddle/DOM/SubtleCrypto.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/SubtleCrypto.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.SubtleCrypto (
+  module Language.Javascript.JSaddle.DOM.Generated.SubtleCrypto
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.SubtleCrypto
diff --git a/src/Language/Javascript/JSaddle/DOM/Text.hs b/src/Language/Javascript/JSaddle/DOM/Text.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Text.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.Text (
+  module Language.Javascript.JSaddle.DOM.Generated.Text
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.Text
diff --git a/src/Language/Javascript/JSaddle/DOM/TextEvent.hs b/src/Language/Javascript/JSaddle/DOM/TextEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/TextEvent.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.TextEvent (
+  module Language.Javascript.JSaddle.DOM.Generated.TextEvent
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.TextEvent
diff --git a/src/Language/Javascript/JSaddle/DOM/TextMetrics.hs b/src/Language/Javascript/JSaddle/DOM/TextMetrics.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/TextMetrics.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.TextMetrics (
+  module Language.Javascript.JSaddle.DOM.Generated.TextMetrics
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.TextMetrics
diff --git a/src/Language/Javascript/JSaddle/DOM/TextTrack.hs b/src/Language/Javascript/JSaddle/DOM/TextTrack.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/TextTrack.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.TextTrack (
+  module Language.Javascript.JSaddle.DOM.Generated.TextTrack
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.TextTrack
diff --git a/src/Language/Javascript/JSaddle/DOM/TextTrackCue.hs b/src/Language/Javascript/JSaddle/DOM/TextTrackCue.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/TextTrackCue.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.TextTrackCue (
+  module Language.Javascript.JSaddle.DOM.Generated.TextTrackCue
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.TextTrackCue
diff --git a/src/Language/Javascript/JSaddle/DOM/TextTrackCueList.hs b/src/Language/Javascript/JSaddle/DOM/TextTrackCueList.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/TextTrackCueList.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.TextTrackCueList (
+  module Language.Javascript.JSaddle.DOM.Generated.TextTrackCueList
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.TextTrackCueList
diff --git a/src/Language/Javascript/JSaddle/DOM/TextTrackList.hs b/src/Language/Javascript/JSaddle/DOM/TextTrackList.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/TextTrackList.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.TextTrackList (
+  module Language.Javascript.JSaddle.DOM.Generated.TextTrackList
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.TextTrackList
diff --git a/src/Language/Javascript/JSaddle/DOM/TimeRanges.hs b/src/Language/Javascript/JSaddle/DOM/TimeRanges.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/TimeRanges.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.TimeRanges (
+  module Language.Javascript.JSaddle.DOM.Generated.TimeRanges
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.TimeRanges
diff --git a/src/Language/Javascript/JSaddle/DOM/Touch.hs b/src/Language/Javascript/JSaddle/DOM/Touch.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Touch.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.Touch (
+  module Language.Javascript.JSaddle.DOM.Generated.Touch
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.Touch
diff --git a/src/Language/Javascript/JSaddle/DOM/TouchEvent.hs b/src/Language/Javascript/JSaddle/DOM/TouchEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/TouchEvent.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.TouchEvent (
+  module Language.Javascript.JSaddle.DOM.Generated.TouchEvent
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.TouchEvent
diff --git a/src/Language/Javascript/JSaddle/DOM/TouchList.hs b/src/Language/Javascript/JSaddle/DOM/TouchList.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/TouchList.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.TouchList (
+  module Language.Javascript.JSaddle.DOM.Generated.TouchList
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.TouchList
diff --git a/src/Language/Javascript/JSaddle/DOM/TrackEvent.hs b/src/Language/Javascript/JSaddle/DOM/TrackEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/TrackEvent.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.TrackEvent (
+  module Language.Javascript.JSaddle.DOM.Generated.TrackEvent
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.TrackEvent
diff --git a/src/Language/Javascript/JSaddle/DOM/TransitionEvent.hs b/src/Language/Javascript/JSaddle/DOM/TransitionEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/TransitionEvent.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.TransitionEvent (
+  module Language.Javascript.JSaddle.DOM.Generated.TransitionEvent
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.TransitionEvent
diff --git a/src/Language/Javascript/JSaddle/DOM/TreeWalker.hs b/src/Language/Javascript/JSaddle/DOM/TreeWalker.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/TreeWalker.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.TreeWalker (
+  module Language.Javascript.JSaddle.DOM.Generated.TreeWalker
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.TreeWalker
diff --git a/src/Language/Javascript/JSaddle/DOM/TypeConversions.hs b/src/Language/Javascript/JSaddle/DOM/TypeConversions.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/TypeConversions.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.TypeConversions (
+  module Language.Javascript.JSaddle.DOM.Generated.TypeConversions
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.TypeConversions
diff --git a/src/Language/Javascript/JSaddle/DOM/Types.hs b/src/Language/Javascript/JSaddle/DOM/Types.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Types.hs
@@ -0,0 +1,26865 @@
+{-# LANGUAGE FlexibleContexts #-}
+{-# LANGUAGE CPP #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE ConstraintKinds #-}
+{-# LANGUAGE LambdaCase #-}
+module Language.Javascript.JSaddle.DOM.Types (
+  -- * Monad
+    DOM, DOMContext, askDOM, runDOM, MonadDOM(..)
+
+  -- * Object
+  , maybeNullOrUndefined, maybeNullOrUndefined', maybeToNullable
+  , propagateGError, GType(..)
+  , GObject(..), IsGObject, toGObject, castToGObject, gTypeGObject, unsafeCastGObject, isA, objectToString
+  , ToJSVal(..), FromJSVal(..), fromJSArray, fromJSArrayUnchecked
+
+  -- * DOMString
+  , DOMString(..), ToDOMString(..), FromDOMString(..), IsDOMString, ToJSString(..), FromJSString(..)
+  , toMaybeJSString, fromMaybeJSString
+
+  -- * Callbacks
+  , Callback(..)
+  , withCallback
+  , AudioBufferCallback(..)
+  , DatabaseCallback(..)
+  , MediaQueryListListener(..)
+  , MediaStreamTrackSourcesCallback(..)
+  , NavigatorUserMediaErrorCallback(..)
+  , NavigatorUserMediaSuccessCallback(..)
+  , NotificationPermissionCallback(..)
+  , PositionCallback(..)
+  , PositionErrorCallback(..)
+  , RequestAnimationFrameCallback(..)
+  , RTCPeerConnectionErrorCallback(..)
+  , RTCSessionDescriptionCallback(..)
+  , RTCStatsCallback(..)
+  , SQLStatementCallback(..)
+  , SQLStatementErrorCallback(..)
+  , SQLTransactionCallback(..)
+  , SQLTransactionErrorCallback(..)
+  , StorageErrorCallback(..)
+  , StorageQuotaCallback(..)
+  , StorageUsageCallback(..)
+  , StringCallback(..)
+  , VoidCallback(..)
+
+  -- * Dictionaries
+  , Dictionary(Dictionary), unDictionary, IsDictionary, toDictionary
+  , BlobPropertyBag(BlobPropertyBag), unBlobPropertyBag, IsBlobPropertyBag, toBlobPropertyBag
+
+  -- * Mutation Callback
+  , MutationCallback(MutationCallback), unMutationCallback, IsMutationCallback, toMutationCallback
+
+  -- * Promise
+  , Promise(Promise), unPromise, IsPromise, toPromise, castToPromise, gTypePromise
+
+  -- * Date
+  , Date(Date), unDate, IsDate, toDate, castToDate, gTypeDate
+
+  -- * Arrays
+  , Array(Array), unArray, IsArray, toArray, castToArray, gTypeArray
+  , ObjectArray(ObjectArray), unObjectArray, IsObjectArray, toObjectArray
+  , ArrayBuffer(ArrayBuffer), unArrayBuffer, IsArrayBuffer, toArrayBuffer, castToArrayBuffer, gTypeArrayBuffer
+  , ArrayBufferView(ArrayBufferView), unArrayBufferView, IsArrayBufferView, toArrayBufferView
+  , Float32Array(Float32Array), unFloat32Array, IsFloat32Array, toFloat32Array, castToFloat32Array, gTypeFloat32Array
+  , Float64Array(Float64Array), unFloat64Array, IsFloat64Array, toFloat64Array, castToFloat64Array, gTypeFloat64Array
+  , Uint8Array(Uint8Array), unUint8Array, IsUint8Array, toUint8Array, castToUint8Array, gTypeUint8Array
+  , Uint8ClampedArray(Uint8ClampedArray), unUint8ClampedArray, IsUint8ClampedArray, toUint8ClampedArray, castToUint8ClampedArray, gTypeUint8ClampedArray
+  , Uint16Array(Uint16Array), unUint16Array, IsUint16Array, toUint16Array, castToUint16Array, gTypeUint16Array
+  , Uint32Array(Uint32Array), unUint32Array, IsUint32Array, toUint32Array, castToUint32Array, gTypeUint32Array
+  , Int8Array(Int8Array), unInt8Array, IsInt8Array, toInt8Array, castToInt8Array, gTypeInt8Array
+  , Int16Array(Int16Array), unInt16Array, IsInt16Array, toInt16Array, castToInt16Array, gTypeInt16Array
+  , Int32Array(Int32Array), unInt32Array, IsInt32Array, toInt32Array, castToInt32Array, gTypeInt32Array
+
+  -- * Geolocation
+  , SerializedScriptValue(SerializedScriptValue), unSerializedScriptValue, IsSerializedScriptValue, toSerializedScriptValue
+  , PositionOptions(PositionOptions), unPositionOptions, IsPositionOptions, toPositionOptions
+  , Acceleration(Acceleration), unAcceleration, IsAcceleration, toAcceleration
+  , RotationRate(RotationRate), unRotationRate, IsRotationRate, toRotationRate
+
+  -- * Crypto
+  , Algorithm(Algorithm), unAlgorithm, IsAlgorithm, toAlgorithm
+  , CryptoOperationData(CryptoOperationData), unCryptoOperationData, IsCryptoOperationData, toCryptoOperationData
+
+  -- * CanvasStyle (fill & stroke style)
+  , CanvasStyle(CanvasStyle), unCanvasStyle, IsCanvasStyle, toCanvasStyle
+
+  , DOMException(DOMException), unDOMException, IsDOMException, toDOMException
+
+  -- * WebGL typedefs
+  , GLenum(..), GLboolean(..), GLbitfield(..), GLbyte(..), GLshort(..), GLint(..), GLsizei(..)
+  , GLintptr(..), GLsizeiptr(..), GLubyte(..), GLushort(..), GLuint(..), GLfloat(..), GLclampf(..)
+  , GLint64, GLuint64
+
+  -- * Interface types from IDL files
+
+-- AUTO GENERATION STARTS HERE
+  , ANGLEInstancedArrays(ANGLEInstancedArrays), unANGLEInstancedArrays, castToANGLEInstancedArrays, gTypeANGLEInstancedArrays
+  , AbstractView(AbstractView), unAbstractView, castToAbstractView, gTypeAbstractView
+  , AbstractWorker(AbstractWorker), unAbstractWorker, castToAbstractWorker, gTypeAbstractWorker
+  , AllAudioCapabilities(AllAudioCapabilities), unAllAudioCapabilities, castToAllAudioCapabilities, gTypeAllAudioCapabilities
+  , AllVideoCapabilities(AllVideoCapabilities), unAllVideoCapabilities, castToAllVideoCapabilities, gTypeAllVideoCapabilities
+  , AnalyserNode(AnalyserNode), unAnalyserNode, castToAnalyserNode, gTypeAnalyserNode
+  , AnimationEvent(AnimationEvent), unAnimationEvent, castToAnimationEvent, gTypeAnimationEvent
+  , ApplicationCache(ApplicationCache), unApplicationCache, castToApplicationCache, gTypeApplicationCache
+  , Attr(Attr), unAttr, castToAttr, gTypeAttr
+  , AudioBuffer(AudioBuffer), unAudioBuffer, castToAudioBuffer, gTypeAudioBuffer
+  , AudioBufferSourceNode(AudioBufferSourceNode), unAudioBufferSourceNode, castToAudioBufferSourceNode, gTypeAudioBufferSourceNode
+  , AudioContext(AudioContext), unAudioContext, IsAudioContext, toAudioContext, castToAudioContext, gTypeAudioContext
+  , AudioDestinationNode(AudioDestinationNode), unAudioDestinationNode, castToAudioDestinationNode, gTypeAudioDestinationNode
+  , AudioListener(AudioListener), unAudioListener, castToAudioListener, gTypeAudioListener
+  , AudioNode(AudioNode), unAudioNode, IsAudioNode, toAudioNode, castToAudioNode, gTypeAudioNode
+  , AudioParam(AudioParam), unAudioParam, castToAudioParam, gTypeAudioParam
+  , AudioProcessingEvent(AudioProcessingEvent), unAudioProcessingEvent, castToAudioProcessingEvent, gTypeAudioProcessingEvent
+  , AudioStreamTrack(AudioStreamTrack), unAudioStreamTrack, castToAudioStreamTrack, gTypeAudioStreamTrack
+  , AudioTrack(AudioTrack), unAudioTrack, castToAudioTrack, gTypeAudioTrack
+  , AudioTrackList(AudioTrackList), unAudioTrackList, castToAudioTrackList, gTypeAudioTrackList
+  , AutocompleteErrorEvent(AutocompleteErrorEvent), unAutocompleteErrorEvent, castToAutocompleteErrorEvent, gTypeAutocompleteErrorEvent
+  , BarProp(BarProp), unBarProp, castToBarProp, gTypeBarProp
+  , BatteryManager(BatteryManager), unBatteryManager, castToBatteryManager, gTypeBatteryManager
+  , BeforeLoadEvent(BeforeLoadEvent), unBeforeLoadEvent, castToBeforeLoadEvent, gTypeBeforeLoadEvent
+  , BeforeUnloadEvent(BeforeUnloadEvent), unBeforeUnloadEvent, castToBeforeUnloadEvent, gTypeBeforeUnloadEvent
+  , BiquadFilterNode(BiquadFilterNode), unBiquadFilterNode, castToBiquadFilterNode, gTypeBiquadFilterNode
+  , Blob(Blob), unBlob, IsBlob, toBlob, castToBlob, gTypeBlob
+  , CDATASection(CDATASection), unCDATASection, castToCDATASection, gTypeCDATASection
+  , CSS(CSS), unCSS, castToCSS, gTypeCSS
+  , CSSCharsetRule(CSSCharsetRule), unCSSCharsetRule, castToCSSCharsetRule, gTypeCSSCharsetRule
+  , CSSFontFaceLoadEvent(CSSFontFaceLoadEvent), unCSSFontFaceLoadEvent, castToCSSFontFaceLoadEvent, gTypeCSSFontFaceLoadEvent
+  , CSSFontFaceRule(CSSFontFaceRule), unCSSFontFaceRule, castToCSSFontFaceRule, gTypeCSSFontFaceRule
+  , CSSImportRule(CSSImportRule), unCSSImportRule, castToCSSImportRule, gTypeCSSImportRule
+  , CSSKeyframeRule(CSSKeyframeRule), unCSSKeyframeRule, castToCSSKeyframeRule, gTypeCSSKeyframeRule
+  , CSSKeyframesRule(CSSKeyframesRule), unCSSKeyframesRule, castToCSSKeyframesRule, gTypeCSSKeyframesRule
+  , CSSMediaRule(CSSMediaRule), unCSSMediaRule, castToCSSMediaRule, gTypeCSSMediaRule
+  , CSSPageRule(CSSPageRule), unCSSPageRule, castToCSSPageRule, gTypeCSSPageRule
+  , CSSPrimitiveValue(CSSPrimitiveValue), unCSSPrimitiveValue, castToCSSPrimitiveValue, gTypeCSSPrimitiveValue
+  , CSSRule(CSSRule), unCSSRule, IsCSSRule, toCSSRule, castToCSSRule, gTypeCSSRule
+  , CSSRuleList(CSSRuleList), unCSSRuleList, castToCSSRuleList, gTypeCSSRuleList
+  , CSSStyleDeclaration(CSSStyleDeclaration), unCSSStyleDeclaration, castToCSSStyleDeclaration, gTypeCSSStyleDeclaration
+  , CSSStyleRule(CSSStyleRule), unCSSStyleRule, castToCSSStyleRule, gTypeCSSStyleRule
+  , CSSStyleSheet(CSSStyleSheet), unCSSStyleSheet, castToCSSStyleSheet, gTypeCSSStyleSheet
+  , CSSSupportsRule(CSSSupportsRule), unCSSSupportsRule, castToCSSSupportsRule, gTypeCSSSupportsRule
+  , CSSUnknownRule(CSSUnknownRule), unCSSUnknownRule, castToCSSUnknownRule, gTypeCSSUnknownRule
+  , CSSValue(CSSValue), unCSSValue, IsCSSValue, toCSSValue, castToCSSValue, gTypeCSSValue
+  , CSSValueList(CSSValueList), unCSSValueList, IsCSSValueList, toCSSValueList, castToCSSValueList, gTypeCSSValueList
+  , CanvasGradient(CanvasGradient), unCanvasGradient, castToCanvasGradient, gTypeCanvasGradient
+  , CanvasPattern(CanvasPattern), unCanvasPattern, castToCanvasPattern, gTypeCanvasPattern
+  , CanvasProxy(CanvasProxy), unCanvasProxy, castToCanvasProxy, gTypeCanvasProxy
+  , CanvasRenderingContext(CanvasRenderingContext), unCanvasRenderingContext, IsCanvasRenderingContext, toCanvasRenderingContext, castToCanvasRenderingContext, gTypeCanvasRenderingContext
+  , CanvasRenderingContext2D(CanvasRenderingContext2D), unCanvasRenderingContext2D, castToCanvasRenderingContext2D, gTypeCanvasRenderingContext2D
+  , CapabilityRange(CapabilityRange), unCapabilityRange, castToCapabilityRange, gTypeCapabilityRange
+  , ChannelMergerNode(ChannelMergerNode), unChannelMergerNode, castToChannelMergerNode, gTypeChannelMergerNode
+  , ChannelSplitterNode(ChannelSplitterNode), unChannelSplitterNode, castToChannelSplitterNode, gTypeChannelSplitterNode
+  , CharacterData(CharacterData), unCharacterData, IsCharacterData, toCharacterData, castToCharacterData, gTypeCharacterData
+  , ChildNode(ChildNode), unChildNode, castToChildNode, gTypeChildNode
+  , ClientRect(ClientRect), unClientRect, castToClientRect, gTypeClientRect
+  , ClientRectList(ClientRectList), unClientRectList, castToClientRectList, gTypeClientRectList
+  , CloseEvent(CloseEvent), unCloseEvent, castToCloseEvent, gTypeCloseEvent
+  , CommandLineAPIHost(CommandLineAPIHost), unCommandLineAPIHost, castToCommandLineAPIHost, gTypeCommandLineAPIHost
+  , Comment(Comment), unComment, castToComment, gTypeComment
+  , CompositionEvent(CompositionEvent), unCompositionEvent, castToCompositionEvent, gTypeCompositionEvent
+  , ConvolverNode(ConvolverNode), unConvolverNode, castToConvolverNode, gTypeConvolverNode
+  , Coordinates(Coordinates), unCoordinates, castToCoordinates, gTypeCoordinates
+  , Counter(Counter), unCounter, castToCounter, gTypeCounter
+  , Crypto(Crypto), unCrypto, castToCrypto, gTypeCrypto
+  , CryptoKey(CryptoKey), unCryptoKey, castToCryptoKey, gTypeCryptoKey
+  , CryptoKeyPair(CryptoKeyPair), unCryptoKeyPair, castToCryptoKeyPair, gTypeCryptoKeyPair
+  , CustomEvent(CustomEvent), unCustomEvent, castToCustomEvent, gTypeCustomEvent
+  , DOMError(DOMError), unDOMError, IsDOMError, toDOMError, castToDOMError, gTypeDOMError
+  , DOMImplementation(DOMImplementation), unDOMImplementation, castToDOMImplementation, gTypeDOMImplementation
+  , DOMNamedFlowCollection(DOMNamedFlowCollection), unDOMNamedFlowCollection, castToDOMNamedFlowCollection, gTypeDOMNamedFlowCollection
+  , DOMParser(DOMParser), unDOMParser, castToDOMParser, gTypeDOMParser
+  , DOMSettableTokenList(DOMSettableTokenList), unDOMSettableTokenList, castToDOMSettableTokenList, gTypeDOMSettableTokenList
+  , DOMStringList(DOMStringList), unDOMStringList, castToDOMStringList, gTypeDOMStringList
+  , DOMStringMap(DOMStringMap), unDOMStringMap, castToDOMStringMap, gTypeDOMStringMap
+  , DOMTokenList(DOMTokenList), unDOMTokenList, IsDOMTokenList, toDOMTokenList, castToDOMTokenList, gTypeDOMTokenList
+  , DataCue(DataCue), unDataCue, castToDataCue, gTypeDataCue
+  , DataTransfer(DataTransfer), unDataTransfer, castToDataTransfer, gTypeDataTransfer
+  , DataTransferItem(DataTransferItem), unDataTransferItem, castToDataTransferItem, gTypeDataTransferItem
+  , DataTransferItemList(DataTransferItemList), unDataTransferItemList, castToDataTransferItemList, gTypeDataTransferItemList
+  , Database(Database), unDatabase, castToDatabase, gTypeDatabase
+  , DedicatedWorkerGlobalScope(DedicatedWorkerGlobalScope), unDedicatedWorkerGlobalScope, castToDedicatedWorkerGlobalScope, gTypeDedicatedWorkerGlobalScope
+  , DelayNode(DelayNode), unDelayNode, castToDelayNode, gTypeDelayNode
+  , DeviceMotionEvent(DeviceMotionEvent), unDeviceMotionEvent, castToDeviceMotionEvent, gTypeDeviceMotionEvent
+  , DeviceOrientationEvent(DeviceOrientationEvent), unDeviceOrientationEvent, castToDeviceOrientationEvent, gTypeDeviceOrientationEvent
+  , DeviceProximityEvent(DeviceProximityEvent), unDeviceProximityEvent, castToDeviceProximityEvent, gTypeDeviceProximityEvent
+  , Document(Document), unDocument, IsDocument, toDocument, castToDocument, gTypeDocument
+  , DocumentFragment(DocumentFragment), unDocumentFragment, castToDocumentFragment, gTypeDocumentFragment
+  , DocumentType(DocumentType), unDocumentType, castToDocumentType, gTypeDocumentType
+  , DynamicsCompressorNode(DynamicsCompressorNode), unDynamicsCompressorNode, castToDynamicsCompressorNode, gTypeDynamicsCompressorNode
+  , EXTBlendMinMax(EXTBlendMinMax), unEXTBlendMinMax, castToEXTBlendMinMax, gTypeEXTBlendMinMax
+  , EXTFragDepth(EXTFragDepth), unEXTFragDepth, castToEXTFragDepth, gTypeEXTFragDepth
+  , EXTShaderTextureLOD(EXTShaderTextureLOD), unEXTShaderTextureLOD, castToEXTShaderTextureLOD, gTypeEXTShaderTextureLOD
+  , EXTTextureFilterAnisotropic(EXTTextureFilterAnisotropic), unEXTTextureFilterAnisotropic, castToEXTTextureFilterAnisotropic, gTypeEXTTextureFilterAnisotropic
+  , EXTsRGB(EXTsRGB), unEXTsRGB, castToEXTsRGB, gTypeEXTsRGB
+  , Element(Element), unElement, IsElement, toElement, castToElement, gTypeElement
+  , Entity(Entity), unEntity, castToEntity, gTypeEntity
+  , EntityReference(EntityReference), unEntityReference, castToEntityReference, gTypeEntityReference
+  , ErrorEvent(ErrorEvent), unErrorEvent, castToErrorEvent, gTypeErrorEvent
+  , Event(Event), unEvent, IsEvent, toEvent, castToEvent, gTypeEvent
+  , EventListener(EventListener), unEventListener, castToEventListener, gTypeEventListener
+  , EventSource(EventSource), unEventSource, castToEventSource, gTypeEventSource
+  , EventTarget(EventTarget), unEventTarget, IsEventTarget, toEventTarget, castToEventTarget, gTypeEventTarget
+  , File(File), unFile, castToFile, gTypeFile
+  , FileError(FileError), unFileError, castToFileError, gTypeFileError
+  , FileList(FileList), unFileList, castToFileList, gTypeFileList
+  , FileReader(FileReader), unFileReader, castToFileReader, gTypeFileReader
+  , FileReaderSync(FileReaderSync), unFileReaderSync, castToFileReaderSync, gTypeFileReaderSync
+  , FocusEvent(FocusEvent), unFocusEvent, castToFocusEvent, gTypeFocusEvent
+  , FontLoader(FontLoader), unFontLoader, castToFontLoader, gTypeFontLoader
+  , FormData(FormData), unFormData, castToFormData, gTypeFormData
+  , GainNode(GainNode), unGainNode, castToGainNode, gTypeGainNode
+  , Gamepad(Gamepad), unGamepad, castToGamepad, gTypeGamepad
+  , GamepadButton(GamepadButton), unGamepadButton, castToGamepadButton, gTypeGamepadButton
+  , GamepadEvent(GamepadEvent), unGamepadEvent, castToGamepadEvent, gTypeGamepadEvent
+  , Geolocation(Geolocation), unGeolocation, castToGeolocation, gTypeGeolocation
+  , Geoposition(Geoposition), unGeoposition, castToGeoposition, gTypeGeoposition
+  , HTMLAllCollection(HTMLAllCollection), unHTMLAllCollection, castToHTMLAllCollection, gTypeHTMLAllCollection
+  , HTMLAnchorElement(HTMLAnchorElement), unHTMLAnchorElement, castToHTMLAnchorElement, gTypeHTMLAnchorElement
+  , HTMLAppletElement(HTMLAppletElement), unHTMLAppletElement, castToHTMLAppletElement, gTypeHTMLAppletElement
+  , HTMLAreaElement(HTMLAreaElement), unHTMLAreaElement, castToHTMLAreaElement, gTypeHTMLAreaElement
+  , HTMLAudioElement(HTMLAudioElement), unHTMLAudioElement, castToHTMLAudioElement, gTypeHTMLAudioElement
+  , HTMLBRElement(HTMLBRElement), unHTMLBRElement, castToHTMLBRElement, gTypeHTMLBRElement
+  , HTMLBaseElement(HTMLBaseElement), unHTMLBaseElement, castToHTMLBaseElement, gTypeHTMLBaseElement
+  , HTMLBaseFontElement(HTMLBaseFontElement), unHTMLBaseFontElement, castToHTMLBaseFontElement, gTypeHTMLBaseFontElement
+  , HTMLBodyElement(HTMLBodyElement), unHTMLBodyElement, castToHTMLBodyElement, gTypeHTMLBodyElement
+  , HTMLButtonElement(HTMLButtonElement), unHTMLButtonElement, castToHTMLButtonElement, gTypeHTMLButtonElement
+  , HTMLCanvasElement(HTMLCanvasElement), unHTMLCanvasElement, castToHTMLCanvasElement, gTypeHTMLCanvasElement
+  , HTMLCollection(HTMLCollection), unHTMLCollection, IsHTMLCollection, toHTMLCollection, castToHTMLCollection, gTypeHTMLCollection
+  , HTMLDListElement(HTMLDListElement), unHTMLDListElement, castToHTMLDListElement, gTypeHTMLDListElement
+  , HTMLDataListElement(HTMLDataListElement), unHTMLDataListElement, castToHTMLDataListElement, gTypeHTMLDataListElement
+  , HTMLDetailsElement(HTMLDetailsElement), unHTMLDetailsElement, castToHTMLDetailsElement, gTypeHTMLDetailsElement
+  , HTMLDirectoryElement(HTMLDirectoryElement), unHTMLDirectoryElement, castToHTMLDirectoryElement, gTypeHTMLDirectoryElement
+  , HTMLDivElement(HTMLDivElement), unHTMLDivElement, castToHTMLDivElement, gTypeHTMLDivElement
+  , HTMLDocument(HTMLDocument), unHTMLDocument, castToHTMLDocument, gTypeHTMLDocument
+  , HTMLElement(HTMLElement), unHTMLElement, IsHTMLElement, toHTMLElement, castToHTMLElement, gTypeHTMLElement
+  , HTMLEmbedElement(HTMLEmbedElement), unHTMLEmbedElement, castToHTMLEmbedElement, gTypeHTMLEmbedElement
+  , HTMLFieldSetElement(HTMLFieldSetElement), unHTMLFieldSetElement, castToHTMLFieldSetElement, gTypeHTMLFieldSetElement
+  , HTMLFontElement(HTMLFontElement), unHTMLFontElement, castToHTMLFontElement, gTypeHTMLFontElement
+  , HTMLFormControlsCollection(HTMLFormControlsCollection), unHTMLFormControlsCollection, castToHTMLFormControlsCollection, gTypeHTMLFormControlsCollection
+  , HTMLFormElement(HTMLFormElement), unHTMLFormElement, castToHTMLFormElement, gTypeHTMLFormElement
+  , HTMLFrameElement(HTMLFrameElement), unHTMLFrameElement, castToHTMLFrameElement, gTypeHTMLFrameElement
+  , HTMLFrameSetElement(HTMLFrameSetElement), unHTMLFrameSetElement, castToHTMLFrameSetElement, gTypeHTMLFrameSetElement
+  , HTMLHRElement(HTMLHRElement), unHTMLHRElement, castToHTMLHRElement, gTypeHTMLHRElement
+  , HTMLHeadElement(HTMLHeadElement), unHTMLHeadElement, castToHTMLHeadElement, gTypeHTMLHeadElement
+  , HTMLHeadingElement(HTMLHeadingElement), unHTMLHeadingElement, castToHTMLHeadingElement, gTypeHTMLHeadingElement
+  , HTMLHtmlElement(HTMLHtmlElement), unHTMLHtmlElement, castToHTMLHtmlElement, gTypeHTMLHtmlElement
+  , HTMLIFrameElement(HTMLIFrameElement), unHTMLIFrameElement, castToHTMLIFrameElement, gTypeHTMLIFrameElement
+  , HTMLImageElement(HTMLImageElement), unHTMLImageElement, castToHTMLImageElement, gTypeHTMLImageElement
+  , HTMLInputElement(HTMLInputElement), unHTMLInputElement, castToHTMLInputElement, gTypeHTMLInputElement
+  , HTMLKeygenElement(HTMLKeygenElement), unHTMLKeygenElement, castToHTMLKeygenElement, gTypeHTMLKeygenElement
+  , HTMLLIElement(HTMLLIElement), unHTMLLIElement, castToHTMLLIElement, gTypeHTMLLIElement
+  , HTMLLabelElement(HTMLLabelElement), unHTMLLabelElement, castToHTMLLabelElement, gTypeHTMLLabelElement
+  , HTMLLegendElement(HTMLLegendElement), unHTMLLegendElement, castToHTMLLegendElement, gTypeHTMLLegendElement
+  , HTMLLinkElement(HTMLLinkElement), unHTMLLinkElement, castToHTMLLinkElement, gTypeHTMLLinkElement
+  , HTMLMapElement(HTMLMapElement), unHTMLMapElement, castToHTMLMapElement, gTypeHTMLMapElement
+  , HTMLMarqueeElement(HTMLMarqueeElement), unHTMLMarqueeElement, castToHTMLMarqueeElement, gTypeHTMLMarqueeElement
+  , HTMLMediaElement(HTMLMediaElement), unHTMLMediaElement, IsHTMLMediaElement, toHTMLMediaElement, castToHTMLMediaElement, gTypeHTMLMediaElement
+  , HTMLMenuElement(HTMLMenuElement), unHTMLMenuElement, castToHTMLMenuElement, gTypeHTMLMenuElement
+  , HTMLMetaElement(HTMLMetaElement), unHTMLMetaElement, castToHTMLMetaElement, gTypeHTMLMetaElement
+  , HTMLMeterElement(HTMLMeterElement), unHTMLMeterElement, castToHTMLMeterElement, gTypeHTMLMeterElement
+  , HTMLModElement(HTMLModElement), unHTMLModElement, castToHTMLModElement, gTypeHTMLModElement
+  , HTMLOListElement(HTMLOListElement), unHTMLOListElement, castToHTMLOListElement, gTypeHTMLOListElement
+  , HTMLObjectElement(HTMLObjectElement), unHTMLObjectElement, castToHTMLObjectElement, gTypeHTMLObjectElement
+  , HTMLOptGroupElement(HTMLOptGroupElement), unHTMLOptGroupElement, castToHTMLOptGroupElement, gTypeHTMLOptGroupElement
+  , HTMLOptionElement(HTMLOptionElement), unHTMLOptionElement, castToHTMLOptionElement, gTypeHTMLOptionElement
+  , HTMLOptionsCollection(HTMLOptionsCollection), unHTMLOptionsCollection, castToHTMLOptionsCollection, gTypeHTMLOptionsCollection
+  , HTMLOutputElement(HTMLOutputElement), unHTMLOutputElement, castToHTMLOutputElement, gTypeHTMLOutputElement
+  , HTMLParagraphElement(HTMLParagraphElement), unHTMLParagraphElement, castToHTMLParagraphElement, gTypeHTMLParagraphElement
+  , HTMLParamElement(HTMLParamElement), unHTMLParamElement, castToHTMLParamElement, gTypeHTMLParamElement
+  , HTMLPreElement(HTMLPreElement), unHTMLPreElement, castToHTMLPreElement, gTypeHTMLPreElement
+  , HTMLProgressElement(HTMLProgressElement), unHTMLProgressElement, castToHTMLProgressElement, gTypeHTMLProgressElement
+  , HTMLQuoteElement(HTMLQuoteElement), unHTMLQuoteElement, castToHTMLQuoteElement, gTypeHTMLQuoteElement
+  , HTMLScriptElement(HTMLScriptElement), unHTMLScriptElement, castToHTMLScriptElement, gTypeHTMLScriptElement
+  , HTMLSelectElement(HTMLSelectElement), unHTMLSelectElement, castToHTMLSelectElement, gTypeHTMLSelectElement
+  , HTMLSourceElement(HTMLSourceElement), unHTMLSourceElement, castToHTMLSourceElement, gTypeHTMLSourceElement
+  , HTMLSpanElement(HTMLSpanElement), unHTMLSpanElement, castToHTMLSpanElement, gTypeHTMLSpanElement
+  , HTMLStyleElement(HTMLStyleElement), unHTMLStyleElement, castToHTMLStyleElement, gTypeHTMLStyleElement
+  , HTMLTableCaptionElement(HTMLTableCaptionElement), unHTMLTableCaptionElement, castToHTMLTableCaptionElement, gTypeHTMLTableCaptionElement
+  , HTMLTableCellElement(HTMLTableCellElement), unHTMLTableCellElement, castToHTMLTableCellElement, gTypeHTMLTableCellElement
+  , HTMLTableColElement(HTMLTableColElement), unHTMLTableColElement, castToHTMLTableColElement, gTypeHTMLTableColElement
+  , HTMLTableElement(HTMLTableElement), unHTMLTableElement, castToHTMLTableElement, gTypeHTMLTableElement
+  , HTMLTableRowElement(HTMLTableRowElement), unHTMLTableRowElement, castToHTMLTableRowElement, gTypeHTMLTableRowElement
+  , HTMLTableSectionElement(HTMLTableSectionElement), unHTMLTableSectionElement, castToHTMLTableSectionElement, gTypeHTMLTableSectionElement
+  , HTMLTemplateElement(HTMLTemplateElement), unHTMLTemplateElement, castToHTMLTemplateElement, gTypeHTMLTemplateElement
+  , HTMLTextAreaElement(HTMLTextAreaElement), unHTMLTextAreaElement, castToHTMLTextAreaElement, gTypeHTMLTextAreaElement
+  , HTMLTitleElement(HTMLTitleElement), unHTMLTitleElement, castToHTMLTitleElement, gTypeHTMLTitleElement
+  , HTMLTrackElement(HTMLTrackElement), unHTMLTrackElement, castToHTMLTrackElement, gTypeHTMLTrackElement
+  , HTMLUListElement(HTMLUListElement), unHTMLUListElement, castToHTMLUListElement, gTypeHTMLUListElement
+  , HTMLUnknownElement(HTMLUnknownElement), unHTMLUnknownElement, castToHTMLUnknownElement, gTypeHTMLUnknownElement
+  , HTMLVideoElement(HTMLVideoElement), unHTMLVideoElement, castToHTMLVideoElement, gTypeHTMLVideoElement
+  , HashChangeEvent(HashChangeEvent), unHashChangeEvent, castToHashChangeEvent, gTypeHashChangeEvent
+  , History(History), unHistory, castToHistory, gTypeHistory
+  , IDBAny(IDBAny), unIDBAny, castToIDBAny, gTypeIDBAny
+  , IDBCursor(IDBCursor), unIDBCursor, IsIDBCursor, toIDBCursor, castToIDBCursor, gTypeIDBCursor
+  , IDBCursorWithValue(IDBCursorWithValue), unIDBCursorWithValue, castToIDBCursorWithValue, gTypeIDBCursorWithValue
+  , IDBDatabase(IDBDatabase), unIDBDatabase, castToIDBDatabase, gTypeIDBDatabase
+  , IDBFactory(IDBFactory), unIDBFactory, castToIDBFactory, gTypeIDBFactory
+  , IDBIndex(IDBIndex), unIDBIndex, castToIDBIndex, gTypeIDBIndex
+  , IDBKeyRange(IDBKeyRange), unIDBKeyRange, castToIDBKeyRange, gTypeIDBKeyRange
+  , IDBObjectStore(IDBObjectStore), unIDBObjectStore, castToIDBObjectStore, gTypeIDBObjectStore
+  , IDBOpenDBRequest(IDBOpenDBRequest), unIDBOpenDBRequest, castToIDBOpenDBRequest, gTypeIDBOpenDBRequest
+  , IDBRequest(IDBRequest), unIDBRequest, IsIDBRequest, toIDBRequest, castToIDBRequest, gTypeIDBRequest
+  , IDBTransaction(IDBTransaction), unIDBTransaction, castToIDBTransaction, gTypeIDBTransaction
+  , IDBVersionChangeEvent(IDBVersionChangeEvent), unIDBVersionChangeEvent, castToIDBVersionChangeEvent, gTypeIDBVersionChangeEvent
+  , ImageData(ImageData), unImageData, castToImageData, gTypeImageData
+  , InspectorFrontendHost(InspectorFrontendHost), unInspectorFrontendHost, castToInspectorFrontendHost, gTypeInspectorFrontendHost
+  , InternalSettings(InternalSettings), unInternalSettings, castToInternalSettings, gTypeInternalSettings
+  , Internals(Internals), unInternals, castToInternals, gTypeInternals
+  , KeyboardEvent(KeyboardEvent), unKeyboardEvent, castToKeyboardEvent, gTypeKeyboardEvent
+  , Location(Location), unLocation, castToLocation, gTypeLocation
+  , MallocStatistics(MallocStatistics), unMallocStatistics, castToMallocStatistics, gTypeMallocStatistics
+  , MediaController(MediaController), unMediaController, castToMediaController, gTypeMediaController
+  , MediaControlsHost(MediaControlsHost), unMediaControlsHost, castToMediaControlsHost, gTypeMediaControlsHost
+  , MediaElementAudioSourceNode(MediaElementAudioSourceNode), unMediaElementAudioSourceNode, castToMediaElementAudioSourceNode, gTypeMediaElementAudioSourceNode
+  , MediaError(MediaError), unMediaError, castToMediaError, gTypeMediaError
+  , MediaKeyError(MediaKeyError), unMediaKeyError, castToMediaKeyError, gTypeMediaKeyError
+  , MediaKeyEvent(MediaKeyEvent), unMediaKeyEvent, castToMediaKeyEvent, gTypeMediaKeyEvent
+  , MediaKeyMessageEvent(MediaKeyMessageEvent), unMediaKeyMessageEvent, castToMediaKeyMessageEvent, gTypeMediaKeyMessageEvent
+  , MediaKeyNeededEvent(MediaKeyNeededEvent), unMediaKeyNeededEvent, castToMediaKeyNeededEvent, gTypeMediaKeyNeededEvent
+  , MediaKeySession(MediaKeySession), unMediaKeySession, castToMediaKeySession, gTypeMediaKeySession
+  , MediaKeys(MediaKeys), unMediaKeys, castToMediaKeys, gTypeMediaKeys
+  , MediaList(MediaList), unMediaList, castToMediaList, gTypeMediaList
+  , MediaQueryList(MediaQueryList), unMediaQueryList, castToMediaQueryList, gTypeMediaQueryList
+  , MediaSource(MediaSource), unMediaSource, castToMediaSource, gTypeMediaSource
+  , MediaSourceStates(MediaSourceStates), unMediaSourceStates, castToMediaSourceStates, gTypeMediaSourceStates
+  , MediaStream(MediaStream), unMediaStream, castToMediaStream, gTypeMediaStream
+  , MediaStreamAudioDestinationNode(MediaStreamAudioDestinationNode), unMediaStreamAudioDestinationNode, castToMediaStreamAudioDestinationNode, gTypeMediaStreamAudioDestinationNode
+  , MediaStreamAudioSourceNode(MediaStreamAudioSourceNode), unMediaStreamAudioSourceNode, castToMediaStreamAudioSourceNode, gTypeMediaStreamAudioSourceNode
+  , MediaStreamCapabilities(MediaStreamCapabilities), unMediaStreamCapabilities, IsMediaStreamCapabilities, toMediaStreamCapabilities, castToMediaStreamCapabilities, gTypeMediaStreamCapabilities
+  , MediaStreamEvent(MediaStreamEvent), unMediaStreamEvent, castToMediaStreamEvent, gTypeMediaStreamEvent
+  , MediaStreamTrack(MediaStreamTrack), unMediaStreamTrack, IsMediaStreamTrack, toMediaStreamTrack, castToMediaStreamTrack, gTypeMediaStreamTrack
+  , MediaStreamTrackEvent(MediaStreamTrackEvent), unMediaStreamTrackEvent, castToMediaStreamTrackEvent, gTypeMediaStreamTrackEvent
+  , MediaTrackConstraint(MediaTrackConstraint), unMediaTrackConstraint, castToMediaTrackConstraint, gTypeMediaTrackConstraint
+  , MediaTrackConstraintSet(MediaTrackConstraintSet), unMediaTrackConstraintSet, castToMediaTrackConstraintSet, gTypeMediaTrackConstraintSet
+  , MediaTrackConstraints(MediaTrackConstraints), unMediaTrackConstraints, castToMediaTrackConstraints, gTypeMediaTrackConstraints
+  , MemoryInfo(MemoryInfo), unMemoryInfo, castToMemoryInfo, gTypeMemoryInfo
+  , MessageChannel(MessageChannel), unMessageChannel, castToMessageChannel, gTypeMessageChannel
+  , MessageEvent(MessageEvent), unMessageEvent, castToMessageEvent, gTypeMessageEvent
+  , MessagePort(MessagePort), unMessagePort, castToMessagePort, gTypeMessagePort
+  , MimeType(MimeType), unMimeType, castToMimeType, gTypeMimeType
+  , MimeTypeArray(MimeTypeArray), unMimeTypeArray, castToMimeTypeArray, gTypeMimeTypeArray
+  , MouseEvent(MouseEvent), unMouseEvent, IsMouseEvent, toMouseEvent, castToMouseEvent, gTypeMouseEvent
+  , MutationEvent(MutationEvent), unMutationEvent, castToMutationEvent, gTypeMutationEvent
+  , MutationObserver(MutationObserver), unMutationObserver, castToMutationObserver, gTypeMutationObserver
+  , MutationRecord(MutationRecord), unMutationRecord, castToMutationRecord, gTypeMutationRecord
+  , NamedNodeMap(NamedNodeMap), unNamedNodeMap, castToNamedNodeMap, gTypeNamedNodeMap
+  , Navigator(Navigator), unNavigator, castToNavigator, gTypeNavigator
+  , NavigatorUserMediaError(NavigatorUserMediaError), unNavigatorUserMediaError, castToNavigatorUserMediaError, gTypeNavigatorUserMediaError
+  , Node(Node), unNode, IsNode, toNode, castToNode, gTypeNode
+  , NodeFilter(NodeFilter), unNodeFilter, castToNodeFilter, gTypeNodeFilter
+  , NodeIterator(NodeIterator), unNodeIterator, castToNodeIterator, gTypeNodeIterator
+  , NodeList(NodeList), unNodeList, IsNodeList, toNodeList, castToNodeList, gTypeNodeList
+  , Notification(Notification), unNotification, castToNotification, gTypeNotification
+  , NotificationCenter(NotificationCenter), unNotificationCenter, castToNotificationCenter, gTypeNotificationCenter
+  , OESElementIndexUint(OESElementIndexUint), unOESElementIndexUint, castToOESElementIndexUint, gTypeOESElementIndexUint
+  , OESStandardDerivatives(OESStandardDerivatives), unOESStandardDerivatives, castToOESStandardDerivatives, gTypeOESStandardDerivatives
+  , OESTextureFloat(OESTextureFloat), unOESTextureFloat, castToOESTextureFloat, gTypeOESTextureFloat
+  , OESTextureFloatLinear(OESTextureFloatLinear), unOESTextureFloatLinear, castToOESTextureFloatLinear, gTypeOESTextureFloatLinear
+  , OESTextureHalfFloat(OESTextureHalfFloat), unOESTextureHalfFloat, castToOESTextureHalfFloat, gTypeOESTextureHalfFloat
+  , OESTextureHalfFloatLinear(OESTextureHalfFloatLinear), unOESTextureHalfFloatLinear, castToOESTextureHalfFloatLinear, gTypeOESTextureHalfFloatLinear
+  , OESVertexArrayObject(OESVertexArrayObject), unOESVertexArrayObject, castToOESVertexArrayObject, gTypeOESVertexArrayObject
+  , OfflineAudioCompletionEvent(OfflineAudioCompletionEvent), unOfflineAudioCompletionEvent, castToOfflineAudioCompletionEvent, gTypeOfflineAudioCompletionEvent
+  , OfflineAudioContext(OfflineAudioContext), unOfflineAudioContext, castToOfflineAudioContext, gTypeOfflineAudioContext
+  , OscillatorNode(OscillatorNode), unOscillatorNode, castToOscillatorNode, gTypeOscillatorNode
+  , OverflowEvent(OverflowEvent), unOverflowEvent, castToOverflowEvent, gTypeOverflowEvent
+  , PageTransitionEvent(PageTransitionEvent), unPageTransitionEvent, castToPageTransitionEvent, gTypePageTransitionEvent
+  , PannerNode(PannerNode), unPannerNode, castToPannerNode, gTypePannerNode
+  , Path2D(Path2D), unPath2D, castToPath2D, gTypePath2D
+  , Performance(Performance), unPerformance, castToPerformance, gTypePerformance
+  , PerformanceEntry(PerformanceEntry), unPerformanceEntry, IsPerformanceEntry, toPerformanceEntry, castToPerformanceEntry, gTypePerformanceEntry
+  , PerformanceEntryList(PerformanceEntryList), unPerformanceEntryList, castToPerformanceEntryList, gTypePerformanceEntryList
+  , PerformanceMark(PerformanceMark), unPerformanceMark, castToPerformanceMark, gTypePerformanceMark
+  , PerformanceMeasure(PerformanceMeasure), unPerformanceMeasure, castToPerformanceMeasure, gTypePerformanceMeasure
+  , PerformanceNavigation(PerformanceNavigation), unPerformanceNavigation, castToPerformanceNavigation, gTypePerformanceNavigation
+  , PerformanceResourceTiming(PerformanceResourceTiming), unPerformanceResourceTiming, castToPerformanceResourceTiming, gTypePerformanceResourceTiming
+  , PerformanceTiming(PerformanceTiming), unPerformanceTiming, castToPerformanceTiming, gTypePerformanceTiming
+  , PeriodicWave(PeriodicWave), unPeriodicWave, castToPeriodicWave, gTypePeriodicWave
+  , Plugin(Plugin), unPlugin, castToPlugin, gTypePlugin
+  , PluginArray(PluginArray), unPluginArray, castToPluginArray, gTypePluginArray
+  , PopStateEvent(PopStateEvent), unPopStateEvent, castToPopStateEvent, gTypePopStateEvent
+  , PositionError(PositionError), unPositionError, castToPositionError, gTypePositionError
+  , ProcessingInstruction(ProcessingInstruction), unProcessingInstruction, castToProcessingInstruction, gTypeProcessingInstruction
+  , ProgressEvent(ProgressEvent), unProgressEvent, IsProgressEvent, toProgressEvent, castToProgressEvent, gTypeProgressEvent
+  , QuickTimePluginReplacement(QuickTimePluginReplacement), unQuickTimePluginReplacement, castToQuickTimePluginReplacement, gTypeQuickTimePluginReplacement
+  , RGBColor(RGBColor), unRGBColor, castToRGBColor, gTypeRGBColor
+  , RTCConfiguration(RTCConfiguration), unRTCConfiguration, castToRTCConfiguration, gTypeRTCConfiguration
+  , RTCDTMFSender(RTCDTMFSender), unRTCDTMFSender, castToRTCDTMFSender, gTypeRTCDTMFSender
+  , RTCDTMFToneChangeEvent(RTCDTMFToneChangeEvent), unRTCDTMFToneChangeEvent, castToRTCDTMFToneChangeEvent, gTypeRTCDTMFToneChangeEvent
+  , RTCDataChannel(RTCDataChannel), unRTCDataChannel, castToRTCDataChannel, gTypeRTCDataChannel
+  , RTCDataChannelEvent(RTCDataChannelEvent), unRTCDataChannelEvent, castToRTCDataChannelEvent, gTypeRTCDataChannelEvent
+  , RTCIceCandidate(RTCIceCandidate), unRTCIceCandidate, castToRTCIceCandidate, gTypeRTCIceCandidate
+  , RTCIceCandidateEvent(RTCIceCandidateEvent), unRTCIceCandidateEvent, castToRTCIceCandidateEvent, gTypeRTCIceCandidateEvent
+  , RTCIceServer(RTCIceServer), unRTCIceServer, castToRTCIceServer, gTypeRTCIceServer
+  , RTCPeerConnection(RTCPeerConnection), unRTCPeerConnection, castToRTCPeerConnection, gTypeRTCPeerConnection
+  , RTCSessionDescription(RTCSessionDescription), unRTCSessionDescription, castToRTCSessionDescription, gTypeRTCSessionDescription
+  , RTCStatsReport(RTCStatsReport), unRTCStatsReport, castToRTCStatsReport, gTypeRTCStatsReport
+  , RTCStatsResponse(RTCStatsResponse), unRTCStatsResponse, castToRTCStatsResponse, gTypeRTCStatsResponse
+  , RadioNodeList(RadioNodeList), unRadioNodeList, castToRadioNodeList, gTypeRadioNodeList
+  , Range(Range), unRange, castToRange, gTypeRange
+  , ReadableStream(ReadableStream), unReadableStream, castToReadableStream, gTypeReadableStream
+  , Rect(Rect), unRect, castToRect, gTypeRect
+  , SQLError(SQLError), unSQLError, castToSQLError, gTypeSQLError
+  , SQLResultSet(SQLResultSet), unSQLResultSet, castToSQLResultSet, gTypeSQLResultSet
+  , SQLResultSetRowList(SQLResultSetRowList), unSQLResultSetRowList, castToSQLResultSetRowList, gTypeSQLResultSetRowList
+  , SQLTransaction(SQLTransaction), unSQLTransaction, castToSQLTransaction, gTypeSQLTransaction
+  , SVGAElement(SVGAElement), unSVGAElement, castToSVGAElement, gTypeSVGAElement
+  , SVGAltGlyphDefElement(SVGAltGlyphDefElement), unSVGAltGlyphDefElement, castToSVGAltGlyphDefElement, gTypeSVGAltGlyphDefElement
+  , SVGAltGlyphElement(SVGAltGlyphElement), unSVGAltGlyphElement, castToSVGAltGlyphElement, gTypeSVGAltGlyphElement
+  , SVGAltGlyphItemElement(SVGAltGlyphItemElement), unSVGAltGlyphItemElement, castToSVGAltGlyphItemElement, gTypeSVGAltGlyphItemElement
+  , SVGAngle(SVGAngle), unSVGAngle, castToSVGAngle, gTypeSVGAngle
+  , SVGAnimateColorElement(SVGAnimateColorElement), unSVGAnimateColorElement, castToSVGAnimateColorElement, gTypeSVGAnimateColorElement
+  , SVGAnimateElement(SVGAnimateElement), unSVGAnimateElement, castToSVGAnimateElement, gTypeSVGAnimateElement
+  , SVGAnimateMotionElement(SVGAnimateMotionElement), unSVGAnimateMotionElement, castToSVGAnimateMotionElement, gTypeSVGAnimateMotionElement
+  , SVGAnimateTransformElement(SVGAnimateTransformElement), unSVGAnimateTransformElement, castToSVGAnimateTransformElement, gTypeSVGAnimateTransformElement
+  , SVGAnimatedAngle(SVGAnimatedAngle), unSVGAnimatedAngle, castToSVGAnimatedAngle, gTypeSVGAnimatedAngle
+  , SVGAnimatedBoolean(SVGAnimatedBoolean), unSVGAnimatedBoolean, castToSVGAnimatedBoolean, gTypeSVGAnimatedBoolean
+  , SVGAnimatedEnumeration(SVGAnimatedEnumeration), unSVGAnimatedEnumeration, castToSVGAnimatedEnumeration, gTypeSVGAnimatedEnumeration
+  , SVGAnimatedInteger(SVGAnimatedInteger), unSVGAnimatedInteger, castToSVGAnimatedInteger, gTypeSVGAnimatedInteger
+  , SVGAnimatedLength(SVGAnimatedLength), unSVGAnimatedLength, castToSVGAnimatedLength, gTypeSVGAnimatedLength
+  , SVGAnimatedLengthList(SVGAnimatedLengthList), unSVGAnimatedLengthList, castToSVGAnimatedLengthList, gTypeSVGAnimatedLengthList
+  , SVGAnimatedNumber(SVGAnimatedNumber), unSVGAnimatedNumber, castToSVGAnimatedNumber, gTypeSVGAnimatedNumber
+  , SVGAnimatedNumberList(SVGAnimatedNumberList), unSVGAnimatedNumberList, castToSVGAnimatedNumberList, gTypeSVGAnimatedNumberList
+  , SVGAnimatedPreserveAspectRatio(SVGAnimatedPreserveAspectRatio), unSVGAnimatedPreserveAspectRatio, castToSVGAnimatedPreserveAspectRatio, gTypeSVGAnimatedPreserveAspectRatio
+  , SVGAnimatedRect(SVGAnimatedRect), unSVGAnimatedRect, castToSVGAnimatedRect, gTypeSVGAnimatedRect
+  , SVGAnimatedString(SVGAnimatedString), unSVGAnimatedString, castToSVGAnimatedString, gTypeSVGAnimatedString
+  , SVGAnimatedTransformList(SVGAnimatedTransformList), unSVGAnimatedTransformList, castToSVGAnimatedTransformList, gTypeSVGAnimatedTransformList
+  , SVGAnimationElement(SVGAnimationElement), unSVGAnimationElement, IsSVGAnimationElement, toSVGAnimationElement, castToSVGAnimationElement, gTypeSVGAnimationElement
+  , SVGCircleElement(SVGCircleElement), unSVGCircleElement, castToSVGCircleElement, gTypeSVGCircleElement
+  , SVGClipPathElement(SVGClipPathElement), unSVGClipPathElement, castToSVGClipPathElement, gTypeSVGClipPathElement
+  , SVGColor(SVGColor), unSVGColor, IsSVGColor, toSVGColor, castToSVGColor, gTypeSVGColor
+  , SVGComponentTransferFunctionElement(SVGComponentTransferFunctionElement), unSVGComponentTransferFunctionElement, IsSVGComponentTransferFunctionElement, toSVGComponentTransferFunctionElement, castToSVGComponentTransferFunctionElement, gTypeSVGComponentTransferFunctionElement
+  , SVGCursorElement(SVGCursorElement), unSVGCursorElement, castToSVGCursorElement, gTypeSVGCursorElement
+  , SVGDefsElement(SVGDefsElement), unSVGDefsElement, castToSVGDefsElement, gTypeSVGDefsElement
+  , SVGDescElement(SVGDescElement), unSVGDescElement, castToSVGDescElement, gTypeSVGDescElement
+  , SVGDocument(SVGDocument), unSVGDocument, castToSVGDocument, gTypeSVGDocument
+  , SVGElement(SVGElement), unSVGElement, IsSVGElement, toSVGElement, castToSVGElement, gTypeSVGElement
+  , SVGEllipseElement(SVGEllipseElement), unSVGEllipseElement, castToSVGEllipseElement, gTypeSVGEllipseElement
+  , SVGExternalResourcesRequired(SVGExternalResourcesRequired), unSVGExternalResourcesRequired, castToSVGExternalResourcesRequired, gTypeSVGExternalResourcesRequired
+  , SVGFEBlendElement(SVGFEBlendElement), unSVGFEBlendElement, castToSVGFEBlendElement, gTypeSVGFEBlendElement
+  , SVGFEColorMatrixElement(SVGFEColorMatrixElement), unSVGFEColorMatrixElement, castToSVGFEColorMatrixElement, gTypeSVGFEColorMatrixElement
+  , SVGFEComponentTransferElement(SVGFEComponentTransferElement), unSVGFEComponentTransferElement, castToSVGFEComponentTransferElement, gTypeSVGFEComponentTransferElement
+  , SVGFECompositeElement(SVGFECompositeElement), unSVGFECompositeElement, castToSVGFECompositeElement, gTypeSVGFECompositeElement
+  , SVGFEConvolveMatrixElement(SVGFEConvolveMatrixElement), unSVGFEConvolveMatrixElement, castToSVGFEConvolveMatrixElement, gTypeSVGFEConvolveMatrixElement
+  , SVGFEDiffuseLightingElement(SVGFEDiffuseLightingElement), unSVGFEDiffuseLightingElement, castToSVGFEDiffuseLightingElement, gTypeSVGFEDiffuseLightingElement
+  , SVGFEDisplacementMapElement(SVGFEDisplacementMapElement), unSVGFEDisplacementMapElement, castToSVGFEDisplacementMapElement, gTypeSVGFEDisplacementMapElement
+  , SVGFEDistantLightElement(SVGFEDistantLightElement), unSVGFEDistantLightElement, castToSVGFEDistantLightElement, gTypeSVGFEDistantLightElement
+  , SVGFEDropShadowElement(SVGFEDropShadowElement), unSVGFEDropShadowElement, castToSVGFEDropShadowElement, gTypeSVGFEDropShadowElement
+  , SVGFEFloodElement(SVGFEFloodElement), unSVGFEFloodElement, castToSVGFEFloodElement, gTypeSVGFEFloodElement
+  , SVGFEFuncAElement(SVGFEFuncAElement), unSVGFEFuncAElement, castToSVGFEFuncAElement, gTypeSVGFEFuncAElement
+  , SVGFEFuncBElement(SVGFEFuncBElement), unSVGFEFuncBElement, castToSVGFEFuncBElement, gTypeSVGFEFuncBElement
+  , SVGFEFuncGElement(SVGFEFuncGElement), unSVGFEFuncGElement, castToSVGFEFuncGElement, gTypeSVGFEFuncGElement
+  , SVGFEFuncRElement(SVGFEFuncRElement), unSVGFEFuncRElement, castToSVGFEFuncRElement, gTypeSVGFEFuncRElement
+  , SVGFEGaussianBlurElement(SVGFEGaussianBlurElement), unSVGFEGaussianBlurElement, castToSVGFEGaussianBlurElement, gTypeSVGFEGaussianBlurElement
+  , SVGFEImageElement(SVGFEImageElement), unSVGFEImageElement, castToSVGFEImageElement, gTypeSVGFEImageElement
+  , SVGFEMergeElement(SVGFEMergeElement), unSVGFEMergeElement, castToSVGFEMergeElement, gTypeSVGFEMergeElement
+  , SVGFEMergeNodeElement(SVGFEMergeNodeElement), unSVGFEMergeNodeElement, castToSVGFEMergeNodeElement, gTypeSVGFEMergeNodeElement
+  , SVGFEMorphologyElement(SVGFEMorphologyElement), unSVGFEMorphologyElement, castToSVGFEMorphologyElement, gTypeSVGFEMorphologyElement
+  , SVGFEOffsetElement(SVGFEOffsetElement), unSVGFEOffsetElement, castToSVGFEOffsetElement, gTypeSVGFEOffsetElement
+  , SVGFEPointLightElement(SVGFEPointLightElement), unSVGFEPointLightElement, castToSVGFEPointLightElement, gTypeSVGFEPointLightElement
+  , SVGFESpecularLightingElement(SVGFESpecularLightingElement), unSVGFESpecularLightingElement, castToSVGFESpecularLightingElement, gTypeSVGFESpecularLightingElement
+  , SVGFESpotLightElement(SVGFESpotLightElement), unSVGFESpotLightElement, castToSVGFESpotLightElement, gTypeSVGFESpotLightElement
+  , SVGFETileElement(SVGFETileElement), unSVGFETileElement, castToSVGFETileElement, gTypeSVGFETileElement
+  , SVGFETurbulenceElement(SVGFETurbulenceElement), unSVGFETurbulenceElement, castToSVGFETurbulenceElement, gTypeSVGFETurbulenceElement
+  , SVGFilterElement(SVGFilterElement), unSVGFilterElement, castToSVGFilterElement, gTypeSVGFilterElement
+  , SVGFilterPrimitiveStandardAttributes(SVGFilterPrimitiveStandardAttributes), unSVGFilterPrimitiveStandardAttributes, castToSVGFilterPrimitiveStandardAttributes, gTypeSVGFilterPrimitiveStandardAttributes
+  , SVGFitToViewBox(SVGFitToViewBox), unSVGFitToViewBox, castToSVGFitToViewBox, gTypeSVGFitToViewBox
+  , SVGFontElement(SVGFontElement), unSVGFontElement, castToSVGFontElement, gTypeSVGFontElement
+  , SVGFontFaceElement(SVGFontFaceElement), unSVGFontFaceElement, castToSVGFontFaceElement, gTypeSVGFontFaceElement
+  , SVGFontFaceFormatElement(SVGFontFaceFormatElement), unSVGFontFaceFormatElement, castToSVGFontFaceFormatElement, gTypeSVGFontFaceFormatElement
+  , SVGFontFaceNameElement(SVGFontFaceNameElement), unSVGFontFaceNameElement, castToSVGFontFaceNameElement, gTypeSVGFontFaceNameElement
+  , SVGFontFaceSrcElement(SVGFontFaceSrcElement), unSVGFontFaceSrcElement, castToSVGFontFaceSrcElement, gTypeSVGFontFaceSrcElement
+  , SVGFontFaceUriElement(SVGFontFaceUriElement), unSVGFontFaceUriElement, castToSVGFontFaceUriElement, gTypeSVGFontFaceUriElement
+  , SVGForeignObjectElement(SVGForeignObjectElement), unSVGForeignObjectElement, castToSVGForeignObjectElement, gTypeSVGForeignObjectElement
+  , SVGGElement(SVGGElement), unSVGGElement, castToSVGGElement, gTypeSVGGElement
+  , SVGGlyphElement(SVGGlyphElement), unSVGGlyphElement, castToSVGGlyphElement, gTypeSVGGlyphElement
+  , SVGGlyphRefElement(SVGGlyphRefElement), unSVGGlyphRefElement, castToSVGGlyphRefElement, gTypeSVGGlyphRefElement
+  , SVGGradientElement(SVGGradientElement), unSVGGradientElement, IsSVGGradientElement, toSVGGradientElement, castToSVGGradientElement, gTypeSVGGradientElement
+  , SVGGraphicsElement(SVGGraphicsElement), unSVGGraphicsElement, IsSVGGraphicsElement, toSVGGraphicsElement, castToSVGGraphicsElement, gTypeSVGGraphicsElement
+  , SVGHKernElement(SVGHKernElement), unSVGHKernElement, castToSVGHKernElement, gTypeSVGHKernElement
+  , SVGImageElement(SVGImageElement), unSVGImageElement, castToSVGImageElement, gTypeSVGImageElement
+  , SVGLength(SVGLength), unSVGLength, castToSVGLength, gTypeSVGLength
+  , SVGLengthList(SVGLengthList), unSVGLengthList, castToSVGLengthList, gTypeSVGLengthList
+  , SVGLineElement(SVGLineElement), unSVGLineElement, castToSVGLineElement, gTypeSVGLineElement
+  , SVGLinearGradientElement(SVGLinearGradientElement), unSVGLinearGradientElement, castToSVGLinearGradientElement, gTypeSVGLinearGradientElement
+  , SVGMPathElement(SVGMPathElement), unSVGMPathElement, castToSVGMPathElement, gTypeSVGMPathElement
+  , SVGMarkerElement(SVGMarkerElement), unSVGMarkerElement, castToSVGMarkerElement, gTypeSVGMarkerElement
+  , SVGMaskElement(SVGMaskElement), unSVGMaskElement, castToSVGMaskElement, gTypeSVGMaskElement
+  , SVGMatrix(SVGMatrix), unSVGMatrix, castToSVGMatrix, gTypeSVGMatrix
+  , SVGMetadataElement(SVGMetadataElement), unSVGMetadataElement, castToSVGMetadataElement, gTypeSVGMetadataElement
+  , SVGMissingGlyphElement(SVGMissingGlyphElement), unSVGMissingGlyphElement, castToSVGMissingGlyphElement, gTypeSVGMissingGlyphElement
+  , SVGNumber(SVGNumber), unSVGNumber, castToSVGNumber, gTypeSVGNumber
+  , SVGNumberList(SVGNumberList), unSVGNumberList, castToSVGNumberList, gTypeSVGNumberList
+  , SVGPaint(SVGPaint), unSVGPaint, castToSVGPaint, gTypeSVGPaint
+  , SVGPathElement(SVGPathElement), unSVGPathElement, castToSVGPathElement, gTypeSVGPathElement
+  , SVGPathSeg(SVGPathSeg), unSVGPathSeg, IsSVGPathSeg, toSVGPathSeg, castToSVGPathSeg, gTypeSVGPathSeg
+  , SVGPathSegArcAbs(SVGPathSegArcAbs), unSVGPathSegArcAbs, castToSVGPathSegArcAbs, gTypeSVGPathSegArcAbs
+  , SVGPathSegArcRel(SVGPathSegArcRel), unSVGPathSegArcRel, castToSVGPathSegArcRel, gTypeSVGPathSegArcRel
+  , SVGPathSegClosePath(SVGPathSegClosePath), unSVGPathSegClosePath, castToSVGPathSegClosePath, gTypeSVGPathSegClosePath
+  , SVGPathSegCurvetoCubicAbs(SVGPathSegCurvetoCubicAbs), unSVGPathSegCurvetoCubicAbs, castToSVGPathSegCurvetoCubicAbs, gTypeSVGPathSegCurvetoCubicAbs
+  , SVGPathSegCurvetoCubicRel(SVGPathSegCurvetoCubicRel), unSVGPathSegCurvetoCubicRel, castToSVGPathSegCurvetoCubicRel, gTypeSVGPathSegCurvetoCubicRel
+  , SVGPathSegCurvetoCubicSmoothAbs(SVGPathSegCurvetoCubicSmoothAbs), unSVGPathSegCurvetoCubicSmoothAbs, castToSVGPathSegCurvetoCubicSmoothAbs, gTypeSVGPathSegCurvetoCubicSmoothAbs
+  , SVGPathSegCurvetoCubicSmoothRel(SVGPathSegCurvetoCubicSmoothRel), unSVGPathSegCurvetoCubicSmoothRel, castToSVGPathSegCurvetoCubicSmoothRel, gTypeSVGPathSegCurvetoCubicSmoothRel
+  , SVGPathSegCurvetoQuadraticAbs(SVGPathSegCurvetoQuadraticAbs), unSVGPathSegCurvetoQuadraticAbs, castToSVGPathSegCurvetoQuadraticAbs, gTypeSVGPathSegCurvetoQuadraticAbs
+  , SVGPathSegCurvetoQuadraticRel(SVGPathSegCurvetoQuadraticRel), unSVGPathSegCurvetoQuadraticRel, castToSVGPathSegCurvetoQuadraticRel, gTypeSVGPathSegCurvetoQuadraticRel
+  , SVGPathSegCurvetoQuadraticSmoothAbs(SVGPathSegCurvetoQuadraticSmoothAbs), unSVGPathSegCurvetoQuadraticSmoothAbs, castToSVGPathSegCurvetoQuadraticSmoothAbs, gTypeSVGPathSegCurvetoQuadraticSmoothAbs
+  , SVGPathSegCurvetoQuadraticSmoothRel(SVGPathSegCurvetoQuadraticSmoothRel), unSVGPathSegCurvetoQuadraticSmoothRel, castToSVGPathSegCurvetoQuadraticSmoothRel, gTypeSVGPathSegCurvetoQuadraticSmoothRel
+  , SVGPathSegLinetoAbs(SVGPathSegLinetoAbs), unSVGPathSegLinetoAbs, castToSVGPathSegLinetoAbs, gTypeSVGPathSegLinetoAbs
+  , SVGPathSegLinetoHorizontalAbs(SVGPathSegLinetoHorizontalAbs), unSVGPathSegLinetoHorizontalAbs, castToSVGPathSegLinetoHorizontalAbs, gTypeSVGPathSegLinetoHorizontalAbs
+  , SVGPathSegLinetoHorizontalRel(SVGPathSegLinetoHorizontalRel), unSVGPathSegLinetoHorizontalRel, castToSVGPathSegLinetoHorizontalRel, gTypeSVGPathSegLinetoHorizontalRel
+  , SVGPathSegLinetoRel(SVGPathSegLinetoRel), unSVGPathSegLinetoRel, castToSVGPathSegLinetoRel, gTypeSVGPathSegLinetoRel
+  , SVGPathSegLinetoVerticalAbs(SVGPathSegLinetoVerticalAbs), unSVGPathSegLinetoVerticalAbs, castToSVGPathSegLinetoVerticalAbs, gTypeSVGPathSegLinetoVerticalAbs
+  , SVGPathSegLinetoVerticalRel(SVGPathSegLinetoVerticalRel), unSVGPathSegLinetoVerticalRel, castToSVGPathSegLinetoVerticalRel, gTypeSVGPathSegLinetoVerticalRel
+  , SVGPathSegList(SVGPathSegList), unSVGPathSegList, castToSVGPathSegList, gTypeSVGPathSegList
+  , SVGPathSegMovetoAbs(SVGPathSegMovetoAbs), unSVGPathSegMovetoAbs, castToSVGPathSegMovetoAbs, gTypeSVGPathSegMovetoAbs
+  , SVGPathSegMovetoRel(SVGPathSegMovetoRel), unSVGPathSegMovetoRel, castToSVGPathSegMovetoRel, gTypeSVGPathSegMovetoRel
+  , SVGPatternElement(SVGPatternElement), unSVGPatternElement, castToSVGPatternElement, gTypeSVGPatternElement
+  , SVGPoint(SVGPoint), unSVGPoint, castToSVGPoint, gTypeSVGPoint
+  , SVGPointList(SVGPointList), unSVGPointList, castToSVGPointList, gTypeSVGPointList
+  , SVGPolygonElement(SVGPolygonElement), unSVGPolygonElement, castToSVGPolygonElement, gTypeSVGPolygonElement
+  , SVGPolylineElement(SVGPolylineElement), unSVGPolylineElement, castToSVGPolylineElement, gTypeSVGPolylineElement
+  , SVGPreserveAspectRatio(SVGPreserveAspectRatio), unSVGPreserveAspectRatio, castToSVGPreserveAspectRatio, gTypeSVGPreserveAspectRatio
+  , SVGRadialGradientElement(SVGRadialGradientElement), unSVGRadialGradientElement, castToSVGRadialGradientElement, gTypeSVGRadialGradientElement
+  , SVGRect(SVGRect), unSVGRect, castToSVGRect, gTypeSVGRect
+  , SVGRectElement(SVGRectElement), unSVGRectElement, castToSVGRectElement, gTypeSVGRectElement
+  , SVGRenderingIntent(SVGRenderingIntent), unSVGRenderingIntent, castToSVGRenderingIntent, gTypeSVGRenderingIntent
+  , SVGSVGElement(SVGSVGElement), unSVGSVGElement, castToSVGSVGElement, gTypeSVGSVGElement
+  , SVGScriptElement(SVGScriptElement), unSVGScriptElement, castToSVGScriptElement, gTypeSVGScriptElement
+  , SVGSetElement(SVGSetElement), unSVGSetElement, castToSVGSetElement, gTypeSVGSetElement
+  , SVGStopElement(SVGStopElement), unSVGStopElement, castToSVGStopElement, gTypeSVGStopElement
+  , SVGStringList(SVGStringList), unSVGStringList, castToSVGStringList, gTypeSVGStringList
+  , SVGStyleElement(SVGStyleElement), unSVGStyleElement, castToSVGStyleElement, gTypeSVGStyleElement
+  , SVGSwitchElement(SVGSwitchElement), unSVGSwitchElement, castToSVGSwitchElement, gTypeSVGSwitchElement
+  , SVGSymbolElement(SVGSymbolElement), unSVGSymbolElement, castToSVGSymbolElement, gTypeSVGSymbolElement
+  , SVGTRefElement(SVGTRefElement), unSVGTRefElement, castToSVGTRefElement, gTypeSVGTRefElement
+  , SVGTSpanElement(SVGTSpanElement), unSVGTSpanElement, castToSVGTSpanElement, gTypeSVGTSpanElement
+  , SVGTests(SVGTests), unSVGTests, castToSVGTests, gTypeSVGTests
+  , SVGTextContentElement(SVGTextContentElement), unSVGTextContentElement, IsSVGTextContentElement, toSVGTextContentElement, castToSVGTextContentElement, gTypeSVGTextContentElement
+  , SVGTextElement(SVGTextElement), unSVGTextElement, castToSVGTextElement, gTypeSVGTextElement
+  , SVGTextPathElement(SVGTextPathElement), unSVGTextPathElement, castToSVGTextPathElement, gTypeSVGTextPathElement
+  , SVGTextPositioningElement(SVGTextPositioningElement), unSVGTextPositioningElement, IsSVGTextPositioningElement, toSVGTextPositioningElement, castToSVGTextPositioningElement, gTypeSVGTextPositioningElement
+  , SVGTitleElement(SVGTitleElement), unSVGTitleElement, castToSVGTitleElement, gTypeSVGTitleElement
+  , SVGTransform(SVGTransform), unSVGTransform, castToSVGTransform, gTypeSVGTransform
+  , SVGTransformList(SVGTransformList), unSVGTransformList, castToSVGTransformList, gTypeSVGTransformList
+  , SVGURIReference(SVGURIReference), unSVGURIReference, castToSVGURIReference, gTypeSVGURIReference
+  , SVGUnitTypes(SVGUnitTypes), unSVGUnitTypes, castToSVGUnitTypes, gTypeSVGUnitTypes
+  , SVGUseElement(SVGUseElement), unSVGUseElement, castToSVGUseElement, gTypeSVGUseElement
+  , SVGVKernElement(SVGVKernElement), unSVGVKernElement, castToSVGVKernElement, gTypeSVGVKernElement
+  , SVGViewElement(SVGViewElement), unSVGViewElement, castToSVGViewElement, gTypeSVGViewElement
+  , SVGViewSpec(SVGViewSpec), unSVGViewSpec, castToSVGViewSpec, gTypeSVGViewSpec
+  , SVGZoomAndPan(SVGZoomAndPan), unSVGZoomAndPan, castToSVGZoomAndPan, gTypeSVGZoomAndPan
+  , SVGZoomEvent(SVGZoomEvent), unSVGZoomEvent, castToSVGZoomEvent, gTypeSVGZoomEvent
+  , Screen(Screen), unScreen, castToScreen, gTypeScreen
+  , ScriptProcessorNode(ScriptProcessorNode), unScriptProcessorNode, castToScriptProcessorNode, gTypeScriptProcessorNode
+  , ScriptProfile(ScriptProfile), unScriptProfile, castToScriptProfile, gTypeScriptProfile
+  , ScriptProfileNode(ScriptProfileNode), unScriptProfileNode, castToScriptProfileNode, gTypeScriptProfileNode
+  , SecurityPolicy(SecurityPolicy), unSecurityPolicy, castToSecurityPolicy, gTypeSecurityPolicy
+  , SecurityPolicyViolationEvent(SecurityPolicyViolationEvent), unSecurityPolicyViolationEvent, castToSecurityPolicyViolationEvent, gTypeSecurityPolicyViolationEvent
+  , Selection(Selection), unSelection, castToSelection, gTypeSelection
+  , SourceBuffer(SourceBuffer), unSourceBuffer, castToSourceBuffer, gTypeSourceBuffer
+  , SourceBufferList(SourceBufferList), unSourceBufferList, castToSourceBufferList, gTypeSourceBufferList
+  , SourceInfo(SourceInfo), unSourceInfo, castToSourceInfo, gTypeSourceInfo
+  , SpeechSynthesis(SpeechSynthesis), unSpeechSynthesis, castToSpeechSynthesis, gTypeSpeechSynthesis
+  , SpeechSynthesisEvent(SpeechSynthesisEvent), unSpeechSynthesisEvent, castToSpeechSynthesisEvent, gTypeSpeechSynthesisEvent
+  , SpeechSynthesisUtterance(SpeechSynthesisUtterance), unSpeechSynthesisUtterance, castToSpeechSynthesisUtterance, gTypeSpeechSynthesisUtterance
+  , SpeechSynthesisVoice(SpeechSynthesisVoice), unSpeechSynthesisVoice, castToSpeechSynthesisVoice, gTypeSpeechSynthesisVoice
+  , Storage(Storage), unStorage, castToStorage, gTypeStorage
+  , StorageEvent(StorageEvent), unStorageEvent, castToStorageEvent, gTypeStorageEvent
+  , StorageInfo(StorageInfo), unStorageInfo, castToStorageInfo, gTypeStorageInfo
+  , StorageQuota(StorageQuota), unStorageQuota, castToStorageQuota, gTypeStorageQuota
+  , StyleMedia(StyleMedia), unStyleMedia, castToStyleMedia, gTypeStyleMedia
+  , StyleSheet(StyleSheet), unStyleSheet, IsStyleSheet, toStyleSheet, castToStyleSheet, gTypeStyleSheet
+  , StyleSheetList(StyleSheetList), unStyleSheetList, castToStyleSheetList, gTypeStyleSheetList
+  , SubtleCrypto(SubtleCrypto), unSubtleCrypto, castToSubtleCrypto, gTypeSubtleCrypto
+  , Text(Text), unText, IsText, toText, castToText, gTypeText
+  , TextEvent(TextEvent), unTextEvent, castToTextEvent, gTypeTextEvent
+  , TextMetrics(TextMetrics), unTextMetrics, castToTextMetrics, gTypeTextMetrics
+  , TextTrack(TextTrack), unTextTrack, castToTextTrack, gTypeTextTrack
+  , TextTrackCue(TextTrackCue), unTextTrackCue, IsTextTrackCue, toTextTrackCue, castToTextTrackCue, gTypeTextTrackCue
+  , TextTrackCueList(TextTrackCueList), unTextTrackCueList, castToTextTrackCueList, gTypeTextTrackCueList
+  , TextTrackList(TextTrackList), unTextTrackList, castToTextTrackList, gTypeTextTrackList
+  , TimeRanges(TimeRanges), unTimeRanges, castToTimeRanges, gTypeTimeRanges
+  , Touch(Touch), unTouch, castToTouch, gTypeTouch
+  , TouchEvent(TouchEvent), unTouchEvent, castToTouchEvent, gTypeTouchEvent
+  , TouchList(TouchList), unTouchList, castToTouchList, gTypeTouchList
+  , TrackEvent(TrackEvent), unTrackEvent, castToTrackEvent, gTypeTrackEvent
+  , TransitionEvent(TransitionEvent), unTransitionEvent, castToTransitionEvent, gTypeTransitionEvent
+  , TreeWalker(TreeWalker), unTreeWalker, castToTreeWalker, gTypeTreeWalker
+  , TypeConversions(TypeConversions), unTypeConversions, castToTypeConversions, gTypeTypeConversions
+  , UIEvent(UIEvent), unUIEvent, IsUIEvent, toUIEvent, castToUIEvent, gTypeUIEvent
+  , UIRequestEvent(UIRequestEvent), unUIRequestEvent, castToUIRequestEvent, gTypeUIRequestEvent
+  , URL(URL), unURL, castToURL, gTypeURL
+  , URLUtils(URLUtils), unURLUtils, castToURLUtils, gTypeURLUtils
+  , UserMessageHandler(UserMessageHandler), unUserMessageHandler, castToUserMessageHandler, gTypeUserMessageHandler
+  , UserMessageHandlersNamespace(UserMessageHandlersNamespace), unUserMessageHandlersNamespace, castToUserMessageHandlersNamespace, gTypeUserMessageHandlersNamespace
+  , VTTCue(VTTCue), unVTTCue, castToVTTCue, gTypeVTTCue
+  , VTTRegion(VTTRegion), unVTTRegion, castToVTTRegion, gTypeVTTRegion
+  , VTTRegionList(VTTRegionList), unVTTRegionList, castToVTTRegionList, gTypeVTTRegionList
+  , ValidityState(ValidityState), unValidityState, castToValidityState, gTypeValidityState
+  , VideoPlaybackQuality(VideoPlaybackQuality), unVideoPlaybackQuality, castToVideoPlaybackQuality, gTypeVideoPlaybackQuality
+  , VideoStreamTrack(VideoStreamTrack), unVideoStreamTrack, castToVideoStreamTrack, gTypeVideoStreamTrack
+  , VideoTrack(VideoTrack), unVideoTrack, castToVideoTrack, gTypeVideoTrack
+  , VideoTrackList(VideoTrackList), unVideoTrackList, castToVideoTrackList, gTypeVideoTrackList
+  , WaveShaperNode(WaveShaperNode), unWaveShaperNode, castToWaveShaperNode, gTypeWaveShaperNode
+  , WebGL2RenderingContext(WebGL2RenderingContext), unWebGL2RenderingContext, castToWebGL2RenderingContext, gTypeWebGL2RenderingContext
+  , WebGLActiveInfo(WebGLActiveInfo), unWebGLActiveInfo, castToWebGLActiveInfo, gTypeWebGLActiveInfo
+  , WebGLBuffer(WebGLBuffer), unWebGLBuffer, castToWebGLBuffer, gTypeWebGLBuffer
+  , WebGLCompressedTextureATC(WebGLCompressedTextureATC), unWebGLCompressedTextureATC, castToWebGLCompressedTextureATC, gTypeWebGLCompressedTextureATC
+  , WebGLCompressedTexturePVRTC(WebGLCompressedTexturePVRTC), unWebGLCompressedTexturePVRTC, castToWebGLCompressedTexturePVRTC, gTypeWebGLCompressedTexturePVRTC
+  , WebGLCompressedTextureS3TC(WebGLCompressedTextureS3TC), unWebGLCompressedTextureS3TC, castToWebGLCompressedTextureS3TC, gTypeWebGLCompressedTextureS3TC
+  , WebGLContextAttributes(WebGLContextAttributes), unWebGLContextAttributes, castToWebGLContextAttributes, gTypeWebGLContextAttributes
+  , WebGLContextEvent(WebGLContextEvent), unWebGLContextEvent, castToWebGLContextEvent, gTypeWebGLContextEvent
+  , WebGLDebugRendererInfo(WebGLDebugRendererInfo), unWebGLDebugRendererInfo, castToWebGLDebugRendererInfo, gTypeWebGLDebugRendererInfo
+  , WebGLDebugShaders(WebGLDebugShaders), unWebGLDebugShaders, castToWebGLDebugShaders, gTypeWebGLDebugShaders
+  , WebGLDepthTexture(WebGLDepthTexture), unWebGLDepthTexture, castToWebGLDepthTexture, gTypeWebGLDepthTexture
+  , WebGLDrawBuffers(WebGLDrawBuffers), unWebGLDrawBuffers, castToWebGLDrawBuffers, gTypeWebGLDrawBuffers
+  , WebGLFramebuffer(WebGLFramebuffer), unWebGLFramebuffer, castToWebGLFramebuffer, gTypeWebGLFramebuffer
+  , WebGLLoseContext(WebGLLoseContext), unWebGLLoseContext, castToWebGLLoseContext, gTypeWebGLLoseContext
+  , WebGLProgram(WebGLProgram), unWebGLProgram, castToWebGLProgram, gTypeWebGLProgram
+  , WebGLQuery(WebGLQuery), unWebGLQuery, castToWebGLQuery, gTypeWebGLQuery
+  , WebGLRenderbuffer(WebGLRenderbuffer), unWebGLRenderbuffer, castToWebGLRenderbuffer, gTypeWebGLRenderbuffer
+  , WebGLRenderingContext(WebGLRenderingContext), unWebGLRenderingContext, castToWebGLRenderingContext, gTypeWebGLRenderingContext
+  , WebGLRenderingContextBase(WebGLRenderingContextBase), unWebGLRenderingContextBase, IsWebGLRenderingContextBase, toWebGLRenderingContextBase, castToWebGLRenderingContextBase, gTypeWebGLRenderingContextBase
+  , WebGLSampler(WebGLSampler), unWebGLSampler, castToWebGLSampler, gTypeWebGLSampler
+  , WebGLShader(WebGLShader), unWebGLShader, castToWebGLShader, gTypeWebGLShader
+  , WebGLShaderPrecisionFormat(WebGLShaderPrecisionFormat), unWebGLShaderPrecisionFormat, castToWebGLShaderPrecisionFormat, gTypeWebGLShaderPrecisionFormat
+  , WebGLSync(WebGLSync), unWebGLSync, castToWebGLSync, gTypeWebGLSync
+  , WebGLTexture(WebGLTexture), unWebGLTexture, castToWebGLTexture, gTypeWebGLTexture
+  , WebGLTransformFeedback(WebGLTransformFeedback), unWebGLTransformFeedback, castToWebGLTransformFeedback, gTypeWebGLTransformFeedback
+  , WebGLUniformLocation(WebGLUniformLocation), unWebGLUniformLocation, castToWebGLUniformLocation, gTypeWebGLUniformLocation
+  , WebGLVertexArrayObject(WebGLVertexArrayObject), unWebGLVertexArrayObject, castToWebGLVertexArrayObject, gTypeWebGLVertexArrayObject
+  , WebGLVertexArrayObjectOES(WebGLVertexArrayObjectOES), unWebGLVertexArrayObjectOES, castToWebGLVertexArrayObjectOES, gTypeWebGLVertexArrayObjectOES
+  , WebKitAnimationEvent(WebKitAnimationEvent), unWebKitAnimationEvent, castToWebKitAnimationEvent, gTypeWebKitAnimationEvent
+  , WebKitCSSFilterValue(WebKitCSSFilterValue), unWebKitCSSFilterValue, castToWebKitCSSFilterValue, gTypeWebKitCSSFilterValue
+  , WebKitCSSMatrix(WebKitCSSMatrix), unWebKitCSSMatrix, castToWebKitCSSMatrix, gTypeWebKitCSSMatrix
+  , WebKitCSSRegionRule(WebKitCSSRegionRule), unWebKitCSSRegionRule, castToWebKitCSSRegionRule, gTypeWebKitCSSRegionRule
+  , WebKitCSSTransformValue(WebKitCSSTransformValue), unWebKitCSSTransformValue, castToWebKitCSSTransformValue, gTypeWebKitCSSTransformValue
+  , WebKitCSSViewportRule(WebKitCSSViewportRule), unWebKitCSSViewportRule, castToWebKitCSSViewportRule, gTypeWebKitCSSViewportRule
+  , WebKitNamedFlow(WebKitNamedFlow), unWebKitNamedFlow, castToWebKitNamedFlow, gTypeWebKitNamedFlow
+  , WebKitNamespace(WebKitNamespace), unWebKitNamespace, castToWebKitNamespace, gTypeWebKitNamespace
+  , WebKitPlaybackTargetAvailabilityEvent(WebKitPlaybackTargetAvailabilityEvent), unWebKitPlaybackTargetAvailabilityEvent, castToWebKitPlaybackTargetAvailabilityEvent, gTypeWebKitPlaybackTargetAvailabilityEvent
+  , WebKitPoint(WebKitPoint), unWebKitPoint, castToWebKitPoint, gTypeWebKitPoint
+  , WebKitTransitionEvent(WebKitTransitionEvent), unWebKitTransitionEvent, castToWebKitTransitionEvent, gTypeWebKitTransitionEvent
+  , WebSocket(WebSocket), unWebSocket, castToWebSocket, gTypeWebSocket
+  , WheelEvent(WheelEvent), unWheelEvent, castToWheelEvent, gTypeWheelEvent
+  , Window(Window), unWindow, castToWindow, gTypeWindow
+  , WindowBase64(WindowBase64), unWindowBase64, castToWindowBase64, gTypeWindowBase64
+  , WindowTimers(WindowTimers), unWindowTimers, castToWindowTimers, gTypeWindowTimers
+  , Worker(Worker), unWorker, castToWorker, gTypeWorker
+  , WorkerGlobalScope(WorkerGlobalScope), unWorkerGlobalScope, IsWorkerGlobalScope, toWorkerGlobalScope, castToWorkerGlobalScope, gTypeWorkerGlobalScope
+  , WorkerLocation(WorkerLocation), unWorkerLocation, castToWorkerLocation, gTypeWorkerLocation
+  , WorkerNavigator(WorkerNavigator), unWorkerNavigator, castToWorkerNavigator, gTypeWorkerNavigator
+  , XMLHttpRequest(XMLHttpRequest), unXMLHttpRequest, castToXMLHttpRequest, gTypeXMLHttpRequest
+  , XMLHttpRequestProgressEvent(XMLHttpRequestProgressEvent), unXMLHttpRequestProgressEvent, castToXMLHttpRequestProgressEvent, gTypeXMLHttpRequestProgressEvent
+  , XMLHttpRequestUpload(XMLHttpRequestUpload), unXMLHttpRequestUpload, castToXMLHttpRequestUpload, gTypeXMLHttpRequestUpload
+  , XMLSerializer(XMLSerializer), unXMLSerializer, castToXMLSerializer, gTypeXMLSerializer
+  , XPathEvaluator(XPathEvaluator), unXPathEvaluator, castToXPathEvaluator, gTypeXPathEvaluator
+  , XPathExpression(XPathExpression), unXPathExpression, castToXPathExpression, gTypeXPathExpression
+  , XPathNSResolver(XPathNSResolver), unXPathNSResolver, castToXPathNSResolver, gTypeXPathNSResolver
+  , XPathResult(XPathResult), unXPathResult, castToXPathResult, gTypeXPathResult
+  , XSLTProcessor(XSLTProcessor), unXSLTProcessor, castToXSLTProcessor, gTypeXSLTProcessor
+-- AUTO GENERATION ENDS HERE
+  ) where
+
+import Prelude ()
+import Prelude.Compat hiding((!!))
+import qualified Data.Text as T (unpack, Text)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int8, Int16, Int32, Int64)
+import Data.Word (Word8, Word16, Word32, Word64)
+import Language.Javascript.JSaddle
+       (Object(..), valToBool, valMakeNull, valToNumber, (!!), js,
+        JSVal, JSString, JSM, maybeNullOrUndefined, maybeNullOrUndefined',
+        valToStr, jsg, ToJSString(..), strToText, MakeObject(..),
+        Nullable(..), Function(..), freeFunction, instanceOf, JSContextRef)
+import Foreign.Ptr (nullPtr)
+import Control.Lens.Operators ((^.))
+import Data.Maybe (catMaybes)
+import Language.Javascript.JSaddle.Classes (ToJSVal(..))
+import Control.Monad ((>=>))
+import Data.Coerce (coerce, Coercible)
+import Control.Monad.Trans.Reader (ReaderT(..), ask)
+import Control.Exception (bracket)
+
+type DOM = JSM
+type DOMContext = JSContextRef
+
+askDOM :: MonadDOM m => m DOMContext
+askDOM = liftDOM ask
+
+runDOM :: DOM a -> DOMContext -> IO a
+runDOM = runReaderT
+
+class (Applicative m, MonadIO m) => MonadDOM m where
+    liftDOM :: JSM a -> m a
+    {-# MINIMAL liftDOM #-}
+
+instance MonadDOM JSM where
+    liftDOM = id
+    {-# INLINE liftDOM #-}
+
+#ifdef ghcjs_HOST_OS
+postGUIAsync :: IO () -> IO ()
+postGUIAsync = id
+
+postGUISync :: IO a -> IO a
+postGUISync = id
+#endif
+
+propagateGError :: a -> a
+propagateGError = id
+
+newtype GType = GType Object
+
+typeInstanceIsA :: ToJSVal value => value -> GType -> JSM Bool
+typeInstanceIsA o (GType t) = o `instanceOf` t
+
+-- The usage of foreignPtrToPtr should be safe as the evaluation will only be
+-- forced if the object is used afterwards
+--
+castTo :: (IsGObject obj, IsGObject obj') => JSM GType -> String
+                                                -> obj -> JSM obj'
+castTo gtype objTypeName obj = do
+  gtype' <- gtype
+  let gobj@(GObject objRef) = toGObject obj
+  typeInstanceIsA objRef gtype' >>= \case
+    True  -> return $ unsafeCastGObject gobj
+    False -> error $ "Cannot cast object to " ++ objTypeName
+
+-- | Determine if this is an instance of a particular type
+--
+isA :: IsGObject o => o -> GType -> JSM Bool
+isA obj = typeInstanceIsA (unGObject $ toGObject obj)
+
+newtype GObject = GObject { unGObject :: JSVal }
+
+class (ToJSVal o, FromJSVal o) => IsGObject o where
+  -- | Safe upcast.
+  toGObject         :: o -> GObject
+  -- | Unchecked downcast.
+  unsafeCastGObject :: GObject -> o
+
+class PToJSVal o where
+  pToJSVal :: o -> JSVal
+
+class PFromJSVal o where
+  pFromJSVal :: JSVal -> o
+
+--class ToJSVal o where
+--  toJSVal :: o -> JSM JSVal
+
+class FromJSVal o where
+    fromJSVal :: JSVal -> JSM (Maybe o)
+    fromJSVal = maybeNullOrUndefined' fromJSValUnchecked
+
+    fromJSValUnchecked :: JSVal -> JSM o
+    fromJSValUnchecked v =
+        fromJSVal v >>= \case
+            Nothing -> error "fromJSValUnchecked"
+            Just r  -> return r
+
+fromJSArray :: FromJSVal o => JSVal -> JSM [Maybe o]
+fromJSArray a = do
+    l <- a ^. js "length" >>= valToNumber
+    mapM (\i -> a !! i >>= fromJSVal) [0..round l - 1]
+
+fromJSArrayUnchecked :: FromJSVal o => JSVal -> JSM [o]
+fromJSArrayUnchecked a = do
+    l <- a ^. js "length" >>= valToNumber
+    mapM (\i -> a !! i >>= fromJSValUnchecked) [0..round l - 1]
+
+-- newtype Nullable a = Nullable JSVal
+
+nullableToMaybe :: FromJSVal a => JSVal -> JSM (Maybe a)
+nullableToMaybe = fromJSVal
+{-# INLINE nullableToMaybe #-}
+--
+maybeToNullable :: ToJSVal a => Maybe a -> JSM JSVal
+maybeToNullable Nothing = valMakeNull
+maybeToNullable (Just a) = toJSVal a
+{-# INLINE maybeToNullable #-}
+
+instance PToJSVal GObject where
+  pToJSVal = unGObject
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal GObject where
+  pFromJSVal = GObject
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal GObject where
+  toJSVal = return . unGObject
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal GObject where
+  fromJSVal val = fmap GObject <$> maybeNullOrUndefined val
+  {-# INLINE fromJSVal #-}
+
+--instance IsGObject o => PToJSVal o where
+--  pToJSVal = unGObject . toGObject
+--  {-# INLINE pToJSVal #-}
+--
+--instance IsGObject o => PFromJSVal o where
+--  pFromJSVal = unsafeCastGObject . GObject . castRef
+--  {-# INLINE pFromJSVal #-}
+--
+--instance IsGObject o => ToJSVal o where
+--  toJSVal = return . unGObject . toGObject
+--  {-# INLINE toJSVal #-}
+--
+--instance IsGObject o => FromJSVal o where
+--  fromJSVal = return . fmap (unsafeCastGObject . GObject . castRef) . maybeJSNullOrUndefined
+--  {-# INLINE fromJSVal #-}
+
+instance IsGObject GObject where
+  toGObject = id
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = id
+  {-# INLINE unsafeCastGObject #-}
+
+castToGObject :: IsGObject obj => obj -> JSM obj
+castToGObject = return
+
+#ifdef ghcjs_HOST_OS
+foreign import javascript unsafe "object" gTypeGObject :: GType
+#else
+gTypeGObject :: GType
+gTypeGObject = error "gTypeGObject: only available in JavaScript"
+#endif
+
+objectToString :: (IsGObject self, FromJSString result) => self -> JSM result
+objectToString self = fromJSValUnchecked (unGObject $ toGObject self)
+
+-- | Fastest string type to use when you just
+--   want to take a string from the DOM then
+--   give it back as is.
+type DOMString = JSString
+
+class FromJSVal s => FromJSString s where
+    fromJSString :: JSString -> JSM s
+
+fromJSStringArray :: FromJSString s => JSVal -> JSM [s]
+fromJSStringArray a = do
+    l <- a ^. js "length" >>= valToNumber
+    mapM (\i -> a !! i >>= valToStr >>= fromJSString) [0..round l - 1]
+
+--fromJSString :: FromJSString a => JSString -> a
+--fromJSString a = pFromJSVal . pToJSVal
+--{-# INLINE fromJSString #-}
+
+toMaybeJSString :: ToJSString a => Maybe a -> JSM JSVal
+toMaybeJSString Nothing = valMakeNull
+toMaybeJSString (Just a) = toJSVal (toJSString a)
+{-# INLINE toMaybeJSString #-}
+
+fromMaybeJSString :: FromJSString a => JSVal -> JSM (Maybe a)
+fromMaybeJSString = maybeNullOrUndefined' (valToStr >=> fromJSString)
+{-# INLINE fromMaybeJSString #-}
+
+instance FromJSVal JSVal where
+    fromJSValUnchecked = return
+instance FromJSVal Double where
+    fromJSValUnchecked = valToNumber
+instance FromJSVal Float where
+    fromJSValUnchecked v = realToFrac <$> valToNumber v
+instance FromJSVal Int where
+    fromJSValUnchecked v = round <$> valToNumber v
+instance FromJSVal Int32 where
+    fromJSValUnchecked v = round <$> valToNumber v
+instance FromJSVal Int64 where
+    fromJSValUnchecked v = round <$> valToNumber v
+instance FromJSVal Word where
+    fromJSValUnchecked v = round <$> valToNumber v
+instance FromJSVal Word32 where
+    fromJSValUnchecked v = round <$> valToNumber v
+instance FromJSVal Word64 where
+    fromJSValUnchecked v = round <$> valToNumber v
+instance FromJSVal Bool where
+    fromJSValUnchecked = valToBool
+instance FromJSVal T.Text where
+    fromJSValUnchecked v = valToStr v >>= strToText
+instance FromJSString T.Text where
+    fromJSString = strToText
+instance FromJSVal String where
+    fromJSValUnchecked v = T.unpack <$> (valToStr v >>= strToText)
+instance FromJSString String where
+    fromJSString v = T.unpack <$> strToText v
+instance FromJSVal JSString where
+    fromJSValUnchecked = valToStr
+instance FromJSString JSString where
+    fromJSString = return
+
+type ToDOMString s = ToJSString s
+type FromDOMString s = FromJSString s
+
+type IsDOMString s = (ToDOMString s, FromDOMString s)
+
+-- Callbacks
+newtype Callback a = Callback Function
+
+withCallback :: (MonadDOM m, Coercible c Function)
+             => JSM c -> (c -> JSM a) -> m a
+withCallback aquire f = do
+    jsCtx <- liftDOM ask
+    liftIO $ bracket
+        (runReaderT aquire jsCtx)
+        (freeFunction . coerce)
+        (\t -> runReaderT (f t) jsCtx)
+
+newtype AudioBufferCallback = AudioBufferCallback (Callback (JSVal -> IO ()))
+instance ToJSVal AudioBufferCallback where toJSVal (AudioBufferCallback (Callback r)) = toJSVal r
+newtype DatabaseCallback = DatabaseCallback (Callback (JSVal -> IO ()))
+instance ToJSVal DatabaseCallback where toJSVal (DatabaseCallback (Callback r)) = toJSVal r
+newtype MediaQueryListListener = MediaQueryListListener (Callback (JSVal -> IO ()))
+instance ToJSVal MediaQueryListListener where toJSVal (MediaQueryListListener (Callback r)) = toJSVal r
+newtype MediaStreamTrackSourcesCallback = MediaStreamTrackSourcesCallback (Callback (JSVal -> IO ()))
+instance ToJSVal MediaStreamTrackSourcesCallback where toJSVal (MediaStreamTrackSourcesCallback (Callback r)) = toJSVal r
+newtype NavigatorUserMediaErrorCallback = NavigatorUserMediaErrorCallback (Callback (JSVal -> IO ()))
+instance ToJSVal NavigatorUserMediaErrorCallback where toJSVal (NavigatorUserMediaErrorCallback (Callback r)) = toJSVal r
+newtype NavigatorUserMediaSuccessCallback = NavigatorUserMediaSuccessCallback (Callback (JSVal -> IO ()))
+instance ToJSVal NavigatorUserMediaSuccessCallback where toJSVal (NavigatorUserMediaSuccessCallback (Callback r)) = toJSVal r
+newtype NotificationPermissionCallback permissions = NotificationPermissionCallback (Callback (JSVal -> IO ()))
+instance ToJSVal (NotificationPermissionCallback permissions) where toJSVal (NotificationPermissionCallback (Callback r)) = toJSVal r
+newtype PositionCallback = PositionCallback (Callback (JSVal -> IO ()))
+instance ToJSVal PositionCallback where toJSVal (PositionCallback (Callback r)) = toJSVal r
+newtype PositionErrorCallback = PositionErrorCallback (Callback (JSVal -> IO ()))
+instance ToJSVal PositionErrorCallback where toJSVal (PositionErrorCallback (Callback r)) = toJSVal r
+newtype RequestAnimationFrameCallback = RequestAnimationFrameCallback (Callback (JSVal -> IO ()))
+instance ToJSVal RequestAnimationFrameCallback where toJSVal (RequestAnimationFrameCallback (Callback r)) = toJSVal r
+newtype RTCPeerConnectionErrorCallback = RTCPeerConnectionErrorCallback (Callback (JSVal -> IO ()))
+instance ToJSVal RTCPeerConnectionErrorCallback where toJSVal (RTCPeerConnectionErrorCallback (Callback r)) = toJSVal r
+newtype RTCSessionDescriptionCallback = RTCSessionDescriptionCallback (Callback (JSVal -> IO ()))
+instance ToJSVal RTCSessionDescriptionCallback where toJSVal (RTCSessionDescriptionCallback (Callback r)) = toJSVal r
+newtype RTCStatsCallback = RTCStatsCallback (Callback (JSVal -> IO ()))
+instance ToJSVal RTCStatsCallback where toJSVal (RTCStatsCallback (Callback r)) = toJSVal r
+newtype SQLStatementCallback = SQLStatementCallback (Callback (JSVal -> JSVal -> IO ()))
+instance ToJSVal SQLStatementCallback where toJSVal (SQLStatementCallback (Callback r)) = toJSVal r
+newtype SQLStatementErrorCallback = SQLStatementErrorCallback (Callback (JSVal -> JSVal -> IO ()))
+instance ToJSVal SQLStatementErrorCallback where toJSVal (SQLStatementErrorCallback (Callback r)) = toJSVal r
+newtype SQLTransactionCallback = SQLTransactionCallback (Callback (JSVal -> IO ()))
+instance ToJSVal SQLTransactionCallback where toJSVal (SQLTransactionCallback (Callback r)) = toJSVal r
+newtype SQLTransactionErrorCallback = SQLTransactionErrorCallback (Callback (JSVal -> IO ()))
+instance ToJSVal SQLTransactionErrorCallback where toJSVal (SQLTransactionErrorCallback (Callback r)) = toJSVal r
+newtype StorageErrorCallback = StorageErrorCallback (Callback (JSVal -> IO ()))
+instance ToJSVal StorageErrorCallback where toJSVal (StorageErrorCallback (Callback r)) = toJSVal r
+newtype StorageQuotaCallback = StorageQuotaCallback (Callback (JSVal -> IO ()))
+instance ToJSVal StorageQuotaCallback where toJSVal (StorageQuotaCallback (Callback r)) = toJSVal r
+newtype StorageUsageCallback = StorageUsageCallback (Callback (JSVal -> JSVal -> IO ()))
+instance ToJSVal StorageUsageCallback where toJSVal (StorageUsageCallback (Callback r)) = toJSVal r
+newtype StringCallback s = StringCallback (Callback (JSVal -> IO ()))
+instance ToJSVal (StringCallback s) where toJSVal (StringCallback (Callback r)) = toJSVal r
+newtype VoidCallback = VoidCallback (Callback (IO ()))
+instance ToJSVal VoidCallback where toJSVal (VoidCallback (Callback r)) = toJSVal r
+
+-- Custom types
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+newtype SerializedScriptValue = SerializedScriptValue { unSerializedScriptValue :: JSVal }
+
+instance PToJSVal SerializedScriptValue where
+  pToJSVal = unSerializedScriptValue
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SerializedScriptValue where
+  pFromJSVal = SerializedScriptValue
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SerializedScriptValue where
+  toJSVal = return . unSerializedScriptValue
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SerializedScriptValue where
+  fromJSVal v = fmap SerializedScriptValue <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsSerializedScriptValue o
+toSerializedScriptValue :: IsSerializedScriptValue o => o -> SerializedScriptValue
+toSerializedScriptValue = unsafeCastGObject . toGObject
+
+instance IsSerializedScriptValue SerializedScriptValue
+instance IsGObject SerializedScriptValue where
+  toGObject = GObject . unSerializedScriptValue
+  unsafeCastGObject = SerializedScriptValue . unGObject
+-- TODO add more IsSerializedScriptValue instances
+#else
+-- TODO work out how we can support SerializedScriptValue in native code
+#endif
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+newtype PositionOptions = PositionOptions { unPositionOptions :: JSVal }
+
+instance PToJSVal PositionOptions where
+  pToJSVal = unPositionOptions
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal PositionOptions where
+  pFromJSVal = PositionOptions
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal PositionOptions where
+  toJSVal = return . unPositionOptions
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal PositionOptions where
+  fromJSVal v = fmap PositionOptions <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsPositionOptions o
+toPositionOptions :: IsPositionOptions o => o -> PositionOptions
+toPositionOptions = unsafeCastGObject . toGObject
+
+instance IsPositionOptions PositionOptions
+instance IsGObject PositionOptions where
+  toGObject = GObject . unPositionOptions
+  unsafeCastGObject = PositionOptions . unGObject
+-- TODO add more IsPositionOptions instances
+#else
+-- TODO work out how we can support PositionOptions in native code
+#endif
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+newtype Dictionary = Dictionary { unDictionary :: JSVal }
+
+instance PToJSVal Dictionary where
+  pToJSVal = unDictionary
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Dictionary where
+  pFromJSVal = Dictionary
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Dictionary where
+  toJSVal = return . unDictionary
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Dictionary where
+  fromJSVal v = fmap Dictionary <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsDictionary o
+toDictionary :: IsDictionary o => o -> Dictionary
+toDictionary = unsafeCastGObject . toGObject
+
+instance IsDictionary Dictionary
+instance IsGObject Dictionary where
+  toGObject = GObject . unDictionary
+  unsafeCastGObject = Dictionary . unGObject
+-- TODO add more IsDictionary instances
+#else
+-- TODO work out how we can support Dictionary in native code
+#endif
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+newtype BlobPropertyBag = BlobPropertyBag { unBlobPropertyBag :: JSVal }
+
+instance PToJSVal BlobPropertyBag where
+  pToJSVal = unBlobPropertyBag
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal BlobPropertyBag where
+  pFromJSVal = BlobPropertyBag
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal BlobPropertyBag where
+  toJSVal = return . unBlobPropertyBag
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal BlobPropertyBag where
+  fromJSVal v = fmap BlobPropertyBag <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsBlobPropertyBag o
+toBlobPropertyBag :: IsBlobPropertyBag o => o -> BlobPropertyBag
+toBlobPropertyBag = unsafeCastGObject . toGObject
+
+instance IsBlobPropertyBag BlobPropertyBag
+instance IsGObject BlobPropertyBag where
+  toGObject = GObject . unBlobPropertyBag
+  unsafeCastGObject = BlobPropertyBag . unGObject
+-- TODO add more IsBlobPropertyBag instances
+#else
+-- TODO work out how we can support BlobPropertyBag in native code
+#endif
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+newtype MutationCallback = MutationCallback { unMutationCallback :: JSVal }
+
+instance PToJSVal MutationCallback where
+  pToJSVal = unMutationCallback
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MutationCallback where
+  pFromJSVal = MutationCallback
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MutationCallback where
+  toJSVal = return . unMutationCallback
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MutationCallback where
+  fromJSVal v = fmap MutationCallback <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsMutationCallback o
+toMutationCallback :: IsMutationCallback o => o -> MutationCallback
+toMutationCallback = unsafeCastGObject . toGObject
+
+instance IsMutationCallback MutationCallback
+instance IsGObject MutationCallback where
+  toGObject = GObject . unMutationCallback
+  unsafeCastGObject = MutationCallback . unGObject
+-- TODO add more IsMutationCallback instances
+#else
+-- TODO work out how we can support MutationCallback in native code
+#endif
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+newtype Promise = Promise { unPromise :: JSVal }
+
+instance PToJSVal Promise where
+  pToJSVal = unPromise
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Promise where
+  pFromJSVal = Promise
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Promise where
+  toJSVal = return . unPromise
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Promise where
+  fromJSVal v = fmap Promise <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsPromise o
+toPromise :: IsPromise o => o -> Promise
+toPromise = unsafeCastGObject . toGObject
+
+instance IsPromise Promise
+instance IsGObject Promise where
+  toGObject = GObject . unPromise
+  unsafeCastGObject = Promise . unGObject
+-- TODO add more IsPromise instances
+
+castToPromise :: IsGObject obj => obj -> JSM Promise
+castToPromise = castTo gTypePromise "Promise"
+
+gTypePromise :: JSM GType
+gTypePromise = GType . Object <$> jsg "Promise"
+#else
+-- TODO work out how we can support Promise in native code
+#endif
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+newtype ArrayBuffer = ArrayBuffer { unArrayBuffer :: JSVal }
+
+instance PToJSVal ArrayBuffer where
+  pToJSVal = unArrayBuffer
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ArrayBuffer where
+  pFromJSVal = ArrayBuffer
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ArrayBuffer where
+  toJSVal = return . unArrayBuffer
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ArrayBuffer where
+  fromJSVal v = fmap ArrayBuffer <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsArrayBuffer o
+toArrayBuffer :: IsArrayBuffer o => o -> ArrayBuffer
+toArrayBuffer = unsafeCastGObject . toGObject
+
+instance IsArrayBuffer ArrayBuffer
+instance IsGObject ArrayBuffer where
+  toGObject = GObject . unArrayBuffer
+  unsafeCastGObject = ArrayBuffer . unGObject
+
+castToArrayBuffer :: IsGObject obj => obj -> JSM ArrayBuffer
+castToArrayBuffer = castTo gTypeArrayBuffer "ArrayBuffer"
+
+gTypeArrayBuffer :: JSM GType
+gTypeArrayBuffer = GType . Object <$> jsg "ArrayBuffer"
+#else
+-- TODO work out how we can support ArrayBuffer in native code
+#endif
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+newtype Float32Array = Float32Array { unFloat32Array :: JSVal }
+
+instance PToJSVal Float32Array where
+  pToJSVal = unFloat32Array
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Float32Array where
+  pFromJSVal = Float32Array
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Float32Array where
+  toJSVal = return . unFloat32Array
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Float32Array where
+  fromJSVal v = fmap Float32Array <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsFloat32Array o
+toFloat32Array :: IsFloat32Array o => o -> Float32Array
+toFloat32Array = unsafeCastGObject . toGObject
+
+instance IsFloat32Array Float32Array
+instance IsGObject Float32Array where
+  toGObject = GObject . unFloat32Array
+  unsafeCastGObject = Float32Array . unGObject
+-- TODO add more IsFloat32Array instances
+
+castToFloat32Array :: IsGObject obj => obj -> JSM Float32Array
+castToFloat32Array = castTo gTypeFloat32Array "Float32Array"
+
+gTypeFloat32Array :: JSM GType
+gTypeFloat32Array = GType . Object <$> jsg "Float32Array"
+#else
+-- TODO work out how we can support Float32Array in native code
+#endif
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+newtype Float64Array = Float64Array { unFloat64Array :: JSVal }
+
+instance PToJSVal Float64Array where
+  pToJSVal = unFloat64Array
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Float64Array where
+  pFromJSVal = Float64Array
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Float64Array where
+  toJSVal = return . unFloat64Array
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Float64Array where
+  fromJSVal v = fmap Float64Array <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsFloat64Array o
+toFloat64Array :: IsFloat64Array o => o -> Float64Array
+toFloat64Array = unsafeCastGObject . toGObject
+
+instance IsFloat64Array Float64Array
+instance IsGObject Float64Array where
+  toGObject = GObject . unFloat64Array
+  unsafeCastGObject = Float64Array . unGObject
+-- TODO add more IsFloat64Array instances
+
+castToFloat64Array :: IsGObject obj => obj -> JSM Float64Array
+castToFloat64Array = castTo gTypeFloat64Array "Float64Array"
+
+gTypeFloat64Array :: JSM GType
+gTypeFloat64Array = GType . Object <$> jsg "Float64Array"
+#else
+-- TODO work out how we can support Float64Array in native code
+#endif
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+newtype Uint8Array = Uint8Array { unUint8Array :: JSVal }
+
+instance PToJSVal Uint8Array where
+  pToJSVal = unUint8Array
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Uint8Array where
+  pFromJSVal = Uint8Array
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Uint8Array where
+  toJSVal = return . unUint8Array
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Uint8Array where
+  fromJSVal v = fmap Uint8Array <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsUint8Array o
+toUint8Array :: IsUint8Array o => o -> Uint8Array
+toUint8Array = unsafeCastGObject . toGObject
+
+instance IsUint8Array Uint8Array
+instance IsGObject Uint8Array where
+  toGObject = GObject . unUint8Array
+  unsafeCastGObject = Uint8Array . unGObject
+-- TODO add more IsUint8Array instances
+
+castToUint8Array :: IsGObject obj => obj -> JSM Uint8Array
+castToUint8Array = castTo gTypeUint8Array "Uint8Array"
+
+gTypeUint8Array :: JSM GType
+gTypeUint8Array = GType . Object <$> jsg "Uint8Array"
+#else
+-- TODO work out how we can support Uint8Array in native code
+#endif
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+newtype Uint8ClampedArray = Uint8ClampedArray { unUint8ClampedArray :: JSVal }
+
+instance PToJSVal Uint8ClampedArray where
+  pToJSVal = unUint8ClampedArray
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Uint8ClampedArray where
+  pFromJSVal = Uint8ClampedArray
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Uint8ClampedArray where
+  toJSVal = return . unUint8ClampedArray
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Uint8ClampedArray where
+  fromJSVal v = fmap Uint8ClampedArray <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsUint8ClampedArray o
+toUint8ClampedArray :: IsUint8ClampedArray o => o -> Uint8ClampedArray
+toUint8ClampedArray = unsafeCastGObject . toGObject
+
+instance IsUint8ClampedArray Uint8ClampedArray
+instance IsGObject Uint8ClampedArray where
+  toGObject = GObject . unUint8ClampedArray
+  unsafeCastGObject = Uint8ClampedArray . unGObject
+-- TODO add more IsUint8ClampedArray instances
+
+castToUint8ClampedArray :: IsGObject obj => obj -> JSM Uint8ClampedArray
+castToUint8ClampedArray = castTo gTypeUint8ClampedArray "Uint8ClampedArray"
+
+gTypeUint8ClampedArray :: JSM GType
+gTypeUint8ClampedArray = GType . Object <$> jsg "Uint8ClampedArray"
+#else
+-- TODO work out how we can support Uint8ClampedArray in native code
+#endif
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+newtype Uint16Array = Uint16Array { unUint16Array :: JSVal }
+
+instance PToJSVal Uint16Array where
+  pToJSVal = unUint16Array
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Uint16Array where
+  pFromJSVal = Uint16Array
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Uint16Array where
+  toJSVal = return . unUint16Array
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Uint16Array where
+  fromJSVal v = fmap Uint16Array <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsUint16Array o
+toUint16Array :: IsUint16Array o => o -> Uint16Array
+toUint16Array = unsafeCastGObject . toGObject
+
+instance IsUint16Array Uint16Array
+instance IsGObject Uint16Array where
+  toGObject = GObject . unUint16Array
+  unsafeCastGObject = Uint16Array . unGObject
+-- TODO add more IsUint16Array instances
+
+castToUint16Array :: IsGObject obj => obj -> JSM Uint16Array
+castToUint16Array = castTo gTypeUint16Array "Uint16Array"
+
+gTypeUint16Array :: JSM GType
+gTypeUint16Array = GType . Object <$> jsg "Uint16Array"
+#else
+-- TODO work out how we can support Uint16Array in native code
+#endif
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+newtype Uint32Array = Uint32Array { unUint32Array :: JSVal }
+
+instance PToJSVal Uint32Array where
+  pToJSVal = unUint32Array
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Uint32Array where
+  pFromJSVal = Uint32Array
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Uint32Array where
+  toJSVal = return . unUint32Array
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Uint32Array where
+  fromJSVal v = fmap Uint32Array <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsUint32Array o
+toUint32Array :: IsUint32Array o => o -> Uint32Array
+toUint32Array = unsafeCastGObject . toGObject
+
+instance IsUint32Array Uint32Array
+instance IsGObject Uint32Array where
+  toGObject = GObject . unUint32Array
+  unsafeCastGObject = Uint32Array . unGObject
+-- TODO add more IsUint32Array instances
+
+castToUint32Array :: IsGObject obj => obj -> JSM Uint32Array
+castToUint32Array = castTo gTypeUint32Array "Uint32Array"
+
+gTypeUint32Array :: JSM GType
+gTypeUint32Array = GType . Object <$> jsg "Uint32Array"
+#else
+-- TODO work out how we can support Uint32Array in native code
+#endif
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+newtype Int8Array = Int8Array { unInt8Array :: JSVal }
+
+instance PToJSVal Int8Array where
+  pToJSVal = unInt8Array
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Int8Array where
+  pFromJSVal = Int8Array
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Int8Array where
+  toJSVal = return . unInt8Array
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Int8Array where
+  fromJSVal v = fmap Int8Array <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsInt8Array o
+toInt8Array :: IsInt8Array o => o -> Int8Array
+toInt8Array = unsafeCastGObject . toGObject
+
+instance IsInt8Array Int8Array
+instance IsGObject Int8Array where
+  toGObject = GObject . unInt8Array
+  unsafeCastGObject = Int8Array . unGObject
+-- TODO add more IsInt8Array instances
+
+castToInt8Array :: IsGObject obj => obj -> JSM Int8Array
+castToInt8Array = castTo gTypeInt8Array "Int8Array"
+
+gTypeInt8Array :: JSM GType
+gTypeInt8Array = GType . Object <$> jsg "Int8Array"
+#else
+-- TODO work out how we can support Int8Array in native code
+#endif
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+newtype Int16Array = Int16Array { unInt16Array :: JSVal }
+
+instance PToJSVal Int16Array where
+  pToJSVal = unInt16Array
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Int16Array where
+  pFromJSVal = Int16Array
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Int16Array where
+  toJSVal = return . unInt16Array
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Int16Array where
+  fromJSVal v = fmap Int16Array <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsInt16Array o
+toInt16Array :: IsInt16Array o => o -> Int16Array
+toInt16Array = unsafeCastGObject . toGObject
+
+instance IsInt16Array Int16Array
+instance IsGObject Int16Array where
+  toGObject = GObject . unInt16Array
+  unsafeCastGObject = Int16Array . unGObject
+-- TODO add more IsInt16Array instances
+
+castToInt16Array :: IsGObject obj => obj -> JSM Int16Array
+castToInt16Array = castTo gTypeInt16Array "Int16Array"
+
+gTypeInt16Array :: JSM GType
+gTypeInt16Array = GType . Object <$> jsg "Int16Array"
+#else
+-- TODO work out how we can support Int16Array in native code
+#endif
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+newtype Int32Array = Int32Array { unInt32Array :: JSVal }
+
+instance PToJSVal Int32Array where
+  pToJSVal = unInt32Array
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Int32Array where
+  pFromJSVal = Int32Array
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Int32Array where
+  toJSVal = return . unInt32Array
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Int32Array where
+  fromJSVal v = fmap Int32Array <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsInt32Array o
+toInt32Array :: IsInt32Array o => o -> Int32Array
+toInt32Array = unsafeCastGObject . toGObject
+
+instance IsInt32Array Int32Array
+instance IsGObject Int32Array where
+  toGObject = GObject . unInt32Array
+  unsafeCastGObject = Int32Array . unGObject
+-- TODO add more IsInt32Array instances
+
+castToInt32Array :: IsGObject obj => obj -> JSM Int32Array
+castToInt32Array = castTo gTypeInt32Array "Int32Array"
+
+gTypeInt32Array :: JSM GType
+gTypeInt32Array = GType . Object <$> jsg "Int32Array"
+#else
+-- TODO work out how we can support Int32Array in native code
+#endif
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+newtype ObjectArray = ObjectArray { unObjectArray :: JSVal }
+
+instance PToJSVal ObjectArray where
+  pToJSVal = unObjectArray
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ObjectArray where
+  pFromJSVal = ObjectArray
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ObjectArray where
+  toJSVal = return . unObjectArray
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ObjectArray where
+  fromJSVal v = fmap ObjectArray <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsObjectArray o
+toObjectArray :: IsObjectArray o => o -> ObjectArray
+toObjectArray = unsafeCastGObject . toGObject
+
+instance IsObjectArray ObjectArray
+instance IsGObject ObjectArray where
+  toGObject = GObject . unObjectArray
+  unsafeCastGObject = ObjectArray . unGObject
+-- TODO add more IsObjectArray instances
+#else
+-- TODO work out how we can support ObjectArray in native code
+#endif
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+newtype ArrayBufferView = ArrayBufferView { unArrayBufferView :: JSVal }
+
+instance PToJSVal ArrayBufferView where
+  pToJSVal = unArrayBufferView
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ArrayBufferView where
+  pFromJSVal = ArrayBufferView
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ArrayBufferView where
+  toJSVal = return . unArrayBufferView
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ArrayBufferView where
+  fromJSVal v = fmap ArrayBufferView <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsArrayBufferView o
+toArrayBufferView :: IsArrayBufferView o => o -> ArrayBufferView
+toArrayBufferView = unsafeCastGObject . toGObject
+
+instance IsArrayBufferView ArrayBufferView
+instance IsGObject ArrayBufferView where
+  toGObject = GObject . unArrayBufferView
+  unsafeCastGObject = ArrayBufferView . unGObject
+-- TODO add more IsArrayBufferView instances
+#else
+-- TODO work out how we can support ArrayBufferView in native code
+#endif
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+newtype Array = Array { unArray :: JSVal }
+
+instance PToJSVal Array where
+  pToJSVal = unArray
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Array where
+  pFromJSVal = Array
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Array where
+  toJSVal = return . unArray
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Array where
+  fromJSVal v = fmap Array <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsArray o
+toArray :: IsArray o => o -> Array
+toArray = unsafeCastGObject . toGObject
+
+instance IsArray Array
+instance IsGObject Array where
+  toGObject = GObject . unArray
+  unsafeCastGObject = Array . unGObject
+-- TODO add more IsArray instances
+
+castToArray :: IsGObject obj => obj -> JSM Array
+castToArray = castTo gTypeArray "Array"
+
+gTypeArray :: JSM GType
+gTypeArray = GType . Object <$> jsg "Array"
+#else
+-- TODO work out how we can support Array in native code
+#endif
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+newtype Date = Date { unDate :: JSVal }
+
+instance PToJSVal Date where
+  pToJSVal = unDate
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Date where
+  pFromJSVal = Date
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Date where
+  toJSVal = return . unDate
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Date where
+  fromJSVal v = fmap Date <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsDate o
+toDate :: IsDate o => o -> Date
+toDate = unsafeCastGObject . toGObject
+
+instance IsDate Date
+instance IsGObject Date where
+  toGObject = GObject . unDate
+  unsafeCastGObject = Date . unGObject
+-- TODO add more IsDate instances
+
+castToDate :: IsGObject obj => obj -> JSM Date
+castToDate = castTo gTypeDate "Date"
+
+gTypeDate :: JSM GType
+gTypeDate = GType . Object <$> jsg "Date"
+#else
+-- TODO work out how we can support Date in native code
+#endif
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+newtype Acceleration = Acceleration { unAcceleration :: JSVal }
+
+instance PToJSVal Acceleration where
+  pToJSVal = unAcceleration
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Acceleration where
+  pFromJSVal = Acceleration
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Acceleration where
+  toJSVal = return . unAcceleration
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Acceleration where
+  fromJSVal v = fmap Acceleration <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsAcceleration o
+toAcceleration :: IsAcceleration o => o -> Acceleration
+toAcceleration = unsafeCastGObject . toGObject
+
+instance IsAcceleration Acceleration
+instance IsGObject Acceleration where
+  toGObject = GObject . unAcceleration
+  unsafeCastGObject = Acceleration . unGObject
+-- TODO add more IsAcceleration instances
+#else
+-- TODO work out how we can support Acceleration in native code
+#endif
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+newtype RotationRate = RotationRate { unRotationRate :: JSVal }
+
+instance PToJSVal RotationRate where
+  pToJSVal = unRotationRate
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RotationRate where
+  pFromJSVal = RotationRate
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RotationRate where
+  toJSVal = return . unRotationRate
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RotationRate where
+  fromJSVal v = fmap RotationRate <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsRotationRate o
+toRotationRate :: IsRotationRate o => o -> RotationRate
+toRotationRate = unsafeCastGObject . toGObject
+
+instance IsRotationRate RotationRate
+instance IsGObject RotationRate where
+  toGObject = GObject . unRotationRate
+  unsafeCastGObject = RotationRate . unGObject
+-- TODO add more IsRotationRate instances
+#else
+-- TODO work out how we can support RotationRate in native code
+#endif
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+newtype Algorithm = Algorithm { unAlgorithm :: JSVal }
+
+instance PToJSVal Algorithm where
+  pToJSVal = unAlgorithm
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Algorithm where
+  pFromJSVal = Algorithm
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Algorithm where
+  toJSVal = return . unAlgorithm
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Algorithm where
+  fromJSVal v = fmap Algorithm <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsAlgorithm o
+toAlgorithm :: IsAlgorithm o => o -> Algorithm
+toAlgorithm = unsafeCastGObject . toGObject
+
+instance IsAlgorithm Algorithm
+instance IsGObject Algorithm where
+  toGObject = GObject . unAlgorithm
+  unsafeCastGObject = Algorithm . unGObject
+-- TODO add more IsAlgorithm instances
+#else
+-- TODO work out how we can support Algorithm in native code
+#endif
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+newtype CryptoOperationData = CryptoOperationData { unCryptoOperationData :: JSVal }
+
+instance PToJSVal CryptoOperationData where
+  pToJSVal = unCryptoOperationData
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CryptoOperationData where
+  pFromJSVal = CryptoOperationData
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CryptoOperationData where
+  toJSVal = return . unCryptoOperationData
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CryptoOperationData where
+  fromJSVal v = fmap CryptoOperationData <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsCryptoOperationData o
+toCryptoOperationData :: IsCryptoOperationData o => o -> CryptoOperationData
+toCryptoOperationData = unsafeCastGObject . toGObject
+
+instance IsCryptoOperationData CryptoOperationData
+instance IsGObject CryptoOperationData where
+  toGObject = GObject . unCryptoOperationData
+  unsafeCastGObject = CryptoOperationData . unGObject
+instance IsCryptoOperationData ArrayBuffer
+instance IsCryptoOperationData ArrayBufferView
+#else
+-- TODO work out how we can support CryptoOperationData in native code
+#endif
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+newtype CanvasStyle = CanvasStyle { unCanvasStyle :: JSVal }
+
+instance PToJSVal CanvasStyle where
+  pToJSVal = unCanvasStyle
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CanvasStyle where
+  pFromJSVal = CanvasStyle
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CanvasStyle where
+  toJSVal = return . unCanvasStyle
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CanvasStyle where
+  fromJSVal v = fmap CanvasStyle <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsCanvasStyle o
+toCanvasStyle :: IsCanvasStyle o => o -> CanvasStyle
+toCanvasStyle = unsafeCastGObject . toGObject
+
+instance IsCanvasStyle CanvasStyle
+instance IsGObject CanvasStyle where
+  toGObject = GObject . unCanvasStyle
+  unsafeCastGObject = CanvasStyle . unGObject
+instance IsCanvasStyle CanvasGradient
+instance IsCanvasStyle CanvasPattern
+#else
+-- TODO work out how we can support CanvasStyle in native code
+#endif
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+newtype DOMException = DOMException { unDOMException :: JSVal }
+
+instance PToJSVal DOMException where
+  pToJSVal = unDOMException
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DOMException where
+  pFromJSVal = DOMException
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DOMException where
+  toJSVal = return . unDOMException
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DOMException where
+  fromJSVal v = fmap DOMException <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsDOMException o
+toDOMException :: IsDOMException o => o -> DOMException
+toDOMException = unsafeCastGObject . toGObject
+
+instance IsDOMException DOMException
+instance IsGObject DOMException where
+  toGObject = GObject . unDOMException
+  unsafeCastGObject = DOMException . unGObject
+#else
+-- TODO work out how we can support DOMException in native code
+#endif
+
+type GLenum = Word32
+type GLboolean = Bool
+type GLbitfield = Word32
+type GLbyte = Int8
+type GLshort = Int16
+type GLint = Int32
+type GLint64 = Int64
+type GLsizei = Int32
+type GLintptr = Int64
+type GLsizeiptr = Int64
+type GLubyte = Word8
+type GLushort = Word16
+type GLuint = Word32
+type GLuint64 = Word64
+type GLfloat = Double
+type GLclampf = Double
+
+-- AUTO GENERATION STARTS HERE
+-- The remainder of this file is generated from IDL files using domconv-webkit-jsffi
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.ANGLEInstancedArrays".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ANGLEInstancedArrays Mozilla ANGLEInstancedArrays documentation>
+newtype ANGLEInstancedArrays = ANGLEInstancedArrays { unANGLEInstancedArrays :: JSVal }
+
+instance PToJSVal ANGLEInstancedArrays where
+  pToJSVal = unANGLEInstancedArrays
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ANGLEInstancedArrays where
+  pFromJSVal = ANGLEInstancedArrays
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ANGLEInstancedArrays where
+  toJSVal = return . unANGLEInstancedArrays
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ANGLEInstancedArrays where
+  fromJSVal v = fmap ANGLEInstancedArrays <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject ANGLEInstancedArrays where
+  makeObject = makeObject . unANGLEInstancedArrays
+
+instance IsGObject ANGLEInstancedArrays where
+  toGObject = GObject . unANGLEInstancedArrays
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = ANGLEInstancedArrays . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToANGLEInstancedArrays :: IsGObject obj => obj -> JSM ANGLEInstancedArrays
+castToANGLEInstancedArrays = castTo gTypeANGLEInstancedArrays "ANGLEInstancedArrays"
+
+gTypeANGLEInstancedArrays :: JSM GType
+gTypeANGLEInstancedArrays = GType . Object <$> jsg "ANGLEInstancedArrays"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.AbstractView".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/AbstractView Mozilla AbstractView documentation>
+newtype AbstractView = AbstractView { unAbstractView :: JSVal }
+
+instance PToJSVal AbstractView where
+  pToJSVal = unAbstractView
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal AbstractView where
+  pFromJSVal = AbstractView
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal AbstractView where
+  toJSVal = return . unAbstractView
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal AbstractView where
+  fromJSVal v = fmap AbstractView <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject AbstractView where
+  makeObject = makeObject . unAbstractView
+
+instance IsGObject AbstractView where
+  toGObject = GObject . unAbstractView
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = AbstractView . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToAbstractView :: IsGObject obj => obj -> JSM AbstractView
+castToAbstractView = castTo gTypeAbstractView "AbstractView"
+
+gTypeAbstractView :: JSM GType
+gTypeAbstractView = GType . Object <$> jsg "AbstractView"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.AbstractWorker".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/AbstractWorker Mozilla AbstractWorker documentation>
+newtype AbstractWorker = AbstractWorker { unAbstractWorker :: JSVal }
+
+instance PToJSVal AbstractWorker where
+  pToJSVal = unAbstractWorker
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal AbstractWorker where
+  pFromJSVal = AbstractWorker
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal AbstractWorker where
+  toJSVal = return . unAbstractWorker
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal AbstractWorker where
+  fromJSVal v = fmap AbstractWorker <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject AbstractWorker where
+  makeObject = makeObject . unAbstractWorker
+
+instance IsGObject AbstractWorker where
+  toGObject = GObject . unAbstractWorker
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = AbstractWorker . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToAbstractWorker :: IsGObject obj => obj -> JSM AbstractWorker
+castToAbstractWorker = castTo gTypeAbstractWorker "AbstractWorker"
+
+gTypeAbstractWorker :: JSM GType
+gTypeAbstractWorker = GType . Object <$> jsg "AbstractWorker"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.AllAudioCapabilities".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.MediaStreamCapabilities"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/AllAudioCapabilities Mozilla AllAudioCapabilities documentation>
+newtype AllAudioCapabilities = AllAudioCapabilities { unAllAudioCapabilities :: JSVal }
+
+instance PToJSVal AllAudioCapabilities where
+  pToJSVal = unAllAudioCapabilities
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal AllAudioCapabilities where
+  pFromJSVal = AllAudioCapabilities
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal AllAudioCapabilities where
+  toJSVal = return . unAllAudioCapabilities
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal AllAudioCapabilities where
+  fromJSVal v = fmap AllAudioCapabilities <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject AllAudioCapabilities where
+  makeObject = makeObject . unAllAudioCapabilities
+
+instance IsMediaStreamCapabilities AllAudioCapabilities
+instance IsGObject AllAudioCapabilities where
+  toGObject = GObject . unAllAudioCapabilities
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = AllAudioCapabilities . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToAllAudioCapabilities :: IsGObject obj => obj -> JSM AllAudioCapabilities
+castToAllAudioCapabilities = castTo gTypeAllAudioCapabilities "AllAudioCapabilities"
+
+gTypeAllAudioCapabilities :: JSM GType
+gTypeAllAudioCapabilities = GType . Object <$> jsg "AllAudioCapabilities"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.AllVideoCapabilities".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.MediaStreamCapabilities"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/AllVideoCapabilities Mozilla AllVideoCapabilities documentation>
+newtype AllVideoCapabilities = AllVideoCapabilities { unAllVideoCapabilities :: JSVal }
+
+instance PToJSVal AllVideoCapabilities where
+  pToJSVal = unAllVideoCapabilities
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal AllVideoCapabilities where
+  pFromJSVal = AllVideoCapabilities
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal AllVideoCapabilities where
+  toJSVal = return . unAllVideoCapabilities
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal AllVideoCapabilities where
+  fromJSVal v = fmap AllVideoCapabilities <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject AllVideoCapabilities where
+  makeObject = makeObject . unAllVideoCapabilities
+
+instance IsMediaStreamCapabilities AllVideoCapabilities
+instance IsGObject AllVideoCapabilities where
+  toGObject = GObject . unAllVideoCapabilities
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = AllVideoCapabilities . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToAllVideoCapabilities :: IsGObject obj => obj -> JSM AllVideoCapabilities
+castToAllVideoCapabilities = castTo gTypeAllVideoCapabilities "AllVideoCapabilities"
+
+gTypeAllVideoCapabilities :: JSM GType
+gTypeAllVideoCapabilities = GType . Object <$> jsg "AllVideoCapabilities"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.AnalyserNode".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.AudioNode"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode Mozilla AnalyserNode documentation>
+newtype AnalyserNode = AnalyserNode { unAnalyserNode :: JSVal }
+
+instance PToJSVal AnalyserNode where
+  pToJSVal = unAnalyserNode
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal AnalyserNode where
+  pFromJSVal = AnalyserNode
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal AnalyserNode where
+  toJSVal = return . unAnalyserNode
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal AnalyserNode where
+  fromJSVal v = fmap AnalyserNode <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject AnalyserNode where
+  makeObject = makeObject . unAnalyserNode
+
+instance IsAudioNode AnalyserNode
+instance IsEventTarget AnalyserNode
+instance IsGObject AnalyserNode where
+  toGObject = GObject . unAnalyserNode
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = AnalyserNode . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToAnalyserNode :: IsGObject obj => obj -> JSM AnalyserNode
+castToAnalyserNode = castTo gTypeAnalyserNode "AnalyserNode"
+
+gTypeAnalyserNode :: JSM GType
+gTypeAnalyserNode = GType . Object <$> jsg "AnalyserNode"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.AnimationEvent".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/AnimationEvent Mozilla AnimationEvent documentation>
+newtype AnimationEvent = AnimationEvent { unAnimationEvent :: JSVal }
+
+instance PToJSVal AnimationEvent where
+  pToJSVal = unAnimationEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal AnimationEvent where
+  pFromJSVal = AnimationEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal AnimationEvent where
+  toJSVal = return . unAnimationEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal AnimationEvent where
+  fromJSVal v = fmap AnimationEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject AnimationEvent where
+  makeObject = makeObject . unAnimationEvent
+
+instance IsEvent AnimationEvent
+instance IsGObject AnimationEvent where
+  toGObject = GObject . unAnimationEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = AnimationEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToAnimationEvent :: IsGObject obj => obj -> JSM AnimationEvent
+castToAnimationEvent = castTo gTypeAnimationEvent "AnimationEvent"
+
+gTypeAnimationEvent :: JSM GType
+gTypeAnimationEvent = GType . Object <$> jsg "AnimationEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.ApplicationCache".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ApplicationCache Mozilla ApplicationCache documentation>
+newtype ApplicationCache = ApplicationCache { unApplicationCache :: JSVal }
+
+instance PToJSVal ApplicationCache where
+  pToJSVal = unApplicationCache
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ApplicationCache where
+  pFromJSVal = ApplicationCache
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ApplicationCache where
+  toJSVal = return . unApplicationCache
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ApplicationCache where
+  fromJSVal v = fmap ApplicationCache <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject ApplicationCache where
+  makeObject = makeObject . unApplicationCache
+
+instance IsEventTarget ApplicationCache
+instance IsGObject ApplicationCache where
+  toGObject = GObject . unApplicationCache
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = ApplicationCache . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToApplicationCache :: IsGObject obj => obj -> JSM ApplicationCache
+castToApplicationCache = castTo gTypeApplicationCache "ApplicationCache"
+
+gTypeApplicationCache :: JSM GType
+gTypeApplicationCache = GType . Object <$> jsg "ApplicationCache"
+#else
+type IsApplicationCache o = ApplicationCacheClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.Attr".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Attr Mozilla Attr documentation>
+newtype Attr = Attr { unAttr :: JSVal }
+
+instance PToJSVal Attr where
+  pToJSVal = unAttr
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Attr where
+  pFromJSVal = Attr
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Attr where
+  toJSVal = return . unAttr
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Attr where
+  fromJSVal v = fmap Attr <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject Attr where
+  makeObject = makeObject . unAttr
+
+instance IsNode Attr
+instance IsEventTarget Attr
+instance IsGObject Attr where
+  toGObject = GObject . unAttr
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Attr . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToAttr :: IsGObject obj => obj -> JSM Attr
+castToAttr = castTo gTypeAttr "Attr"
+
+gTypeAttr :: JSM GType
+gTypeAttr = GType . Object <$> jsg "Attr"
+#else
+type IsAttr o = AttrClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.AudioBuffer".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/AudioBuffer Mozilla AudioBuffer documentation>
+newtype AudioBuffer = AudioBuffer { unAudioBuffer :: JSVal }
+
+instance PToJSVal AudioBuffer where
+  pToJSVal = unAudioBuffer
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal AudioBuffer where
+  pFromJSVal = AudioBuffer
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal AudioBuffer where
+  toJSVal = return . unAudioBuffer
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal AudioBuffer where
+  fromJSVal v = fmap AudioBuffer <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject AudioBuffer where
+  makeObject = makeObject . unAudioBuffer
+
+instance IsGObject AudioBuffer where
+  toGObject = GObject . unAudioBuffer
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = AudioBuffer . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToAudioBuffer :: IsGObject obj => obj -> JSM AudioBuffer
+castToAudioBuffer = castTo gTypeAudioBuffer "AudioBuffer"
+
+gTypeAudioBuffer :: JSM GType
+gTypeAudioBuffer = GType . Object <$> jsg "AudioBuffer"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.AudioBufferSourceNode".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.AudioNode"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode Mozilla AudioBufferSourceNode documentation>
+newtype AudioBufferSourceNode = AudioBufferSourceNode { unAudioBufferSourceNode :: JSVal }
+
+instance PToJSVal AudioBufferSourceNode where
+  pToJSVal = unAudioBufferSourceNode
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal AudioBufferSourceNode where
+  pFromJSVal = AudioBufferSourceNode
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal AudioBufferSourceNode where
+  toJSVal = return . unAudioBufferSourceNode
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal AudioBufferSourceNode where
+  fromJSVal v = fmap AudioBufferSourceNode <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject AudioBufferSourceNode where
+  makeObject = makeObject . unAudioBufferSourceNode
+
+instance IsAudioNode AudioBufferSourceNode
+instance IsEventTarget AudioBufferSourceNode
+instance IsGObject AudioBufferSourceNode where
+  toGObject = GObject . unAudioBufferSourceNode
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = AudioBufferSourceNode . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToAudioBufferSourceNode :: IsGObject obj => obj -> JSM AudioBufferSourceNode
+castToAudioBufferSourceNode = castTo gTypeAudioBufferSourceNode "AudioBufferSourceNode"
+
+gTypeAudioBufferSourceNode :: JSM GType
+gTypeAudioBufferSourceNode = GType . Object <$> jsg "AudioBufferSourceNode"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.AudioContext".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext Mozilla AudioContext documentation>
+newtype AudioContext = AudioContext { unAudioContext :: JSVal }
+
+instance PToJSVal AudioContext where
+  pToJSVal = unAudioContext
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal AudioContext where
+  pFromJSVal = AudioContext
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal AudioContext where
+  toJSVal = return . unAudioContext
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal AudioContext where
+  fromJSVal v = fmap AudioContext <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject AudioContext where
+  makeObject = makeObject . unAudioContext
+
+class IsEventTarget o => IsAudioContext o
+toAudioContext :: IsAudioContext o => o -> AudioContext
+toAudioContext = unsafeCastGObject . toGObject
+
+instance IsAudioContext AudioContext
+instance IsEventTarget AudioContext
+instance IsGObject AudioContext where
+  toGObject = GObject . unAudioContext
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = AudioContext . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToAudioContext :: IsGObject obj => obj -> JSM AudioContext
+castToAudioContext = castTo gTypeAudioContext "AudioContext"
+
+gTypeAudioContext :: JSM GType
+gTypeAudioContext = GType . Object <$> jsg "AudioContext"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.AudioDestinationNode".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.AudioNode"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/AudioDestinationNode Mozilla AudioDestinationNode documentation>
+newtype AudioDestinationNode = AudioDestinationNode { unAudioDestinationNode :: JSVal }
+
+instance PToJSVal AudioDestinationNode where
+  pToJSVal = unAudioDestinationNode
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal AudioDestinationNode where
+  pFromJSVal = AudioDestinationNode
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal AudioDestinationNode where
+  toJSVal = return . unAudioDestinationNode
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal AudioDestinationNode where
+  fromJSVal v = fmap AudioDestinationNode <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject AudioDestinationNode where
+  makeObject = makeObject . unAudioDestinationNode
+
+instance IsAudioNode AudioDestinationNode
+instance IsEventTarget AudioDestinationNode
+instance IsGObject AudioDestinationNode where
+  toGObject = GObject . unAudioDestinationNode
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = AudioDestinationNode . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToAudioDestinationNode :: IsGObject obj => obj -> JSM AudioDestinationNode
+castToAudioDestinationNode = castTo gTypeAudioDestinationNode "AudioDestinationNode"
+
+gTypeAudioDestinationNode :: JSM GType
+gTypeAudioDestinationNode = GType . Object <$> jsg "AudioDestinationNode"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.AudioListener".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/AudioListener Mozilla AudioListener documentation>
+newtype AudioListener = AudioListener { unAudioListener :: JSVal }
+
+instance PToJSVal AudioListener where
+  pToJSVal = unAudioListener
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal AudioListener where
+  pFromJSVal = AudioListener
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal AudioListener where
+  toJSVal = return . unAudioListener
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal AudioListener where
+  fromJSVal v = fmap AudioListener <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject AudioListener where
+  makeObject = makeObject . unAudioListener
+
+instance IsGObject AudioListener where
+  toGObject = GObject . unAudioListener
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = AudioListener . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToAudioListener :: IsGObject obj => obj -> JSM AudioListener
+castToAudioListener = castTo gTypeAudioListener "AudioListener"
+
+gTypeAudioListener :: JSM GType
+gTypeAudioListener = GType . Object <$> jsg "AudioListener"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.AudioNode".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/AudioNode Mozilla AudioNode documentation>
+newtype AudioNode = AudioNode { unAudioNode :: JSVal }
+
+instance PToJSVal AudioNode where
+  pToJSVal = unAudioNode
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal AudioNode where
+  pFromJSVal = AudioNode
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal AudioNode where
+  toJSVal = return . unAudioNode
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal AudioNode where
+  fromJSVal v = fmap AudioNode <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject AudioNode where
+  makeObject = makeObject . unAudioNode
+
+class IsEventTarget o => IsAudioNode o
+toAudioNode :: IsAudioNode o => o -> AudioNode
+toAudioNode = unsafeCastGObject . toGObject
+
+instance IsAudioNode AudioNode
+instance IsEventTarget AudioNode
+instance IsGObject AudioNode where
+  toGObject = GObject . unAudioNode
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = AudioNode . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToAudioNode :: IsGObject obj => obj -> JSM AudioNode
+castToAudioNode = castTo gTypeAudioNode "AudioNode"
+
+gTypeAudioNode :: JSM GType
+gTypeAudioNode = GType . Object <$> jsg "AudioNode"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.AudioParam".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/AudioParam Mozilla AudioParam documentation>
+newtype AudioParam = AudioParam { unAudioParam :: JSVal }
+
+instance PToJSVal AudioParam where
+  pToJSVal = unAudioParam
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal AudioParam where
+  pFromJSVal = AudioParam
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal AudioParam where
+  toJSVal = return . unAudioParam
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal AudioParam where
+  fromJSVal v = fmap AudioParam <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject AudioParam where
+  makeObject = makeObject . unAudioParam
+
+instance IsGObject AudioParam where
+  toGObject = GObject . unAudioParam
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = AudioParam . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToAudioParam :: IsGObject obj => obj -> JSM AudioParam
+castToAudioParam = castTo gTypeAudioParam "AudioParam"
+
+gTypeAudioParam :: JSM GType
+gTypeAudioParam = GType . Object <$> jsg "AudioParam"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.AudioProcessingEvent".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/AudioProcessingEvent Mozilla AudioProcessingEvent documentation>
+newtype AudioProcessingEvent = AudioProcessingEvent { unAudioProcessingEvent :: JSVal }
+
+instance PToJSVal AudioProcessingEvent where
+  pToJSVal = unAudioProcessingEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal AudioProcessingEvent where
+  pFromJSVal = AudioProcessingEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal AudioProcessingEvent where
+  toJSVal = return . unAudioProcessingEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal AudioProcessingEvent where
+  fromJSVal v = fmap AudioProcessingEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject AudioProcessingEvent where
+  makeObject = makeObject . unAudioProcessingEvent
+
+instance IsEvent AudioProcessingEvent
+instance IsGObject AudioProcessingEvent where
+  toGObject = GObject . unAudioProcessingEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = AudioProcessingEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToAudioProcessingEvent :: IsGObject obj => obj -> JSM AudioProcessingEvent
+castToAudioProcessingEvent = castTo gTypeAudioProcessingEvent "AudioProcessingEvent"
+
+gTypeAudioProcessingEvent :: JSM GType
+gTypeAudioProcessingEvent = GType . Object <$> jsg "AudioProcessingEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.AudioStreamTrack".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.MediaStreamTrack"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/AudioStreamTrack Mozilla AudioStreamTrack documentation>
+newtype AudioStreamTrack = AudioStreamTrack { unAudioStreamTrack :: JSVal }
+
+instance PToJSVal AudioStreamTrack where
+  pToJSVal = unAudioStreamTrack
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal AudioStreamTrack where
+  pFromJSVal = AudioStreamTrack
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal AudioStreamTrack where
+  toJSVal = return . unAudioStreamTrack
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal AudioStreamTrack where
+  fromJSVal v = fmap AudioStreamTrack <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject AudioStreamTrack where
+  makeObject = makeObject . unAudioStreamTrack
+
+instance IsMediaStreamTrack AudioStreamTrack
+instance IsEventTarget AudioStreamTrack
+instance IsGObject AudioStreamTrack where
+  toGObject = GObject . unAudioStreamTrack
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = AudioStreamTrack . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToAudioStreamTrack :: IsGObject obj => obj -> JSM AudioStreamTrack
+castToAudioStreamTrack = castTo gTypeAudioStreamTrack "AudioStreamTrack"
+
+gTypeAudioStreamTrack :: JSM GType
+gTypeAudioStreamTrack = GType . Object <$> jsg "AudioStreamTrack"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.AudioTrack".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrack Mozilla AudioTrack documentation>
+newtype AudioTrack = AudioTrack { unAudioTrack :: JSVal }
+
+instance PToJSVal AudioTrack where
+  pToJSVal = unAudioTrack
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal AudioTrack where
+  pFromJSVal = AudioTrack
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal AudioTrack where
+  toJSVal = return . unAudioTrack
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal AudioTrack where
+  fromJSVal v = fmap AudioTrack <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject AudioTrack where
+  makeObject = makeObject . unAudioTrack
+
+instance IsGObject AudioTrack where
+  toGObject = GObject . unAudioTrack
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = AudioTrack . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToAudioTrack :: IsGObject obj => obj -> JSM AudioTrack
+castToAudioTrack = castTo gTypeAudioTrack "AudioTrack"
+
+gTypeAudioTrack :: JSM GType
+gTypeAudioTrack = GType . Object <$> jsg "AudioTrack"
+#else
+#ifndef USE_OLD_WEBKIT
+type IsAudioTrack o = AudioTrackClass o
+#endif
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.AudioTrackList".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrackList Mozilla AudioTrackList documentation>
+newtype AudioTrackList = AudioTrackList { unAudioTrackList :: JSVal }
+
+instance PToJSVal AudioTrackList where
+  pToJSVal = unAudioTrackList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal AudioTrackList where
+  pFromJSVal = AudioTrackList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal AudioTrackList where
+  toJSVal = return . unAudioTrackList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal AudioTrackList where
+  fromJSVal v = fmap AudioTrackList <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject AudioTrackList where
+  makeObject = makeObject . unAudioTrackList
+
+instance IsEventTarget AudioTrackList
+instance IsGObject AudioTrackList where
+  toGObject = GObject . unAudioTrackList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = AudioTrackList . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToAudioTrackList :: IsGObject obj => obj -> JSM AudioTrackList
+castToAudioTrackList = castTo gTypeAudioTrackList "AudioTrackList"
+
+gTypeAudioTrackList :: JSM GType
+gTypeAudioTrackList = GType . Object <$> jsg "AudioTrackList"
+#else
+#ifndef USE_OLD_WEBKIT
+type IsAudioTrackList o = AudioTrackListClass o
+#endif
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.AutocompleteErrorEvent".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/AutocompleteErrorEvent Mozilla AutocompleteErrorEvent documentation>
+newtype AutocompleteErrorEvent = AutocompleteErrorEvent { unAutocompleteErrorEvent :: JSVal }
+
+instance PToJSVal AutocompleteErrorEvent where
+  pToJSVal = unAutocompleteErrorEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal AutocompleteErrorEvent where
+  pFromJSVal = AutocompleteErrorEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal AutocompleteErrorEvent where
+  toJSVal = return . unAutocompleteErrorEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal AutocompleteErrorEvent where
+  fromJSVal v = fmap AutocompleteErrorEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject AutocompleteErrorEvent where
+  makeObject = makeObject . unAutocompleteErrorEvent
+
+instance IsEvent AutocompleteErrorEvent
+instance IsGObject AutocompleteErrorEvent where
+  toGObject = GObject . unAutocompleteErrorEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = AutocompleteErrorEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToAutocompleteErrorEvent :: IsGObject obj => obj -> JSM AutocompleteErrorEvent
+castToAutocompleteErrorEvent = castTo gTypeAutocompleteErrorEvent "AutocompleteErrorEvent"
+
+gTypeAutocompleteErrorEvent :: JSM GType
+gTypeAutocompleteErrorEvent = GType . Object <$> jsg "AutocompleteErrorEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.BarProp".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/BarProp Mozilla BarProp documentation>
+newtype BarProp = BarProp { unBarProp :: JSVal }
+
+instance PToJSVal BarProp where
+  pToJSVal = unBarProp
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal BarProp where
+  pFromJSVal = BarProp
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal BarProp where
+  toJSVal = return . unBarProp
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal BarProp where
+  fromJSVal v = fmap BarProp <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject BarProp where
+  makeObject = makeObject . unBarProp
+
+instance IsGObject BarProp where
+  toGObject = GObject . unBarProp
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = BarProp . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToBarProp :: IsGObject obj => obj -> JSM BarProp
+castToBarProp = castTo gTypeBarProp "BarProp"
+
+gTypeBarProp :: JSM GType
+gTypeBarProp = GType . Object <$> jsg "BarProp"
+#else
+#ifndef USE_OLD_WEBKIT
+type IsBarProp o = BarPropClass o
+#endif
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.BatteryManager".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/BatteryManager Mozilla BatteryManager documentation>
+newtype BatteryManager = BatteryManager { unBatteryManager :: JSVal }
+
+instance PToJSVal BatteryManager where
+  pToJSVal = unBatteryManager
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal BatteryManager where
+  pFromJSVal = BatteryManager
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal BatteryManager where
+  toJSVal = return . unBatteryManager
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal BatteryManager where
+  fromJSVal v = fmap BatteryManager <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject BatteryManager where
+  makeObject = makeObject . unBatteryManager
+
+instance IsEventTarget BatteryManager
+instance IsGObject BatteryManager where
+  toGObject = GObject . unBatteryManager
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = BatteryManager . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToBatteryManager :: IsGObject obj => obj -> JSM BatteryManager
+castToBatteryManager = castTo gTypeBatteryManager "BatteryManager"
+
+gTypeBatteryManager :: JSM GType
+gTypeBatteryManager = GType . Object <$> jsg "BatteryManager"
+#else
+#ifndef USE_OLD_WEBKIT
+type IsBatteryManager o = BatteryManagerClass o
+#endif
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.BeforeLoadEvent".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/BeforeLoadEvent Mozilla BeforeLoadEvent documentation>
+newtype BeforeLoadEvent = BeforeLoadEvent { unBeforeLoadEvent :: JSVal }
+
+instance PToJSVal BeforeLoadEvent where
+  pToJSVal = unBeforeLoadEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal BeforeLoadEvent where
+  pFromJSVal = BeforeLoadEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal BeforeLoadEvent where
+  toJSVal = return . unBeforeLoadEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal BeforeLoadEvent where
+  fromJSVal v = fmap BeforeLoadEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject BeforeLoadEvent where
+  makeObject = makeObject . unBeforeLoadEvent
+
+instance IsEvent BeforeLoadEvent
+instance IsGObject BeforeLoadEvent where
+  toGObject = GObject . unBeforeLoadEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = BeforeLoadEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToBeforeLoadEvent :: IsGObject obj => obj -> JSM BeforeLoadEvent
+castToBeforeLoadEvent = castTo gTypeBeforeLoadEvent "BeforeLoadEvent"
+
+gTypeBeforeLoadEvent :: JSM GType
+gTypeBeforeLoadEvent = GType . Object <$> jsg "BeforeLoadEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.BeforeUnloadEvent".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/BeforeUnloadEvent Mozilla BeforeUnloadEvent documentation>
+newtype BeforeUnloadEvent = BeforeUnloadEvent { unBeforeUnloadEvent :: JSVal }
+
+instance PToJSVal BeforeUnloadEvent where
+  pToJSVal = unBeforeUnloadEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal BeforeUnloadEvent where
+  pFromJSVal = BeforeUnloadEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal BeforeUnloadEvent where
+  toJSVal = return . unBeforeUnloadEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal BeforeUnloadEvent where
+  fromJSVal v = fmap BeforeUnloadEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject BeforeUnloadEvent where
+  makeObject = makeObject . unBeforeUnloadEvent
+
+instance IsEvent BeforeUnloadEvent
+instance IsGObject BeforeUnloadEvent where
+  toGObject = GObject . unBeforeUnloadEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = BeforeUnloadEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToBeforeUnloadEvent :: IsGObject obj => obj -> JSM BeforeUnloadEvent
+castToBeforeUnloadEvent = castTo gTypeBeforeUnloadEvent "BeforeUnloadEvent"
+
+gTypeBeforeUnloadEvent :: JSM GType
+gTypeBeforeUnloadEvent = GType . Object <$> jsg "BeforeUnloadEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.BiquadFilterNode".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.AudioNode"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode Mozilla BiquadFilterNode documentation>
+newtype BiquadFilterNode = BiquadFilterNode { unBiquadFilterNode :: JSVal }
+
+instance PToJSVal BiquadFilterNode where
+  pToJSVal = unBiquadFilterNode
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal BiquadFilterNode where
+  pFromJSVal = BiquadFilterNode
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal BiquadFilterNode where
+  toJSVal = return . unBiquadFilterNode
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal BiquadFilterNode where
+  fromJSVal v = fmap BiquadFilterNode <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject BiquadFilterNode where
+  makeObject = makeObject . unBiquadFilterNode
+
+instance IsAudioNode BiquadFilterNode
+instance IsEventTarget BiquadFilterNode
+instance IsGObject BiquadFilterNode where
+  toGObject = GObject . unBiquadFilterNode
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = BiquadFilterNode . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToBiquadFilterNode :: IsGObject obj => obj -> JSM BiquadFilterNode
+castToBiquadFilterNode = castTo gTypeBiquadFilterNode "BiquadFilterNode"
+
+gTypeBiquadFilterNode :: JSM GType
+gTypeBiquadFilterNode = GType . Object <$> jsg "BiquadFilterNode"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.Blob".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Blob Mozilla Blob documentation>
+newtype Blob = Blob { unBlob :: JSVal }
+
+instance PToJSVal Blob where
+  pToJSVal = unBlob
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Blob where
+  pFromJSVal = Blob
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Blob where
+  toJSVal = return . unBlob
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Blob where
+  fromJSVal v = fmap Blob <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject Blob where
+  makeObject = makeObject . unBlob
+
+class IsGObject o => IsBlob o
+toBlob :: IsBlob o => o -> Blob
+toBlob = unsafeCastGObject . toGObject
+
+instance IsBlob Blob
+instance IsGObject Blob where
+  toGObject = GObject . unBlob
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Blob . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToBlob :: IsGObject obj => obj -> JSM Blob
+castToBlob = castTo gTypeBlob "Blob"
+
+gTypeBlob :: JSM GType
+gTypeBlob = GType . Object <$> jsg "Blob"
+#else
+type IsBlob o = BlobClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.CDATASection".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.Text"
+--     * "Language.Javascript.JSaddle.DOM.CharacterData"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CDATASection Mozilla CDATASection documentation>
+newtype CDATASection = CDATASection { unCDATASection :: JSVal }
+
+instance PToJSVal CDATASection where
+  pToJSVal = unCDATASection
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CDATASection where
+  pFromJSVal = CDATASection
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CDATASection where
+  toJSVal = return . unCDATASection
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CDATASection where
+  fromJSVal v = fmap CDATASection <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject CDATASection where
+  makeObject = makeObject . unCDATASection
+
+instance IsText CDATASection
+instance IsCharacterData CDATASection
+instance IsNode CDATASection
+instance IsEventTarget CDATASection
+instance IsGObject CDATASection where
+  toGObject = GObject . unCDATASection
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CDATASection . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCDATASection :: IsGObject obj => obj -> JSM CDATASection
+castToCDATASection = castTo gTypeCDATASection "CDATASection"
+
+gTypeCDATASection :: JSM GType
+gTypeCDATASection = GType . Object <$> jsg "CDATASection"
+#else
+type IsCDATASection o = CDATASectionClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.CSS".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CSS Mozilla CSS documentation>
+newtype CSS = CSS { unCSS :: JSVal }
+
+instance PToJSVal CSS where
+  pToJSVal = unCSS
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CSS where
+  pFromJSVal = CSS
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CSS where
+  toJSVal = return . unCSS
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CSS where
+  fromJSVal v = fmap CSS <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject CSS where
+  makeObject = makeObject . unCSS
+
+instance IsGObject CSS where
+  toGObject = GObject . unCSS
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CSS . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCSS :: IsGObject obj => obj -> JSM CSS
+castToCSS = castTo gTypeCSS "CSS"
+
+gTypeCSS :: JSM GType
+gTypeCSS = GType . Object <$> jsg "CSS"
+#else
+#ifndef USE_OLD_WEBKIT
+type IsCSS o = CSSClass o
+#endif
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.CSSCharsetRule".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.CSSRule"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CSSCharsetRule Mozilla CSSCharsetRule documentation>
+newtype CSSCharsetRule = CSSCharsetRule { unCSSCharsetRule :: JSVal }
+
+instance PToJSVal CSSCharsetRule where
+  pToJSVal = unCSSCharsetRule
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CSSCharsetRule where
+  pFromJSVal = CSSCharsetRule
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CSSCharsetRule where
+  toJSVal = return . unCSSCharsetRule
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CSSCharsetRule where
+  fromJSVal v = fmap CSSCharsetRule <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject CSSCharsetRule where
+  makeObject = makeObject . unCSSCharsetRule
+
+instance IsCSSRule CSSCharsetRule
+instance IsGObject CSSCharsetRule where
+  toGObject = GObject . unCSSCharsetRule
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CSSCharsetRule . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCSSCharsetRule :: IsGObject obj => obj -> JSM CSSCharsetRule
+castToCSSCharsetRule = castTo gTypeCSSCharsetRule "CSSCharsetRule"
+
+gTypeCSSCharsetRule :: JSM GType
+gTypeCSSCharsetRule = GType . Object <$> jsg "CSSCharsetRule"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.CSSFontFaceLoadEvent".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CSSFontFaceLoadEvent Mozilla CSSFontFaceLoadEvent documentation>
+newtype CSSFontFaceLoadEvent = CSSFontFaceLoadEvent { unCSSFontFaceLoadEvent :: JSVal }
+
+instance PToJSVal CSSFontFaceLoadEvent where
+  pToJSVal = unCSSFontFaceLoadEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CSSFontFaceLoadEvent where
+  pFromJSVal = CSSFontFaceLoadEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CSSFontFaceLoadEvent where
+  toJSVal = return . unCSSFontFaceLoadEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CSSFontFaceLoadEvent where
+  fromJSVal v = fmap CSSFontFaceLoadEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject CSSFontFaceLoadEvent where
+  makeObject = makeObject . unCSSFontFaceLoadEvent
+
+instance IsEvent CSSFontFaceLoadEvent
+instance IsGObject CSSFontFaceLoadEvent where
+  toGObject = GObject . unCSSFontFaceLoadEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CSSFontFaceLoadEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCSSFontFaceLoadEvent :: IsGObject obj => obj -> JSM CSSFontFaceLoadEvent
+castToCSSFontFaceLoadEvent = castTo gTypeCSSFontFaceLoadEvent "CSSFontFaceLoadEvent"
+
+gTypeCSSFontFaceLoadEvent :: JSM GType
+gTypeCSSFontFaceLoadEvent = GType . Object <$> jsg "CSSFontFaceLoadEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.CSSFontFaceRule".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.CSSRule"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CSSFontFaceRule Mozilla CSSFontFaceRule documentation>
+newtype CSSFontFaceRule = CSSFontFaceRule { unCSSFontFaceRule :: JSVal }
+
+instance PToJSVal CSSFontFaceRule where
+  pToJSVal = unCSSFontFaceRule
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CSSFontFaceRule where
+  pFromJSVal = CSSFontFaceRule
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CSSFontFaceRule where
+  toJSVal = return . unCSSFontFaceRule
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CSSFontFaceRule where
+  fromJSVal v = fmap CSSFontFaceRule <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject CSSFontFaceRule where
+  makeObject = makeObject . unCSSFontFaceRule
+
+instance IsCSSRule CSSFontFaceRule
+instance IsGObject CSSFontFaceRule where
+  toGObject = GObject . unCSSFontFaceRule
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CSSFontFaceRule . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCSSFontFaceRule :: IsGObject obj => obj -> JSM CSSFontFaceRule
+castToCSSFontFaceRule = castTo gTypeCSSFontFaceRule "CSSFontFaceRule"
+
+gTypeCSSFontFaceRule :: JSM GType
+gTypeCSSFontFaceRule = GType . Object <$> jsg "CSSFontFaceRule"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.CSSImportRule".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.CSSRule"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CSSImportRule Mozilla CSSImportRule documentation>
+newtype CSSImportRule = CSSImportRule { unCSSImportRule :: JSVal }
+
+instance PToJSVal CSSImportRule where
+  pToJSVal = unCSSImportRule
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CSSImportRule where
+  pFromJSVal = CSSImportRule
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CSSImportRule where
+  toJSVal = return . unCSSImportRule
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CSSImportRule where
+  fromJSVal v = fmap CSSImportRule <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject CSSImportRule where
+  makeObject = makeObject . unCSSImportRule
+
+instance IsCSSRule CSSImportRule
+instance IsGObject CSSImportRule where
+  toGObject = GObject . unCSSImportRule
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CSSImportRule . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCSSImportRule :: IsGObject obj => obj -> JSM CSSImportRule
+castToCSSImportRule = castTo gTypeCSSImportRule "CSSImportRule"
+
+gTypeCSSImportRule :: JSM GType
+gTypeCSSImportRule = GType . Object <$> jsg "CSSImportRule"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.CSSKeyframeRule".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.CSSRule"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframeRule Mozilla CSSKeyframeRule documentation>
+newtype CSSKeyframeRule = CSSKeyframeRule { unCSSKeyframeRule :: JSVal }
+
+instance PToJSVal CSSKeyframeRule where
+  pToJSVal = unCSSKeyframeRule
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CSSKeyframeRule where
+  pFromJSVal = CSSKeyframeRule
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CSSKeyframeRule where
+  toJSVal = return . unCSSKeyframeRule
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CSSKeyframeRule where
+  fromJSVal v = fmap CSSKeyframeRule <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject CSSKeyframeRule where
+  makeObject = makeObject . unCSSKeyframeRule
+
+instance IsCSSRule CSSKeyframeRule
+instance IsGObject CSSKeyframeRule where
+  toGObject = GObject . unCSSKeyframeRule
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CSSKeyframeRule . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCSSKeyframeRule :: IsGObject obj => obj -> JSM CSSKeyframeRule
+castToCSSKeyframeRule = castTo gTypeCSSKeyframeRule "CSSKeyframeRule"
+
+gTypeCSSKeyframeRule :: JSM GType
+gTypeCSSKeyframeRule = GType . Object <$> jsg "CSSKeyframeRule"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.CSSKeyframesRule".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.CSSRule"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframesRule Mozilla CSSKeyframesRule documentation>
+newtype CSSKeyframesRule = CSSKeyframesRule { unCSSKeyframesRule :: JSVal }
+
+instance PToJSVal CSSKeyframesRule where
+  pToJSVal = unCSSKeyframesRule
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CSSKeyframesRule where
+  pFromJSVal = CSSKeyframesRule
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CSSKeyframesRule where
+  toJSVal = return . unCSSKeyframesRule
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CSSKeyframesRule where
+  fromJSVal v = fmap CSSKeyframesRule <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject CSSKeyframesRule where
+  makeObject = makeObject . unCSSKeyframesRule
+
+instance IsCSSRule CSSKeyframesRule
+instance IsGObject CSSKeyframesRule where
+  toGObject = GObject . unCSSKeyframesRule
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CSSKeyframesRule . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCSSKeyframesRule :: IsGObject obj => obj -> JSM CSSKeyframesRule
+castToCSSKeyframesRule = castTo gTypeCSSKeyframesRule "CSSKeyframesRule"
+
+gTypeCSSKeyframesRule :: JSM GType
+gTypeCSSKeyframesRule = GType . Object <$> jsg "CSSKeyframesRule"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.CSSMediaRule".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.CSSRule"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CSSMediaRule Mozilla CSSMediaRule documentation>
+newtype CSSMediaRule = CSSMediaRule { unCSSMediaRule :: JSVal }
+
+instance PToJSVal CSSMediaRule where
+  pToJSVal = unCSSMediaRule
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CSSMediaRule where
+  pFromJSVal = CSSMediaRule
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CSSMediaRule where
+  toJSVal = return . unCSSMediaRule
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CSSMediaRule where
+  fromJSVal v = fmap CSSMediaRule <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject CSSMediaRule where
+  makeObject = makeObject . unCSSMediaRule
+
+instance IsCSSRule CSSMediaRule
+instance IsGObject CSSMediaRule where
+  toGObject = GObject . unCSSMediaRule
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CSSMediaRule . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCSSMediaRule :: IsGObject obj => obj -> JSM CSSMediaRule
+castToCSSMediaRule = castTo gTypeCSSMediaRule "CSSMediaRule"
+
+gTypeCSSMediaRule :: JSM GType
+gTypeCSSMediaRule = GType . Object <$> jsg "CSSMediaRule"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.CSSPageRule".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.CSSRule"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CSSPageRule Mozilla CSSPageRule documentation>
+newtype CSSPageRule = CSSPageRule { unCSSPageRule :: JSVal }
+
+instance PToJSVal CSSPageRule where
+  pToJSVal = unCSSPageRule
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CSSPageRule where
+  pFromJSVal = CSSPageRule
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CSSPageRule where
+  toJSVal = return . unCSSPageRule
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CSSPageRule where
+  fromJSVal v = fmap CSSPageRule <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject CSSPageRule where
+  makeObject = makeObject . unCSSPageRule
+
+instance IsCSSRule CSSPageRule
+instance IsGObject CSSPageRule where
+  toGObject = GObject . unCSSPageRule
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CSSPageRule . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCSSPageRule :: IsGObject obj => obj -> JSM CSSPageRule
+castToCSSPageRule = castTo gTypeCSSPageRule "CSSPageRule"
+
+gTypeCSSPageRule :: JSM GType
+gTypeCSSPageRule = GType . Object <$> jsg "CSSPageRule"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.CSSPrimitiveValue".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.CSSValue"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CSSPrimitiveValue Mozilla CSSPrimitiveValue documentation>
+newtype CSSPrimitiveValue = CSSPrimitiveValue { unCSSPrimitiveValue :: JSVal }
+
+instance PToJSVal CSSPrimitiveValue where
+  pToJSVal = unCSSPrimitiveValue
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CSSPrimitiveValue where
+  pFromJSVal = CSSPrimitiveValue
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CSSPrimitiveValue where
+  toJSVal = return . unCSSPrimitiveValue
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CSSPrimitiveValue where
+  fromJSVal v = fmap CSSPrimitiveValue <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject CSSPrimitiveValue where
+  makeObject = makeObject . unCSSPrimitiveValue
+
+instance IsCSSValue CSSPrimitiveValue
+instance IsGObject CSSPrimitiveValue where
+  toGObject = GObject . unCSSPrimitiveValue
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CSSPrimitiveValue . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCSSPrimitiveValue :: IsGObject obj => obj -> JSM CSSPrimitiveValue
+castToCSSPrimitiveValue = castTo gTypeCSSPrimitiveValue "CSSPrimitiveValue"
+
+gTypeCSSPrimitiveValue :: JSM GType
+gTypeCSSPrimitiveValue = GType . Object <$> jsg "CSSPrimitiveValue"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.CSSRule".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CSSRule Mozilla CSSRule documentation>
+newtype CSSRule = CSSRule { unCSSRule :: JSVal }
+
+instance PToJSVal CSSRule where
+  pToJSVal = unCSSRule
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CSSRule where
+  pFromJSVal = CSSRule
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CSSRule where
+  toJSVal = return . unCSSRule
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CSSRule where
+  fromJSVal v = fmap CSSRule <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject CSSRule where
+  makeObject = makeObject . unCSSRule
+
+class IsGObject o => IsCSSRule o
+toCSSRule :: IsCSSRule o => o -> CSSRule
+toCSSRule = unsafeCastGObject . toGObject
+
+instance IsCSSRule CSSRule
+instance IsGObject CSSRule where
+  toGObject = GObject . unCSSRule
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CSSRule . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCSSRule :: IsGObject obj => obj -> JSM CSSRule
+castToCSSRule = castTo gTypeCSSRule "CSSRule"
+
+gTypeCSSRule :: JSM GType
+gTypeCSSRule = GType . Object <$> jsg "CSSRule"
+#else
+type IsCSSRule o = CSSRuleClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.CSSRuleList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CSSRuleList Mozilla CSSRuleList documentation>
+newtype CSSRuleList = CSSRuleList { unCSSRuleList :: JSVal }
+
+instance PToJSVal CSSRuleList where
+  pToJSVal = unCSSRuleList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CSSRuleList where
+  pFromJSVal = CSSRuleList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CSSRuleList where
+  toJSVal = return . unCSSRuleList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CSSRuleList where
+  fromJSVal v = fmap CSSRuleList <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject CSSRuleList where
+  makeObject = makeObject . unCSSRuleList
+
+instance IsGObject CSSRuleList where
+  toGObject = GObject . unCSSRuleList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CSSRuleList . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCSSRuleList :: IsGObject obj => obj -> JSM CSSRuleList
+castToCSSRuleList = castTo gTypeCSSRuleList "CSSRuleList"
+
+gTypeCSSRuleList :: JSM GType
+gTypeCSSRuleList = GType . Object <$> jsg "CSSRuleList"
+#else
+type IsCSSRuleList o = CSSRuleListClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.CSSStyleDeclaration".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration Mozilla CSSStyleDeclaration documentation>
+newtype CSSStyleDeclaration = CSSStyleDeclaration { unCSSStyleDeclaration :: JSVal }
+
+instance PToJSVal CSSStyleDeclaration where
+  pToJSVal = unCSSStyleDeclaration
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CSSStyleDeclaration where
+  pFromJSVal = CSSStyleDeclaration
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CSSStyleDeclaration where
+  toJSVal = return . unCSSStyleDeclaration
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CSSStyleDeclaration where
+  fromJSVal v = fmap CSSStyleDeclaration <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject CSSStyleDeclaration where
+  makeObject = makeObject . unCSSStyleDeclaration
+
+instance IsGObject CSSStyleDeclaration where
+  toGObject = GObject . unCSSStyleDeclaration
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CSSStyleDeclaration . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCSSStyleDeclaration :: IsGObject obj => obj -> JSM CSSStyleDeclaration
+castToCSSStyleDeclaration = castTo gTypeCSSStyleDeclaration "CSSStyleDeclaration"
+
+gTypeCSSStyleDeclaration :: JSM GType
+gTypeCSSStyleDeclaration = GType . Object <$> jsg "CSSStyleDeclaration"
+#else
+type IsCSSStyleDeclaration o = CSSStyleDeclarationClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.CSSStyleRule".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.CSSRule"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleRule Mozilla CSSStyleRule documentation>
+newtype CSSStyleRule = CSSStyleRule { unCSSStyleRule :: JSVal }
+
+instance PToJSVal CSSStyleRule where
+  pToJSVal = unCSSStyleRule
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CSSStyleRule where
+  pFromJSVal = CSSStyleRule
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CSSStyleRule where
+  toJSVal = return . unCSSStyleRule
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CSSStyleRule where
+  fromJSVal v = fmap CSSStyleRule <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject CSSStyleRule where
+  makeObject = makeObject . unCSSStyleRule
+
+instance IsCSSRule CSSStyleRule
+instance IsGObject CSSStyleRule where
+  toGObject = GObject . unCSSStyleRule
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CSSStyleRule . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCSSStyleRule :: IsGObject obj => obj -> JSM CSSStyleRule
+castToCSSStyleRule = castTo gTypeCSSStyleRule "CSSStyleRule"
+
+gTypeCSSStyleRule :: JSM GType
+gTypeCSSStyleRule = GType . Object <$> jsg "CSSStyleRule"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.CSSStyleSheet".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.StyleSheet"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet Mozilla CSSStyleSheet documentation>
+newtype CSSStyleSheet = CSSStyleSheet { unCSSStyleSheet :: JSVal }
+
+instance PToJSVal CSSStyleSheet where
+  pToJSVal = unCSSStyleSheet
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CSSStyleSheet where
+  pFromJSVal = CSSStyleSheet
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CSSStyleSheet where
+  toJSVal = return . unCSSStyleSheet
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CSSStyleSheet where
+  fromJSVal v = fmap CSSStyleSheet <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject CSSStyleSheet where
+  makeObject = makeObject . unCSSStyleSheet
+
+instance IsStyleSheet CSSStyleSheet
+instance IsGObject CSSStyleSheet where
+  toGObject = GObject . unCSSStyleSheet
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CSSStyleSheet . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCSSStyleSheet :: IsGObject obj => obj -> JSM CSSStyleSheet
+castToCSSStyleSheet = castTo gTypeCSSStyleSheet "CSSStyleSheet"
+
+gTypeCSSStyleSheet :: JSM GType
+gTypeCSSStyleSheet = GType . Object <$> jsg "CSSStyleSheet"
+#else
+type IsCSSStyleSheet o = CSSStyleSheetClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.CSSSupportsRule".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.CSSRule"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CSSSupportsRule Mozilla CSSSupportsRule documentation>
+newtype CSSSupportsRule = CSSSupportsRule { unCSSSupportsRule :: JSVal }
+
+instance PToJSVal CSSSupportsRule where
+  pToJSVal = unCSSSupportsRule
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CSSSupportsRule where
+  pFromJSVal = CSSSupportsRule
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CSSSupportsRule where
+  toJSVal = return . unCSSSupportsRule
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CSSSupportsRule where
+  fromJSVal v = fmap CSSSupportsRule <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject CSSSupportsRule where
+  makeObject = makeObject . unCSSSupportsRule
+
+instance IsCSSRule CSSSupportsRule
+instance IsGObject CSSSupportsRule where
+  toGObject = GObject . unCSSSupportsRule
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CSSSupportsRule . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCSSSupportsRule :: IsGObject obj => obj -> JSM CSSSupportsRule
+castToCSSSupportsRule = castTo gTypeCSSSupportsRule "CSSSupportsRule"
+
+gTypeCSSSupportsRule :: JSM GType
+gTypeCSSSupportsRule = GType . Object <$> jsg "CSSSupportsRule"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.CSSUnknownRule".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.CSSRule"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CSSUnknownRule Mozilla CSSUnknownRule documentation>
+newtype CSSUnknownRule = CSSUnknownRule { unCSSUnknownRule :: JSVal }
+
+instance PToJSVal CSSUnknownRule where
+  pToJSVal = unCSSUnknownRule
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CSSUnknownRule where
+  pFromJSVal = CSSUnknownRule
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CSSUnknownRule where
+  toJSVal = return . unCSSUnknownRule
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CSSUnknownRule where
+  fromJSVal v = fmap CSSUnknownRule <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject CSSUnknownRule where
+  makeObject = makeObject . unCSSUnknownRule
+
+instance IsCSSRule CSSUnknownRule
+instance IsGObject CSSUnknownRule where
+  toGObject = GObject . unCSSUnknownRule
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CSSUnknownRule . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCSSUnknownRule :: IsGObject obj => obj -> JSM CSSUnknownRule
+castToCSSUnknownRule = castTo gTypeCSSUnknownRule "CSSUnknownRule"
+
+gTypeCSSUnknownRule :: JSM GType
+gTypeCSSUnknownRule = GType . Object <$> jsg "CSSUnknownRule"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.CSSValue".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CSSValue Mozilla CSSValue documentation>
+newtype CSSValue = CSSValue { unCSSValue :: JSVal }
+
+instance PToJSVal CSSValue where
+  pToJSVal = unCSSValue
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CSSValue where
+  pFromJSVal = CSSValue
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CSSValue where
+  toJSVal = return . unCSSValue
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CSSValue where
+  fromJSVal v = fmap CSSValue <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject CSSValue where
+  makeObject = makeObject . unCSSValue
+
+class IsGObject o => IsCSSValue o
+toCSSValue :: IsCSSValue o => o -> CSSValue
+toCSSValue = unsafeCastGObject . toGObject
+
+instance IsCSSValue CSSValue
+instance IsGObject CSSValue where
+  toGObject = GObject . unCSSValue
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CSSValue . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCSSValue :: IsGObject obj => obj -> JSM CSSValue
+castToCSSValue = castTo gTypeCSSValue "CSSValue"
+
+gTypeCSSValue :: JSM GType
+gTypeCSSValue = GType . Object <$> jsg "CSSValue"
+#else
+type IsCSSValue o = CSSValueClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.CSSValueList".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.CSSValue"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CSSValueList Mozilla CSSValueList documentation>
+newtype CSSValueList = CSSValueList { unCSSValueList :: JSVal }
+
+instance PToJSVal CSSValueList where
+  pToJSVal = unCSSValueList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CSSValueList where
+  pFromJSVal = CSSValueList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CSSValueList where
+  toJSVal = return . unCSSValueList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CSSValueList where
+  fromJSVal v = fmap CSSValueList <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject CSSValueList where
+  makeObject = makeObject . unCSSValueList
+
+class IsCSSValue o => IsCSSValueList o
+toCSSValueList :: IsCSSValueList o => o -> CSSValueList
+toCSSValueList = unsafeCastGObject . toGObject
+
+instance IsCSSValueList CSSValueList
+instance IsCSSValue CSSValueList
+instance IsGObject CSSValueList where
+  toGObject = GObject . unCSSValueList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CSSValueList . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCSSValueList :: IsGObject obj => obj -> JSM CSSValueList
+castToCSSValueList = castTo gTypeCSSValueList "CSSValueList"
+
+gTypeCSSValueList :: JSM GType
+gTypeCSSValueList = GType . Object <$> jsg "CSSValueList"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.CanvasGradient".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CanvasGradient Mozilla CanvasGradient documentation>
+newtype CanvasGradient = CanvasGradient { unCanvasGradient :: JSVal }
+
+instance PToJSVal CanvasGradient where
+  pToJSVal = unCanvasGradient
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CanvasGradient where
+  pFromJSVal = CanvasGradient
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CanvasGradient where
+  toJSVal = return . unCanvasGradient
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CanvasGradient where
+  fromJSVal v = fmap CanvasGradient <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject CanvasGradient where
+  makeObject = makeObject . unCanvasGradient
+
+instance IsGObject CanvasGradient where
+  toGObject = GObject . unCanvasGradient
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CanvasGradient . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCanvasGradient :: IsGObject obj => obj -> JSM CanvasGradient
+castToCanvasGradient = castTo gTypeCanvasGradient "CanvasGradient"
+
+gTypeCanvasGradient :: JSM GType
+gTypeCanvasGradient = GType . Object <$> jsg "CanvasGradient"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.CanvasPattern".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CanvasPattern Mozilla CanvasPattern documentation>
+newtype CanvasPattern = CanvasPattern { unCanvasPattern :: JSVal }
+
+instance PToJSVal CanvasPattern where
+  pToJSVal = unCanvasPattern
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CanvasPattern where
+  pFromJSVal = CanvasPattern
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CanvasPattern where
+  toJSVal = return . unCanvasPattern
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CanvasPattern where
+  fromJSVal v = fmap CanvasPattern <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject CanvasPattern where
+  makeObject = makeObject . unCanvasPattern
+
+instance IsGObject CanvasPattern where
+  toGObject = GObject . unCanvasPattern
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CanvasPattern . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCanvasPattern :: IsGObject obj => obj -> JSM CanvasPattern
+castToCanvasPattern = castTo gTypeCanvasPattern "CanvasPattern"
+
+gTypeCanvasPattern :: JSM GType
+gTypeCanvasPattern = GType . Object <$> jsg "CanvasPattern"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.CanvasProxy".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CanvasProxy Mozilla CanvasProxy documentation>
+newtype CanvasProxy = CanvasProxy { unCanvasProxy :: JSVal }
+
+instance PToJSVal CanvasProxy where
+  pToJSVal = unCanvasProxy
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CanvasProxy where
+  pFromJSVal = CanvasProxy
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CanvasProxy where
+  toJSVal = return . unCanvasProxy
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CanvasProxy where
+  fromJSVal v = fmap CanvasProxy <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject CanvasProxy where
+  makeObject = makeObject . unCanvasProxy
+
+instance IsGObject CanvasProxy where
+  toGObject = GObject . unCanvasProxy
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CanvasProxy . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCanvasProxy :: IsGObject obj => obj -> JSM CanvasProxy
+castToCanvasProxy = castTo gTypeCanvasProxy "CanvasProxy"
+
+gTypeCanvasProxy :: JSM GType
+gTypeCanvasProxy = GType . Object <$> jsg "CanvasProxy"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.CanvasRenderingContext".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext Mozilla CanvasRenderingContext documentation>
+newtype CanvasRenderingContext = CanvasRenderingContext { unCanvasRenderingContext :: JSVal }
+
+instance PToJSVal CanvasRenderingContext where
+  pToJSVal = unCanvasRenderingContext
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CanvasRenderingContext where
+  pFromJSVal = CanvasRenderingContext
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CanvasRenderingContext where
+  toJSVal = return . unCanvasRenderingContext
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CanvasRenderingContext where
+  fromJSVal v = fmap CanvasRenderingContext <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject CanvasRenderingContext where
+  makeObject = makeObject . unCanvasRenderingContext
+
+class IsGObject o => IsCanvasRenderingContext o
+toCanvasRenderingContext :: IsCanvasRenderingContext o => o -> CanvasRenderingContext
+toCanvasRenderingContext = unsafeCastGObject . toGObject
+
+instance IsCanvasRenderingContext CanvasRenderingContext
+instance IsGObject CanvasRenderingContext where
+  toGObject = GObject . unCanvasRenderingContext
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CanvasRenderingContext . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCanvasRenderingContext :: IsGObject obj => obj -> JSM CanvasRenderingContext
+castToCanvasRenderingContext = castTo gTypeCanvasRenderingContext "CanvasRenderingContext"
+
+gTypeCanvasRenderingContext :: JSM GType
+gTypeCanvasRenderingContext = GType . Object <$> jsg "CanvasRenderingContext"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.CanvasRenderingContext2D".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.CanvasRenderingContext"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D Mozilla CanvasRenderingContext2D documentation>
+newtype CanvasRenderingContext2D = CanvasRenderingContext2D { unCanvasRenderingContext2D :: JSVal }
+
+instance PToJSVal CanvasRenderingContext2D where
+  pToJSVal = unCanvasRenderingContext2D
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CanvasRenderingContext2D where
+  pFromJSVal = CanvasRenderingContext2D
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CanvasRenderingContext2D where
+  toJSVal = return . unCanvasRenderingContext2D
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CanvasRenderingContext2D where
+  fromJSVal v = fmap CanvasRenderingContext2D <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject CanvasRenderingContext2D where
+  makeObject = makeObject . unCanvasRenderingContext2D
+
+instance IsCanvasRenderingContext CanvasRenderingContext2D
+instance IsGObject CanvasRenderingContext2D where
+  toGObject = GObject . unCanvasRenderingContext2D
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CanvasRenderingContext2D . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCanvasRenderingContext2D :: IsGObject obj => obj -> JSM CanvasRenderingContext2D
+castToCanvasRenderingContext2D = castTo gTypeCanvasRenderingContext2D "CanvasRenderingContext2D"
+
+gTypeCanvasRenderingContext2D :: JSM GType
+gTypeCanvasRenderingContext2D = GType . Object <$> jsg "CanvasRenderingContext2D"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.CapabilityRange".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CapabilityRange Mozilla CapabilityRange documentation>
+newtype CapabilityRange = CapabilityRange { unCapabilityRange :: JSVal }
+
+instance PToJSVal CapabilityRange where
+  pToJSVal = unCapabilityRange
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CapabilityRange where
+  pFromJSVal = CapabilityRange
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CapabilityRange where
+  toJSVal = return . unCapabilityRange
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CapabilityRange where
+  fromJSVal v = fmap CapabilityRange <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject CapabilityRange where
+  makeObject = makeObject . unCapabilityRange
+
+instance IsGObject CapabilityRange where
+  toGObject = GObject . unCapabilityRange
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CapabilityRange . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCapabilityRange :: IsGObject obj => obj -> JSM CapabilityRange
+castToCapabilityRange = castTo gTypeCapabilityRange "CapabilityRange"
+
+gTypeCapabilityRange :: JSM GType
+gTypeCapabilityRange = GType . Object <$> jsg "CapabilityRange"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.ChannelMergerNode".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.AudioNode"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ChannelMergerNode Mozilla ChannelMergerNode documentation>
+newtype ChannelMergerNode = ChannelMergerNode { unChannelMergerNode :: JSVal }
+
+instance PToJSVal ChannelMergerNode where
+  pToJSVal = unChannelMergerNode
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ChannelMergerNode where
+  pFromJSVal = ChannelMergerNode
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ChannelMergerNode where
+  toJSVal = return . unChannelMergerNode
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ChannelMergerNode where
+  fromJSVal v = fmap ChannelMergerNode <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject ChannelMergerNode where
+  makeObject = makeObject . unChannelMergerNode
+
+instance IsAudioNode ChannelMergerNode
+instance IsEventTarget ChannelMergerNode
+instance IsGObject ChannelMergerNode where
+  toGObject = GObject . unChannelMergerNode
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = ChannelMergerNode . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToChannelMergerNode :: IsGObject obj => obj -> JSM ChannelMergerNode
+castToChannelMergerNode = castTo gTypeChannelMergerNode "ChannelMergerNode"
+
+gTypeChannelMergerNode :: JSM GType
+gTypeChannelMergerNode = GType . Object <$> jsg "ChannelMergerNode"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.ChannelSplitterNode".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.AudioNode"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ChannelSplitterNode Mozilla ChannelSplitterNode documentation>
+newtype ChannelSplitterNode = ChannelSplitterNode { unChannelSplitterNode :: JSVal }
+
+instance PToJSVal ChannelSplitterNode where
+  pToJSVal = unChannelSplitterNode
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ChannelSplitterNode where
+  pFromJSVal = ChannelSplitterNode
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ChannelSplitterNode where
+  toJSVal = return . unChannelSplitterNode
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ChannelSplitterNode where
+  fromJSVal v = fmap ChannelSplitterNode <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject ChannelSplitterNode where
+  makeObject = makeObject . unChannelSplitterNode
+
+instance IsAudioNode ChannelSplitterNode
+instance IsEventTarget ChannelSplitterNode
+instance IsGObject ChannelSplitterNode where
+  toGObject = GObject . unChannelSplitterNode
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = ChannelSplitterNode . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToChannelSplitterNode :: IsGObject obj => obj -> JSM ChannelSplitterNode
+castToChannelSplitterNode = castTo gTypeChannelSplitterNode "ChannelSplitterNode"
+
+gTypeChannelSplitterNode :: JSM GType
+gTypeChannelSplitterNode = GType . Object <$> jsg "ChannelSplitterNode"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.CharacterData".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CharacterData Mozilla CharacterData documentation>
+newtype CharacterData = CharacterData { unCharacterData :: JSVal }
+
+instance PToJSVal CharacterData where
+  pToJSVal = unCharacterData
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CharacterData where
+  pFromJSVal = CharacterData
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CharacterData where
+  toJSVal = return . unCharacterData
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CharacterData where
+  fromJSVal v = fmap CharacterData <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject CharacterData where
+  makeObject = makeObject . unCharacterData
+
+class IsNode o => IsCharacterData o
+toCharacterData :: IsCharacterData o => o -> CharacterData
+toCharacterData = unsafeCastGObject . toGObject
+
+instance IsCharacterData CharacterData
+instance IsNode CharacterData
+instance IsEventTarget CharacterData
+instance IsGObject CharacterData where
+  toGObject = GObject . unCharacterData
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CharacterData . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCharacterData :: IsGObject obj => obj -> JSM CharacterData
+castToCharacterData = castTo gTypeCharacterData "CharacterData"
+
+gTypeCharacterData :: JSM GType
+gTypeCharacterData = GType . Object <$> jsg "CharacterData"
+#else
+type IsCharacterData o = CharacterDataClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.ChildNode".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ChildNode Mozilla ChildNode documentation>
+newtype ChildNode = ChildNode { unChildNode :: JSVal }
+
+instance PToJSVal ChildNode where
+  pToJSVal = unChildNode
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ChildNode where
+  pFromJSVal = ChildNode
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ChildNode where
+  toJSVal = return . unChildNode
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ChildNode where
+  fromJSVal v = fmap ChildNode <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject ChildNode where
+  makeObject = makeObject . unChildNode
+
+instance IsGObject ChildNode where
+  toGObject = GObject . unChildNode
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = ChildNode . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToChildNode :: IsGObject obj => obj -> JSM ChildNode
+castToChildNode = castTo gTypeChildNode "ChildNode"
+
+gTypeChildNode :: JSM GType
+gTypeChildNode = GType . Object <$> jsg "ChildNode"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.ClientRect".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ClientRect Mozilla ClientRect documentation>
+newtype ClientRect = ClientRect { unClientRect :: JSVal }
+
+instance PToJSVal ClientRect where
+  pToJSVal = unClientRect
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ClientRect where
+  pFromJSVal = ClientRect
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ClientRect where
+  toJSVal = return . unClientRect
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ClientRect where
+  fromJSVal v = fmap ClientRect <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject ClientRect where
+  makeObject = makeObject . unClientRect
+
+instance IsGObject ClientRect where
+  toGObject = GObject . unClientRect
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = ClientRect . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToClientRect :: IsGObject obj => obj -> JSM ClientRect
+castToClientRect = castTo gTypeClientRect "ClientRect"
+
+gTypeClientRect :: JSM GType
+gTypeClientRect = GType . Object <$> jsg "ClientRect"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.ClientRectList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ClientRectList Mozilla ClientRectList documentation>
+newtype ClientRectList = ClientRectList { unClientRectList :: JSVal }
+
+instance PToJSVal ClientRectList where
+  pToJSVal = unClientRectList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ClientRectList where
+  pFromJSVal = ClientRectList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ClientRectList where
+  toJSVal = return . unClientRectList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ClientRectList where
+  fromJSVal v = fmap ClientRectList <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject ClientRectList where
+  makeObject = makeObject . unClientRectList
+
+instance IsGObject ClientRectList where
+  toGObject = GObject . unClientRectList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = ClientRectList . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToClientRectList :: IsGObject obj => obj -> JSM ClientRectList
+castToClientRectList = castTo gTypeClientRectList "ClientRectList"
+
+gTypeClientRectList :: JSM GType
+gTypeClientRectList = GType . Object <$> jsg "ClientRectList"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.CloseEvent".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent Mozilla CloseEvent documentation>
+newtype CloseEvent = CloseEvent { unCloseEvent :: JSVal }
+
+instance PToJSVal CloseEvent where
+  pToJSVal = unCloseEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CloseEvent where
+  pFromJSVal = CloseEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CloseEvent where
+  toJSVal = return . unCloseEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CloseEvent where
+  fromJSVal v = fmap CloseEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject CloseEvent where
+  makeObject = makeObject . unCloseEvent
+
+instance IsEvent CloseEvent
+instance IsGObject CloseEvent where
+  toGObject = GObject . unCloseEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CloseEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCloseEvent :: IsGObject obj => obj -> JSM CloseEvent
+castToCloseEvent = castTo gTypeCloseEvent "CloseEvent"
+
+gTypeCloseEvent :: JSM GType
+gTypeCloseEvent = GType . Object <$> jsg "CloseEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.CommandLineAPIHost".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CommandLineAPIHost Mozilla CommandLineAPIHost documentation>
+newtype CommandLineAPIHost = CommandLineAPIHost { unCommandLineAPIHost :: JSVal }
+
+instance PToJSVal CommandLineAPIHost where
+  pToJSVal = unCommandLineAPIHost
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CommandLineAPIHost where
+  pFromJSVal = CommandLineAPIHost
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CommandLineAPIHost where
+  toJSVal = return . unCommandLineAPIHost
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CommandLineAPIHost where
+  fromJSVal v = fmap CommandLineAPIHost <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject CommandLineAPIHost where
+  makeObject = makeObject . unCommandLineAPIHost
+
+instance IsGObject CommandLineAPIHost where
+  toGObject = GObject . unCommandLineAPIHost
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CommandLineAPIHost . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCommandLineAPIHost :: IsGObject obj => obj -> JSM CommandLineAPIHost
+castToCommandLineAPIHost = castTo gTypeCommandLineAPIHost "CommandLineAPIHost"
+
+gTypeCommandLineAPIHost :: JSM GType
+gTypeCommandLineAPIHost = GType . Object <$> jsg "CommandLineAPIHost"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.Comment".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.CharacterData"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Comment Mozilla Comment documentation>
+newtype Comment = Comment { unComment :: JSVal }
+
+instance PToJSVal Comment where
+  pToJSVal = unComment
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Comment where
+  pFromJSVal = Comment
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Comment where
+  toJSVal = return . unComment
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Comment where
+  fromJSVal v = fmap Comment <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject Comment where
+  makeObject = makeObject . unComment
+
+instance IsCharacterData Comment
+instance IsNode Comment
+instance IsEventTarget Comment
+instance IsGObject Comment where
+  toGObject = GObject . unComment
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Comment . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToComment :: IsGObject obj => obj -> JSM Comment
+castToComment = castTo gTypeComment "Comment"
+
+gTypeComment :: JSM GType
+gTypeComment = GType . Object <$> jsg "Comment"
+#else
+type IsComment o = CommentClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.CompositionEvent".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.UIEvent"
+--     * "Language.Javascript.JSaddle.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CompositionEvent Mozilla CompositionEvent documentation>
+newtype CompositionEvent = CompositionEvent { unCompositionEvent :: JSVal }
+
+instance PToJSVal CompositionEvent where
+  pToJSVal = unCompositionEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CompositionEvent where
+  pFromJSVal = CompositionEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CompositionEvent where
+  toJSVal = return . unCompositionEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CompositionEvent where
+  fromJSVal v = fmap CompositionEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject CompositionEvent where
+  makeObject = makeObject . unCompositionEvent
+
+instance IsUIEvent CompositionEvent
+instance IsEvent CompositionEvent
+instance IsGObject CompositionEvent where
+  toGObject = GObject . unCompositionEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CompositionEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCompositionEvent :: IsGObject obj => obj -> JSM CompositionEvent
+castToCompositionEvent = castTo gTypeCompositionEvent "CompositionEvent"
+
+gTypeCompositionEvent :: JSM GType
+gTypeCompositionEvent = GType . Object <$> jsg "CompositionEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.ConvolverNode".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.AudioNode"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ConvolverNode Mozilla ConvolverNode documentation>
+newtype ConvolverNode = ConvolverNode { unConvolverNode :: JSVal }
+
+instance PToJSVal ConvolverNode where
+  pToJSVal = unConvolverNode
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ConvolverNode where
+  pFromJSVal = ConvolverNode
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ConvolverNode where
+  toJSVal = return . unConvolverNode
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ConvolverNode where
+  fromJSVal v = fmap ConvolverNode <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject ConvolverNode where
+  makeObject = makeObject . unConvolverNode
+
+instance IsAudioNode ConvolverNode
+instance IsEventTarget ConvolverNode
+instance IsGObject ConvolverNode where
+  toGObject = GObject . unConvolverNode
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = ConvolverNode . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToConvolverNode :: IsGObject obj => obj -> JSM ConvolverNode
+castToConvolverNode = castTo gTypeConvolverNode "ConvolverNode"
+
+gTypeConvolverNode :: JSM GType
+gTypeConvolverNode = GType . Object <$> jsg "ConvolverNode"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.Coordinates".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Coordinates Mozilla Coordinates documentation>
+newtype Coordinates = Coordinates { unCoordinates :: JSVal }
+
+instance PToJSVal Coordinates where
+  pToJSVal = unCoordinates
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Coordinates where
+  pFromJSVal = Coordinates
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Coordinates where
+  toJSVal = return . unCoordinates
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Coordinates where
+  fromJSVal v = fmap Coordinates <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject Coordinates where
+  makeObject = makeObject . unCoordinates
+
+instance IsGObject Coordinates where
+  toGObject = GObject . unCoordinates
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Coordinates . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCoordinates :: IsGObject obj => obj -> JSM Coordinates
+castToCoordinates = castTo gTypeCoordinates "Coordinates"
+
+gTypeCoordinates :: JSM GType
+gTypeCoordinates = GType . Object <$> jsg "Coordinates"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.Counter".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Counter Mozilla Counter documentation>
+newtype Counter = Counter { unCounter :: JSVal }
+
+instance PToJSVal Counter where
+  pToJSVal = unCounter
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Counter where
+  pFromJSVal = Counter
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Counter where
+  toJSVal = return . unCounter
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Counter where
+  fromJSVal v = fmap Counter <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject Counter where
+  makeObject = makeObject . unCounter
+
+instance IsGObject Counter where
+  toGObject = GObject . unCounter
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Counter . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCounter :: IsGObject obj => obj -> JSM Counter
+castToCounter = castTo gTypeCounter "Counter"
+
+gTypeCounter :: JSM GType
+gTypeCounter = GType . Object <$> jsg "Counter"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.Crypto".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Crypto Mozilla Crypto documentation>
+newtype Crypto = Crypto { unCrypto :: JSVal }
+
+instance PToJSVal Crypto where
+  pToJSVal = unCrypto
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Crypto where
+  pFromJSVal = Crypto
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Crypto where
+  toJSVal = return . unCrypto
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Crypto where
+  fromJSVal v = fmap Crypto <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject Crypto where
+  makeObject = makeObject . unCrypto
+
+instance IsGObject Crypto where
+  toGObject = GObject . unCrypto
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Crypto . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCrypto :: IsGObject obj => obj -> JSM Crypto
+castToCrypto = castTo gTypeCrypto "Crypto"
+
+gTypeCrypto :: JSM GType
+gTypeCrypto = GType . Object <$> jsg "Crypto"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.CryptoKey".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CryptoKey Mozilla CryptoKey documentation>
+newtype CryptoKey = CryptoKey { unCryptoKey :: JSVal }
+
+instance PToJSVal CryptoKey where
+  pToJSVal = unCryptoKey
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CryptoKey where
+  pFromJSVal = CryptoKey
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CryptoKey where
+  toJSVal = return . unCryptoKey
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CryptoKey where
+  fromJSVal v = fmap CryptoKey <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject CryptoKey where
+  makeObject = makeObject . unCryptoKey
+
+instance IsGObject CryptoKey where
+  toGObject = GObject . unCryptoKey
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CryptoKey . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCryptoKey :: IsGObject obj => obj -> JSM CryptoKey
+castToCryptoKey = castTo gTypeCryptoKey "CryptoKey"
+
+gTypeCryptoKey :: JSM GType
+gTypeCryptoKey = GType . Object <$> jsg "CryptoKey"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.CryptoKeyPair".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CryptoKeyPair Mozilla CryptoKeyPair documentation>
+newtype CryptoKeyPair = CryptoKeyPair { unCryptoKeyPair :: JSVal }
+
+instance PToJSVal CryptoKeyPair where
+  pToJSVal = unCryptoKeyPair
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CryptoKeyPair where
+  pFromJSVal = CryptoKeyPair
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CryptoKeyPair where
+  toJSVal = return . unCryptoKeyPair
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CryptoKeyPair where
+  fromJSVal v = fmap CryptoKeyPair <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject CryptoKeyPair where
+  makeObject = makeObject . unCryptoKeyPair
+
+instance IsGObject CryptoKeyPair where
+  toGObject = GObject . unCryptoKeyPair
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CryptoKeyPair . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCryptoKeyPair :: IsGObject obj => obj -> JSM CryptoKeyPair
+castToCryptoKeyPair = castTo gTypeCryptoKeyPair "CryptoKeyPair"
+
+gTypeCryptoKeyPair :: JSM GType
+gTypeCryptoKeyPair = GType . Object <$> jsg "CryptoKeyPair"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.CustomEvent".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent Mozilla CustomEvent documentation>
+newtype CustomEvent = CustomEvent { unCustomEvent :: JSVal }
+
+instance PToJSVal CustomEvent where
+  pToJSVal = unCustomEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CustomEvent where
+  pFromJSVal = CustomEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CustomEvent where
+  toJSVal = return . unCustomEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CustomEvent where
+  fromJSVal v = fmap CustomEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject CustomEvent where
+  makeObject = makeObject . unCustomEvent
+
+instance IsEvent CustomEvent
+instance IsGObject CustomEvent where
+  toGObject = GObject . unCustomEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CustomEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCustomEvent :: IsGObject obj => obj -> JSM CustomEvent
+castToCustomEvent = castTo gTypeCustomEvent "CustomEvent"
+
+gTypeCustomEvent :: JSM GType
+gTypeCustomEvent = GType . Object <$> jsg "CustomEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.DOMError".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/DOMError Mozilla DOMError documentation>
+newtype DOMError = DOMError { unDOMError :: JSVal }
+
+instance PToJSVal DOMError where
+  pToJSVal = unDOMError
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DOMError where
+  pFromJSVal = DOMError
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DOMError where
+  toJSVal = return . unDOMError
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DOMError where
+  fromJSVal v = fmap DOMError <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject DOMError where
+  makeObject = makeObject . unDOMError
+
+class IsGObject o => IsDOMError o
+toDOMError :: IsDOMError o => o -> DOMError
+toDOMError = unsafeCastGObject . toGObject
+
+instance IsDOMError DOMError
+instance IsGObject DOMError where
+  toGObject = GObject . unDOMError
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = DOMError . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToDOMError :: IsGObject obj => obj -> JSM DOMError
+castToDOMError = castTo gTypeDOMError "DOMError"
+
+gTypeDOMError :: JSM GType
+gTypeDOMError = GType . Object <$> jsg "DOMError"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.DOMImplementation".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation Mozilla DOMImplementation documentation>
+newtype DOMImplementation = DOMImplementation { unDOMImplementation :: JSVal }
+
+instance PToJSVal DOMImplementation where
+  pToJSVal = unDOMImplementation
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DOMImplementation where
+  pFromJSVal = DOMImplementation
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DOMImplementation where
+  toJSVal = return . unDOMImplementation
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DOMImplementation where
+  fromJSVal v = fmap DOMImplementation <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject DOMImplementation where
+  makeObject = makeObject . unDOMImplementation
+
+instance IsGObject DOMImplementation where
+  toGObject = GObject . unDOMImplementation
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = DOMImplementation . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToDOMImplementation :: IsGObject obj => obj -> JSM DOMImplementation
+castToDOMImplementation = castTo gTypeDOMImplementation "DOMImplementation"
+
+gTypeDOMImplementation :: JSM GType
+gTypeDOMImplementation = GType . Object <$> jsg "DOMImplementation"
+#else
+type IsDOMImplementation o = DOMImplementationClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.DOMNamedFlowCollection".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlowCollection Mozilla WebKitNamedFlowCollection documentation>
+newtype DOMNamedFlowCollection = DOMNamedFlowCollection { unDOMNamedFlowCollection :: JSVal }
+
+instance PToJSVal DOMNamedFlowCollection where
+  pToJSVal = unDOMNamedFlowCollection
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DOMNamedFlowCollection where
+  pFromJSVal = DOMNamedFlowCollection
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DOMNamedFlowCollection where
+  toJSVal = return . unDOMNamedFlowCollection
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DOMNamedFlowCollection where
+  fromJSVal v = fmap DOMNamedFlowCollection <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject DOMNamedFlowCollection where
+  makeObject = makeObject . unDOMNamedFlowCollection
+
+instance IsGObject DOMNamedFlowCollection where
+  toGObject = GObject . unDOMNamedFlowCollection
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = DOMNamedFlowCollection . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToDOMNamedFlowCollection :: IsGObject obj => obj -> JSM DOMNamedFlowCollection
+castToDOMNamedFlowCollection = castTo gTypeDOMNamedFlowCollection "DOMNamedFlowCollection"
+
+gTypeDOMNamedFlowCollection :: JSM GType
+gTypeDOMNamedFlowCollection = GType . Object <$> jsg "WebKitNamedFlowCollection"
+#else
+#ifndef USE_OLD_WEBKIT
+type IsDOMNamedFlowCollection o = DOMNamedFlowCollectionClass o
+#endif
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.DOMParser".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/DOMParser Mozilla DOMParser documentation>
+newtype DOMParser = DOMParser { unDOMParser :: JSVal }
+
+instance PToJSVal DOMParser where
+  pToJSVal = unDOMParser
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DOMParser where
+  pFromJSVal = DOMParser
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DOMParser where
+  toJSVal = return . unDOMParser
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DOMParser where
+  fromJSVal v = fmap DOMParser <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject DOMParser where
+  makeObject = makeObject . unDOMParser
+
+instance IsGObject DOMParser where
+  toGObject = GObject . unDOMParser
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = DOMParser . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToDOMParser :: IsGObject obj => obj -> JSM DOMParser
+castToDOMParser = castTo gTypeDOMParser "DOMParser"
+
+gTypeDOMParser :: JSM GType
+gTypeDOMParser = GType . Object <$> jsg "DOMParser"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.DOMSettableTokenList".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.DOMTokenList"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/DOMSettableTokenList Mozilla DOMSettableTokenList documentation>
+newtype DOMSettableTokenList = DOMSettableTokenList { unDOMSettableTokenList :: JSVal }
+
+instance PToJSVal DOMSettableTokenList where
+  pToJSVal = unDOMSettableTokenList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DOMSettableTokenList where
+  pFromJSVal = DOMSettableTokenList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DOMSettableTokenList where
+  toJSVal = return . unDOMSettableTokenList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DOMSettableTokenList where
+  fromJSVal v = fmap DOMSettableTokenList <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject DOMSettableTokenList where
+  makeObject = makeObject . unDOMSettableTokenList
+
+instance IsDOMTokenList DOMSettableTokenList
+instance IsGObject DOMSettableTokenList where
+  toGObject = GObject . unDOMSettableTokenList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = DOMSettableTokenList . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToDOMSettableTokenList :: IsGObject obj => obj -> JSM DOMSettableTokenList
+castToDOMSettableTokenList = castTo gTypeDOMSettableTokenList "DOMSettableTokenList"
+
+gTypeDOMSettableTokenList :: JSM GType
+gTypeDOMSettableTokenList = GType . Object <$> jsg "DOMSettableTokenList"
+#else
+type IsDOMSettableTokenList o = DOMSettableTokenListClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.DOMStringList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/DOMStringList Mozilla DOMStringList documentation>
+newtype DOMStringList = DOMStringList { unDOMStringList :: JSVal }
+
+instance PToJSVal DOMStringList where
+  pToJSVal = unDOMStringList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DOMStringList where
+  pFromJSVal = DOMStringList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DOMStringList where
+  toJSVal = return . unDOMStringList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DOMStringList where
+  fromJSVal v = fmap DOMStringList <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject DOMStringList where
+  makeObject = makeObject . unDOMStringList
+
+instance IsGObject DOMStringList where
+  toGObject = GObject . unDOMStringList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = DOMStringList . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToDOMStringList :: IsGObject obj => obj -> JSM DOMStringList
+castToDOMStringList = castTo gTypeDOMStringList "DOMStringList"
+
+gTypeDOMStringList :: JSM GType
+gTypeDOMStringList = GType . Object <$> jsg "DOMStringList"
+#else
+type IsDOMStringList o = DOMStringListClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.DOMStringMap".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/DOMStringMap Mozilla DOMStringMap documentation>
+newtype DOMStringMap = DOMStringMap { unDOMStringMap :: JSVal }
+
+instance PToJSVal DOMStringMap where
+  pToJSVal = unDOMStringMap
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DOMStringMap where
+  pFromJSVal = DOMStringMap
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DOMStringMap where
+  toJSVal = return . unDOMStringMap
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DOMStringMap where
+  fromJSVal v = fmap DOMStringMap <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject DOMStringMap where
+  makeObject = makeObject . unDOMStringMap
+
+instance IsGObject DOMStringMap where
+  toGObject = GObject . unDOMStringMap
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = DOMStringMap . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToDOMStringMap :: IsGObject obj => obj -> JSM DOMStringMap
+castToDOMStringMap = castTo gTypeDOMStringMap "DOMStringMap"
+
+gTypeDOMStringMap :: JSM GType
+gTypeDOMStringMap = GType . Object <$> jsg "DOMStringMap"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.DOMTokenList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList Mozilla DOMTokenList documentation>
+newtype DOMTokenList = DOMTokenList { unDOMTokenList :: JSVal }
+
+instance PToJSVal DOMTokenList where
+  pToJSVal = unDOMTokenList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DOMTokenList where
+  pFromJSVal = DOMTokenList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DOMTokenList where
+  toJSVal = return . unDOMTokenList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DOMTokenList where
+  fromJSVal v = fmap DOMTokenList <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject DOMTokenList where
+  makeObject = makeObject . unDOMTokenList
+
+class IsGObject o => IsDOMTokenList o
+toDOMTokenList :: IsDOMTokenList o => o -> DOMTokenList
+toDOMTokenList = unsafeCastGObject . toGObject
+
+instance IsDOMTokenList DOMTokenList
+instance IsGObject DOMTokenList where
+  toGObject = GObject . unDOMTokenList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = DOMTokenList . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToDOMTokenList :: IsGObject obj => obj -> JSM DOMTokenList
+castToDOMTokenList = castTo gTypeDOMTokenList "DOMTokenList"
+
+gTypeDOMTokenList :: JSM GType
+gTypeDOMTokenList = GType . Object <$> jsg "DOMTokenList"
+#else
+type IsDOMTokenList o = DOMTokenListClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.DataCue".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.TextTrackCue"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitDataCue Mozilla WebKitDataCue documentation>
+newtype DataCue = DataCue { unDataCue :: JSVal }
+
+instance PToJSVal DataCue where
+  pToJSVal = unDataCue
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DataCue where
+  pFromJSVal = DataCue
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DataCue where
+  toJSVal = return . unDataCue
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DataCue where
+  fromJSVal v = fmap DataCue <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject DataCue where
+  makeObject = makeObject . unDataCue
+
+instance IsTextTrackCue DataCue
+instance IsEventTarget DataCue
+instance IsGObject DataCue where
+  toGObject = GObject . unDataCue
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = DataCue . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToDataCue :: IsGObject obj => obj -> JSM DataCue
+castToDataCue = castTo gTypeDataCue "DataCue"
+
+gTypeDataCue :: JSM GType
+gTypeDataCue = GType . Object <$> jsg "WebKitDataCue"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.DataTransfer".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer Mozilla DataTransfer documentation>
+newtype DataTransfer = DataTransfer { unDataTransfer :: JSVal }
+
+instance PToJSVal DataTransfer where
+  pToJSVal = unDataTransfer
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DataTransfer where
+  pFromJSVal = DataTransfer
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DataTransfer where
+  toJSVal = return . unDataTransfer
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DataTransfer where
+  fromJSVal v = fmap DataTransfer <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject DataTransfer where
+  makeObject = makeObject . unDataTransfer
+
+instance IsGObject DataTransfer where
+  toGObject = GObject . unDataTransfer
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = DataTransfer . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToDataTransfer :: IsGObject obj => obj -> JSM DataTransfer
+castToDataTransfer = castTo gTypeDataTransfer "DataTransfer"
+
+gTypeDataTransfer :: JSM GType
+gTypeDataTransfer = GType . Object <$> jsg "DataTransfer"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.DataTransferItem".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem Mozilla DataTransferItem documentation>
+newtype DataTransferItem = DataTransferItem { unDataTransferItem :: JSVal }
+
+instance PToJSVal DataTransferItem where
+  pToJSVal = unDataTransferItem
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DataTransferItem where
+  pFromJSVal = DataTransferItem
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DataTransferItem where
+  toJSVal = return . unDataTransferItem
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DataTransferItem where
+  fromJSVal v = fmap DataTransferItem <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject DataTransferItem where
+  makeObject = makeObject . unDataTransferItem
+
+instance IsGObject DataTransferItem where
+  toGObject = GObject . unDataTransferItem
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = DataTransferItem . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToDataTransferItem :: IsGObject obj => obj -> JSM DataTransferItem
+castToDataTransferItem = castTo gTypeDataTransferItem "DataTransferItem"
+
+gTypeDataTransferItem :: JSM GType
+gTypeDataTransferItem = GType . Object <$> jsg "DataTransferItem"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.DataTransferItemList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItemList Mozilla DataTransferItemList documentation>
+newtype DataTransferItemList = DataTransferItemList { unDataTransferItemList :: JSVal }
+
+instance PToJSVal DataTransferItemList where
+  pToJSVal = unDataTransferItemList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DataTransferItemList where
+  pFromJSVal = DataTransferItemList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DataTransferItemList where
+  toJSVal = return . unDataTransferItemList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DataTransferItemList where
+  fromJSVal v = fmap DataTransferItemList <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject DataTransferItemList where
+  makeObject = makeObject . unDataTransferItemList
+
+instance IsGObject DataTransferItemList where
+  toGObject = GObject . unDataTransferItemList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = DataTransferItemList . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToDataTransferItemList :: IsGObject obj => obj -> JSM DataTransferItemList
+castToDataTransferItemList = castTo gTypeDataTransferItemList "DataTransferItemList"
+
+gTypeDataTransferItemList :: JSM GType
+gTypeDataTransferItemList = GType . Object <$> jsg "DataTransferItemList"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.Database".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Database Mozilla Database documentation>
+newtype Database = Database { unDatabase :: JSVal }
+
+instance PToJSVal Database where
+  pToJSVal = unDatabase
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Database where
+  pFromJSVal = Database
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Database where
+  toJSVal = return . unDatabase
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Database where
+  fromJSVal v = fmap Database <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject Database where
+  makeObject = makeObject . unDatabase
+
+instance IsGObject Database where
+  toGObject = GObject . unDatabase
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Database . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToDatabase :: IsGObject obj => obj -> JSM Database
+castToDatabase = castTo gTypeDatabase "Database"
+
+gTypeDatabase :: JSM GType
+gTypeDatabase = GType . Object <$> jsg "Database"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.DedicatedWorkerGlobalScope".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.WorkerGlobalScope"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/DedicatedWorkerGlobalScope Mozilla DedicatedWorkerGlobalScope documentation>
+newtype DedicatedWorkerGlobalScope = DedicatedWorkerGlobalScope { unDedicatedWorkerGlobalScope :: JSVal }
+
+instance PToJSVal DedicatedWorkerGlobalScope where
+  pToJSVal = unDedicatedWorkerGlobalScope
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DedicatedWorkerGlobalScope where
+  pFromJSVal = DedicatedWorkerGlobalScope
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DedicatedWorkerGlobalScope where
+  toJSVal = return . unDedicatedWorkerGlobalScope
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DedicatedWorkerGlobalScope where
+  fromJSVal v = fmap DedicatedWorkerGlobalScope <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject DedicatedWorkerGlobalScope where
+  makeObject = makeObject . unDedicatedWorkerGlobalScope
+
+instance IsWorkerGlobalScope DedicatedWorkerGlobalScope
+instance IsEventTarget DedicatedWorkerGlobalScope
+instance IsGObject DedicatedWorkerGlobalScope where
+  toGObject = GObject . unDedicatedWorkerGlobalScope
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = DedicatedWorkerGlobalScope . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToDedicatedWorkerGlobalScope :: IsGObject obj => obj -> JSM DedicatedWorkerGlobalScope
+castToDedicatedWorkerGlobalScope = castTo gTypeDedicatedWorkerGlobalScope "DedicatedWorkerGlobalScope"
+
+gTypeDedicatedWorkerGlobalScope :: JSM GType
+gTypeDedicatedWorkerGlobalScope = GType . Object <$> jsg "DedicatedWorkerGlobalScope"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.DelayNode".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.AudioNode"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/DelayNode Mozilla DelayNode documentation>
+newtype DelayNode = DelayNode { unDelayNode :: JSVal }
+
+instance PToJSVal DelayNode where
+  pToJSVal = unDelayNode
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DelayNode where
+  pFromJSVal = DelayNode
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DelayNode where
+  toJSVal = return . unDelayNode
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DelayNode where
+  fromJSVal v = fmap DelayNode <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject DelayNode where
+  makeObject = makeObject . unDelayNode
+
+instance IsAudioNode DelayNode
+instance IsEventTarget DelayNode
+instance IsGObject DelayNode where
+  toGObject = GObject . unDelayNode
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = DelayNode . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToDelayNode :: IsGObject obj => obj -> JSM DelayNode
+castToDelayNode = castTo gTypeDelayNode "DelayNode"
+
+gTypeDelayNode :: JSM GType
+gTypeDelayNode = GType . Object <$> jsg "DelayNode"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.DeviceMotionEvent".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEvent Mozilla DeviceMotionEvent documentation>
+newtype DeviceMotionEvent = DeviceMotionEvent { unDeviceMotionEvent :: JSVal }
+
+instance PToJSVal DeviceMotionEvent where
+  pToJSVal = unDeviceMotionEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DeviceMotionEvent where
+  pFromJSVal = DeviceMotionEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DeviceMotionEvent where
+  toJSVal = return . unDeviceMotionEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DeviceMotionEvent where
+  fromJSVal v = fmap DeviceMotionEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject DeviceMotionEvent where
+  makeObject = makeObject . unDeviceMotionEvent
+
+instance IsEvent DeviceMotionEvent
+instance IsGObject DeviceMotionEvent where
+  toGObject = GObject . unDeviceMotionEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = DeviceMotionEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToDeviceMotionEvent :: IsGObject obj => obj -> JSM DeviceMotionEvent
+castToDeviceMotionEvent = castTo gTypeDeviceMotionEvent "DeviceMotionEvent"
+
+gTypeDeviceMotionEvent :: JSM GType
+gTypeDeviceMotionEvent = GType . Object <$> jsg "DeviceMotionEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.DeviceOrientationEvent".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/DeviceOrientationEvent Mozilla DeviceOrientationEvent documentation>
+newtype DeviceOrientationEvent = DeviceOrientationEvent { unDeviceOrientationEvent :: JSVal }
+
+instance PToJSVal DeviceOrientationEvent where
+  pToJSVal = unDeviceOrientationEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DeviceOrientationEvent where
+  pFromJSVal = DeviceOrientationEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DeviceOrientationEvent where
+  toJSVal = return . unDeviceOrientationEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DeviceOrientationEvent where
+  fromJSVal v = fmap DeviceOrientationEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject DeviceOrientationEvent where
+  makeObject = makeObject . unDeviceOrientationEvent
+
+instance IsEvent DeviceOrientationEvent
+instance IsGObject DeviceOrientationEvent where
+  toGObject = GObject . unDeviceOrientationEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = DeviceOrientationEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToDeviceOrientationEvent :: IsGObject obj => obj -> JSM DeviceOrientationEvent
+castToDeviceOrientationEvent = castTo gTypeDeviceOrientationEvent "DeviceOrientationEvent"
+
+gTypeDeviceOrientationEvent :: JSM GType
+gTypeDeviceOrientationEvent = GType . Object <$> jsg "DeviceOrientationEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.DeviceProximityEvent".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/DeviceProximityEvent Mozilla DeviceProximityEvent documentation>
+newtype DeviceProximityEvent = DeviceProximityEvent { unDeviceProximityEvent :: JSVal }
+
+instance PToJSVal DeviceProximityEvent where
+  pToJSVal = unDeviceProximityEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DeviceProximityEvent where
+  pFromJSVal = DeviceProximityEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DeviceProximityEvent where
+  toJSVal = return . unDeviceProximityEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DeviceProximityEvent where
+  fromJSVal v = fmap DeviceProximityEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject DeviceProximityEvent where
+  makeObject = makeObject . unDeviceProximityEvent
+
+instance IsEvent DeviceProximityEvent
+instance IsGObject DeviceProximityEvent where
+  toGObject = GObject . unDeviceProximityEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = DeviceProximityEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToDeviceProximityEvent :: IsGObject obj => obj -> JSM DeviceProximityEvent
+castToDeviceProximityEvent = castTo gTypeDeviceProximityEvent "DeviceProximityEvent"
+
+gTypeDeviceProximityEvent :: JSM GType
+gTypeDeviceProximityEvent = GType . Object <$> jsg "DeviceProximityEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.Document".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Document Mozilla Document documentation>
+newtype Document = Document { unDocument :: JSVal }
+
+instance PToJSVal Document where
+  pToJSVal = unDocument
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Document where
+  pFromJSVal = Document
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Document where
+  toJSVal = return . unDocument
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Document where
+  fromJSVal v = fmap Document <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject Document where
+  makeObject = makeObject . unDocument
+
+class IsNode o => IsDocument o
+toDocument :: IsDocument o => o -> Document
+toDocument = unsafeCastGObject . toGObject
+
+instance IsDocument Document
+instance IsNode Document
+instance IsEventTarget Document
+instance IsGObject Document where
+  toGObject = GObject . unDocument
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Document . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToDocument :: IsGObject obj => obj -> JSM Document
+castToDocument = castTo gTypeDocument "Document"
+
+gTypeDocument :: JSM GType
+gTypeDocument = GType . Object <$> jsg "Document"
+#else
+type IsDocument o = DocumentClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.DocumentFragment".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/DocumentFragment Mozilla DocumentFragment documentation>
+newtype DocumentFragment = DocumentFragment { unDocumentFragment :: JSVal }
+
+instance PToJSVal DocumentFragment where
+  pToJSVal = unDocumentFragment
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DocumentFragment where
+  pFromJSVal = DocumentFragment
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DocumentFragment where
+  toJSVal = return . unDocumentFragment
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DocumentFragment where
+  fromJSVal v = fmap DocumentFragment <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject DocumentFragment where
+  makeObject = makeObject . unDocumentFragment
+
+instance IsNode DocumentFragment
+instance IsEventTarget DocumentFragment
+instance IsGObject DocumentFragment where
+  toGObject = GObject . unDocumentFragment
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = DocumentFragment . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToDocumentFragment :: IsGObject obj => obj -> JSM DocumentFragment
+castToDocumentFragment = castTo gTypeDocumentFragment "DocumentFragment"
+
+gTypeDocumentFragment :: JSM GType
+gTypeDocumentFragment = GType . Object <$> jsg "DocumentFragment"
+#else
+type IsDocumentFragment o = DocumentFragmentClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.DocumentType".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/DocumentType Mozilla DocumentType documentation>
+newtype DocumentType = DocumentType { unDocumentType :: JSVal }
+
+instance PToJSVal DocumentType where
+  pToJSVal = unDocumentType
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DocumentType where
+  pFromJSVal = DocumentType
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DocumentType where
+  toJSVal = return . unDocumentType
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DocumentType where
+  fromJSVal v = fmap DocumentType <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject DocumentType where
+  makeObject = makeObject . unDocumentType
+
+instance IsNode DocumentType
+instance IsEventTarget DocumentType
+instance IsGObject DocumentType where
+  toGObject = GObject . unDocumentType
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = DocumentType . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToDocumentType :: IsGObject obj => obj -> JSM DocumentType
+castToDocumentType = castTo gTypeDocumentType "DocumentType"
+
+gTypeDocumentType :: JSM GType
+gTypeDocumentType = GType . Object <$> jsg "DocumentType"
+#else
+type IsDocumentType o = DocumentTypeClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.DynamicsCompressorNode".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.AudioNode"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/DynamicsCompressorNode Mozilla DynamicsCompressorNode documentation>
+newtype DynamicsCompressorNode = DynamicsCompressorNode { unDynamicsCompressorNode :: JSVal }
+
+instance PToJSVal DynamicsCompressorNode where
+  pToJSVal = unDynamicsCompressorNode
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DynamicsCompressorNode where
+  pFromJSVal = DynamicsCompressorNode
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DynamicsCompressorNode where
+  toJSVal = return . unDynamicsCompressorNode
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DynamicsCompressorNode where
+  fromJSVal v = fmap DynamicsCompressorNode <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject DynamicsCompressorNode where
+  makeObject = makeObject . unDynamicsCompressorNode
+
+instance IsAudioNode DynamicsCompressorNode
+instance IsEventTarget DynamicsCompressorNode
+instance IsGObject DynamicsCompressorNode where
+  toGObject = GObject . unDynamicsCompressorNode
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = DynamicsCompressorNode . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToDynamicsCompressorNode :: IsGObject obj => obj -> JSM DynamicsCompressorNode
+castToDynamicsCompressorNode = castTo gTypeDynamicsCompressorNode "DynamicsCompressorNode"
+
+gTypeDynamicsCompressorNode :: JSM GType
+gTypeDynamicsCompressorNode = GType . Object <$> jsg "DynamicsCompressorNode"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.EXTBlendMinMax".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/EXTBlendMinMax Mozilla EXTBlendMinMax documentation>
+newtype EXTBlendMinMax = EXTBlendMinMax { unEXTBlendMinMax :: JSVal }
+
+instance PToJSVal EXTBlendMinMax where
+  pToJSVal = unEXTBlendMinMax
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal EXTBlendMinMax where
+  pFromJSVal = EXTBlendMinMax
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal EXTBlendMinMax where
+  toJSVal = return . unEXTBlendMinMax
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal EXTBlendMinMax where
+  fromJSVal v = fmap EXTBlendMinMax <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject EXTBlendMinMax where
+  makeObject = makeObject . unEXTBlendMinMax
+
+instance IsGObject EXTBlendMinMax where
+  toGObject = GObject . unEXTBlendMinMax
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = EXTBlendMinMax . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToEXTBlendMinMax :: IsGObject obj => obj -> JSM EXTBlendMinMax
+castToEXTBlendMinMax = castTo gTypeEXTBlendMinMax "EXTBlendMinMax"
+
+gTypeEXTBlendMinMax :: JSM GType
+gTypeEXTBlendMinMax = GType . Object <$> jsg "EXTBlendMinMax"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.EXTFragDepth".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/EXTFragDepth Mozilla EXTFragDepth documentation>
+newtype EXTFragDepth = EXTFragDepth { unEXTFragDepth :: JSVal }
+
+instance PToJSVal EXTFragDepth where
+  pToJSVal = unEXTFragDepth
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal EXTFragDepth where
+  pFromJSVal = EXTFragDepth
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal EXTFragDepth where
+  toJSVal = return . unEXTFragDepth
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal EXTFragDepth where
+  fromJSVal v = fmap EXTFragDepth <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject EXTFragDepth where
+  makeObject = makeObject . unEXTFragDepth
+
+instance IsGObject EXTFragDepth where
+  toGObject = GObject . unEXTFragDepth
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = EXTFragDepth . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToEXTFragDepth :: IsGObject obj => obj -> JSM EXTFragDepth
+castToEXTFragDepth = castTo gTypeEXTFragDepth "EXTFragDepth"
+
+gTypeEXTFragDepth :: JSM GType
+gTypeEXTFragDepth = GType . Object <$> jsg "EXTFragDepth"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.EXTShaderTextureLOD".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/EXTShaderTextureLOD Mozilla EXTShaderTextureLOD documentation>
+newtype EXTShaderTextureLOD = EXTShaderTextureLOD { unEXTShaderTextureLOD :: JSVal }
+
+instance PToJSVal EXTShaderTextureLOD where
+  pToJSVal = unEXTShaderTextureLOD
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal EXTShaderTextureLOD where
+  pFromJSVal = EXTShaderTextureLOD
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal EXTShaderTextureLOD where
+  toJSVal = return . unEXTShaderTextureLOD
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal EXTShaderTextureLOD where
+  fromJSVal v = fmap EXTShaderTextureLOD <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject EXTShaderTextureLOD where
+  makeObject = makeObject . unEXTShaderTextureLOD
+
+instance IsGObject EXTShaderTextureLOD where
+  toGObject = GObject . unEXTShaderTextureLOD
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = EXTShaderTextureLOD . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToEXTShaderTextureLOD :: IsGObject obj => obj -> JSM EXTShaderTextureLOD
+castToEXTShaderTextureLOD = castTo gTypeEXTShaderTextureLOD "EXTShaderTextureLOD"
+
+gTypeEXTShaderTextureLOD :: JSM GType
+gTypeEXTShaderTextureLOD = GType . Object <$> jsg "EXTShaderTextureLOD"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.EXTTextureFilterAnisotropic".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/EXTTextureFilterAnisotropic Mozilla EXTTextureFilterAnisotropic documentation>
+newtype EXTTextureFilterAnisotropic = EXTTextureFilterAnisotropic { unEXTTextureFilterAnisotropic :: JSVal }
+
+instance PToJSVal EXTTextureFilterAnisotropic where
+  pToJSVal = unEXTTextureFilterAnisotropic
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal EXTTextureFilterAnisotropic where
+  pFromJSVal = EXTTextureFilterAnisotropic
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal EXTTextureFilterAnisotropic where
+  toJSVal = return . unEXTTextureFilterAnisotropic
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal EXTTextureFilterAnisotropic where
+  fromJSVal v = fmap EXTTextureFilterAnisotropic <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject EXTTextureFilterAnisotropic where
+  makeObject = makeObject . unEXTTextureFilterAnisotropic
+
+instance IsGObject EXTTextureFilterAnisotropic where
+  toGObject = GObject . unEXTTextureFilterAnisotropic
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = EXTTextureFilterAnisotropic . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToEXTTextureFilterAnisotropic :: IsGObject obj => obj -> JSM EXTTextureFilterAnisotropic
+castToEXTTextureFilterAnisotropic = castTo gTypeEXTTextureFilterAnisotropic "EXTTextureFilterAnisotropic"
+
+gTypeEXTTextureFilterAnisotropic :: JSM GType
+gTypeEXTTextureFilterAnisotropic = GType . Object <$> jsg "EXTTextureFilterAnisotropic"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.EXTsRGB".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/EXTsRGB Mozilla EXTsRGB documentation>
+newtype EXTsRGB = EXTsRGB { unEXTsRGB :: JSVal }
+
+instance PToJSVal EXTsRGB where
+  pToJSVal = unEXTsRGB
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal EXTsRGB where
+  pFromJSVal = EXTsRGB
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal EXTsRGB where
+  toJSVal = return . unEXTsRGB
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal EXTsRGB where
+  fromJSVal v = fmap EXTsRGB <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject EXTsRGB where
+  makeObject = makeObject . unEXTsRGB
+
+instance IsGObject EXTsRGB where
+  toGObject = GObject . unEXTsRGB
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = EXTsRGB . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToEXTsRGB :: IsGObject obj => obj -> JSM EXTsRGB
+castToEXTsRGB = castTo gTypeEXTsRGB "EXTsRGB"
+
+gTypeEXTsRGB :: JSM GType
+gTypeEXTsRGB = GType . Object <$> jsg "EXTsRGB"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.Element".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Element Mozilla Element documentation>
+newtype Element = Element { unElement :: JSVal }
+
+instance PToJSVal Element where
+  pToJSVal = unElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Element where
+  pFromJSVal = Element
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Element where
+  toJSVal = return . unElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Element where
+  fromJSVal v = fmap Element <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject Element where
+  makeObject = makeObject . unElement
+
+class IsNode o => IsElement o
+toElement :: IsElement o => o -> Element
+toElement = unsafeCastGObject . toGObject
+
+instance IsElement Element
+instance IsNode Element
+instance IsEventTarget Element
+instance IsGObject Element where
+  toGObject = GObject . unElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Element . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToElement :: IsGObject obj => obj -> JSM Element
+castToElement = castTo gTypeElement "Element"
+
+gTypeElement :: JSM GType
+gTypeElement = GType . Object <$> jsg "Element"
+#else
+type IsElement o = ElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.Entity".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Entity Mozilla Entity documentation>
+newtype Entity = Entity { unEntity :: JSVal }
+
+instance PToJSVal Entity where
+  pToJSVal = unEntity
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Entity where
+  pFromJSVal = Entity
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Entity where
+  toJSVal = return . unEntity
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Entity where
+  fromJSVal v = fmap Entity <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject Entity where
+  makeObject = makeObject . unEntity
+
+instance IsNode Entity
+instance IsEventTarget Entity
+instance IsGObject Entity where
+  toGObject = GObject . unEntity
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Entity . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToEntity :: IsGObject obj => obj -> JSM Entity
+castToEntity = castTo gTypeEntity "Entity"
+
+gTypeEntity :: JSM GType
+gTypeEntity = GType . Object <$> jsg "Entity"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.EntityReference".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/EntityReference Mozilla EntityReference documentation>
+newtype EntityReference = EntityReference { unEntityReference :: JSVal }
+
+instance PToJSVal EntityReference where
+  pToJSVal = unEntityReference
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal EntityReference where
+  pFromJSVal = EntityReference
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal EntityReference where
+  toJSVal = return . unEntityReference
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal EntityReference where
+  fromJSVal v = fmap EntityReference <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject EntityReference where
+  makeObject = makeObject . unEntityReference
+
+instance IsNode EntityReference
+instance IsEventTarget EntityReference
+instance IsGObject EntityReference where
+  toGObject = GObject . unEntityReference
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = EntityReference . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToEntityReference :: IsGObject obj => obj -> JSM EntityReference
+castToEntityReference = castTo gTypeEntityReference "EntityReference"
+
+gTypeEntityReference :: JSM GType
+gTypeEntityReference = GType . Object <$> jsg "EntityReference"
+#else
+type IsEntityReference o = EntityReferenceClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.ErrorEvent".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ErrorEvent Mozilla ErrorEvent documentation>
+newtype ErrorEvent = ErrorEvent { unErrorEvent :: JSVal }
+
+instance PToJSVal ErrorEvent where
+  pToJSVal = unErrorEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ErrorEvent where
+  pFromJSVal = ErrorEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ErrorEvent where
+  toJSVal = return . unErrorEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ErrorEvent where
+  fromJSVal v = fmap ErrorEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject ErrorEvent where
+  makeObject = makeObject . unErrorEvent
+
+instance IsEvent ErrorEvent
+instance IsGObject ErrorEvent where
+  toGObject = GObject . unErrorEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = ErrorEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToErrorEvent :: IsGObject obj => obj -> JSM ErrorEvent
+castToErrorEvent = castTo gTypeErrorEvent "ErrorEvent"
+
+gTypeErrorEvent :: JSM GType
+gTypeErrorEvent = GType . Object <$> jsg "ErrorEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.Event".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Event Mozilla Event documentation>
+newtype Event = Event { unEvent :: JSVal }
+
+instance PToJSVal Event where
+  pToJSVal = unEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Event where
+  pFromJSVal = Event
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Event where
+  toJSVal = return . unEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Event where
+  fromJSVal v = fmap Event <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject Event where
+  makeObject = makeObject . unEvent
+
+class IsGObject o => IsEvent o
+toEvent :: IsEvent o => o -> Event
+toEvent = unsafeCastGObject . toGObject
+
+instance IsEvent Event
+instance IsGObject Event where
+  toGObject = GObject . unEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Event . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToEvent :: IsGObject obj => obj -> JSM Event
+castToEvent = castTo gTypeEvent "Event"
+
+gTypeEvent :: JSM GType
+gTypeEvent = GType . Object <$> jsg "Event"
+#else
+type IsEvent o = EventClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.EventListener".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/EventListener Mozilla EventListener documentation>
+newtype EventListener = EventListener { unEventListener :: JSVal }
+
+instance PToJSVal EventListener where
+  pToJSVal = unEventListener
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal EventListener where
+  pFromJSVal = EventListener
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal EventListener where
+  toJSVal = return . unEventListener
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal EventListener where
+  fromJSVal v = fmap EventListener <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject EventListener where
+  makeObject = makeObject . unEventListener
+
+instance IsGObject EventListener where
+  toGObject = GObject . unEventListener
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = EventListener . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToEventListener :: IsGObject obj => obj -> JSM EventListener
+castToEventListener = castTo gTypeEventListener "EventListener"
+
+gTypeEventListener :: JSM GType
+gTypeEventListener = GType . Object <$> jsg "EventListener"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.EventSource".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/EventSource Mozilla EventSource documentation>
+newtype EventSource = EventSource { unEventSource :: JSVal }
+
+instance PToJSVal EventSource where
+  pToJSVal = unEventSource
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal EventSource where
+  pFromJSVal = EventSource
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal EventSource where
+  toJSVal = return . unEventSource
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal EventSource where
+  fromJSVal v = fmap EventSource <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject EventSource where
+  makeObject = makeObject . unEventSource
+
+instance IsEventTarget EventSource
+instance IsGObject EventSource where
+  toGObject = GObject . unEventSource
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = EventSource . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToEventSource :: IsGObject obj => obj -> JSM EventSource
+castToEventSource = castTo gTypeEventSource "EventSource"
+
+gTypeEventSource :: JSM GType
+gTypeEventSource = GType . Object <$> jsg "EventSource"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.EventTarget".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/EventTarget Mozilla EventTarget documentation>
+newtype EventTarget = EventTarget { unEventTarget :: JSVal }
+
+instance PToJSVal EventTarget where
+  pToJSVal = unEventTarget
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal EventTarget where
+  pFromJSVal = EventTarget
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal EventTarget where
+  toJSVal = return . unEventTarget
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal EventTarget where
+  fromJSVal v = fmap EventTarget <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject EventTarget where
+  makeObject = makeObject . unEventTarget
+
+class IsGObject o => IsEventTarget o
+toEventTarget :: IsEventTarget o => o -> EventTarget
+toEventTarget = unsafeCastGObject . toGObject
+
+instance IsEventTarget EventTarget
+instance IsGObject EventTarget where
+  toGObject = GObject . unEventTarget
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = EventTarget . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToEventTarget :: IsGObject obj => obj -> JSM EventTarget
+castToEventTarget = castTo gTypeEventTarget "EventTarget"
+
+gTypeEventTarget :: JSM GType
+gTypeEventTarget = GType . Object <$> jsg "EventTarget"
+#else
+type IsEventTarget o = EventTargetClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.File".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.Blob"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/File Mozilla File documentation>
+newtype File = File { unFile :: JSVal }
+
+instance PToJSVal File where
+  pToJSVal = unFile
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal File where
+  pFromJSVal = File
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal File where
+  toJSVal = return . unFile
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal File where
+  fromJSVal v = fmap File <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject File where
+  makeObject = makeObject . unFile
+
+instance IsBlob File
+instance IsGObject File where
+  toGObject = GObject . unFile
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = File . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToFile :: IsGObject obj => obj -> JSM File
+castToFile = castTo gTypeFile "File"
+
+gTypeFile :: JSM GType
+gTypeFile = GType . Object <$> jsg "File"
+#else
+type IsFile o = FileClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.FileError".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/FileError Mozilla FileError documentation>
+newtype FileError = FileError { unFileError :: JSVal }
+
+instance PToJSVal FileError where
+  pToJSVal = unFileError
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal FileError where
+  pFromJSVal = FileError
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal FileError where
+  toJSVal = return . unFileError
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal FileError where
+  fromJSVal v = fmap FileError <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject FileError where
+  makeObject = makeObject . unFileError
+
+instance IsGObject FileError where
+  toGObject = GObject . unFileError
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = FileError . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToFileError :: IsGObject obj => obj -> JSM FileError
+castToFileError = castTo gTypeFileError "FileError"
+
+gTypeFileError :: JSM GType
+gTypeFileError = GType . Object <$> jsg "FileError"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.FileList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/FileList Mozilla FileList documentation>
+newtype FileList = FileList { unFileList :: JSVal }
+
+instance PToJSVal FileList where
+  pToJSVal = unFileList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal FileList where
+  pFromJSVal = FileList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal FileList where
+  toJSVal = return . unFileList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal FileList where
+  fromJSVal v = fmap FileList <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject FileList where
+  makeObject = makeObject . unFileList
+
+instance IsGObject FileList where
+  toGObject = GObject . unFileList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = FileList . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToFileList :: IsGObject obj => obj -> JSM FileList
+castToFileList = castTo gTypeFileList "FileList"
+
+gTypeFileList :: JSM GType
+gTypeFileList = GType . Object <$> jsg "FileList"
+#else
+type IsFileList o = FileListClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.FileReader".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/FileReader Mozilla FileReader documentation>
+newtype FileReader = FileReader { unFileReader :: JSVal }
+
+instance PToJSVal FileReader where
+  pToJSVal = unFileReader
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal FileReader where
+  pFromJSVal = FileReader
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal FileReader where
+  toJSVal = return . unFileReader
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal FileReader where
+  fromJSVal v = fmap FileReader <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject FileReader where
+  makeObject = makeObject . unFileReader
+
+instance IsEventTarget FileReader
+instance IsGObject FileReader where
+  toGObject = GObject . unFileReader
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = FileReader . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToFileReader :: IsGObject obj => obj -> JSM FileReader
+castToFileReader = castTo gTypeFileReader "FileReader"
+
+gTypeFileReader :: JSM GType
+gTypeFileReader = GType . Object <$> jsg "FileReader"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.FileReaderSync".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/FileReaderSync Mozilla FileReaderSync documentation>
+newtype FileReaderSync = FileReaderSync { unFileReaderSync :: JSVal }
+
+instance PToJSVal FileReaderSync where
+  pToJSVal = unFileReaderSync
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal FileReaderSync where
+  pFromJSVal = FileReaderSync
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal FileReaderSync where
+  toJSVal = return . unFileReaderSync
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal FileReaderSync where
+  fromJSVal v = fmap FileReaderSync <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject FileReaderSync where
+  makeObject = makeObject . unFileReaderSync
+
+instance IsGObject FileReaderSync where
+  toGObject = GObject . unFileReaderSync
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = FileReaderSync . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToFileReaderSync :: IsGObject obj => obj -> JSM FileReaderSync
+castToFileReaderSync = castTo gTypeFileReaderSync "FileReaderSync"
+
+gTypeFileReaderSync :: JSM GType
+gTypeFileReaderSync = GType . Object <$> jsg "FileReaderSync"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.FocusEvent".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.UIEvent"
+--     * "Language.Javascript.JSaddle.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/FocusEvent Mozilla FocusEvent documentation>
+newtype FocusEvent = FocusEvent { unFocusEvent :: JSVal }
+
+instance PToJSVal FocusEvent where
+  pToJSVal = unFocusEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal FocusEvent where
+  pFromJSVal = FocusEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal FocusEvent where
+  toJSVal = return . unFocusEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal FocusEvent where
+  fromJSVal v = fmap FocusEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject FocusEvent where
+  makeObject = makeObject . unFocusEvent
+
+instance IsUIEvent FocusEvent
+instance IsEvent FocusEvent
+instance IsGObject FocusEvent where
+  toGObject = GObject . unFocusEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = FocusEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToFocusEvent :: IsGObject obj => obj -> JSM FocusEvent
+castToFocusEvent = castTo gTypeFocusEvent "FocusEvent"
+
+gTypeFocusEvent :: JSM GType
+gTypeFocusEvent = GType . Object <$> jsg "FocusEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.FontLoader".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/FontLoader Mozilla FontLoader documentation>
+newtype FontLoader = FontLoader { unFontLoader :: JSVal }
+
+instance PToJSVal FontLoader where
+  pToJSVal = unFontLoader
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal FontLoader where
+  pFromJSVal = FontLoader
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal FontLoader where
+  toJSVal = return . unFontLoader
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal FontLoader where
+  fromJSVal v = fmap FontLoader <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject FontLoader where
+  makeObject = makeObject . unFontLoader
+
+instance IsEventTarget FontLoader
+instance IsGObject FontLoader where
+  toGObject = GObject . unFontLoader
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = FontLoader . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToFontLoader :: IsGObject obj => obj -> JSM FontLoader
+castToFontLoader = castTo gTypeFontLoader "FontLoader"
+
+gTypeFontLoader :: JSM GType
+gTypeFontLoader = GType . Object <$> jsg "FontLoader"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.FormData".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/FormData Mozilla FormData documentation>
+newtype FormData = FormData { unFormData :: JSVal }
+
+instance PToJSVal FormData where
+  pToJSVal = unFormData
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal FormData where
+  pFromJSVal = FormData
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal FormData where
+  toJSVal = return . unFormData
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal FormData where
+  fromJSVal v = fmap FormData <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject FormData where
+  makeObject = makeObject . unFormData
+
+instance IsGObject FormData where
+  toGObject = GObject . unFormData
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = FormData . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToFormData :: IsGObject obj => obj -> JSM FormData
+castToFormData = castTo gTypeFormData "FormData"
+
+gTypeFormData :: JSM GType
+gTypeFormData = GType . Object <$> jsg "FormData"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.GainNode".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.AudioNode"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/GainNode Mozilla GainNode documentation>
+newtype GainNode = GainNode { unGainNode :: JSVal }
+
+instance PToJSVal GainNode where
+  pToJSVal = unGainNode
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal GainNode where
+  pFromJSVal = GainNode
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal GainNode where
+  toJSVal = return . unGainNode
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal GainNode where
+  fromJSVal v = fmap GainNode <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject GainNode where
+  makeObject = makeObject . unGainNode
+
+instance IsAudioNode GainNode
+instance IsEventTarget GainNode
+instance IsGObject GainNode where
+  toGObject = GObject . unGainNode
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = GainNode . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToGainNode :: IsGObject obj => obj -> JSM GainNode
+castToGainNode = castTo gTypeGainNode "GainNode"
+
+gTypeGainNode :: JSM GType
+gTypeGainNode = GType . Object <$> jsg "GainNode"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.Gamepad".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Gamepad Mozilla Gamepad documentation>
+newtype Gamepad = Gamepad { unGamepad :: JSVal }
+
+instance PToJSVal Gamepad where
+  pToJSVal = unGamepad
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Gamepad where
+  pFromJSVal = Gamepad
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Gamepad where
+  toJSVal = return . unGamepad
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Gamepad where
+  fromJSVal v = fmap Gamepad <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject Gamepad where
+  makeObject = makeObject . unGamepad
+
+instance IsGObject Gamepad where
+  toGObject = GObject . unGamepad
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Gamepad . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToGamepad :: IsGObject obj => obj -> JSM Gamepad
+castToGamepad = castTo gTypeGamepad "Gamepad"
+
+gTypeGamepad :: JSM GType
+gTypeGamepad = GType . Object <$> jsg "Gamepad"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.GamepadButton".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/GamepadButton Mozilla GamepadButton documentation>
+newtype GamepadButton = GamepadButton { unGamepadButton :: JSVal }
+
+instance PToJSVal GamepadButton where
+  pToJSVal = unGamepadButton
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal GamepadButton where
+  pFromJSVal = GamepadButton
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal GamepadButton where
+  toJSVal = return . unGamepadButton
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal GamepadButton where
+  fromJSVal v = fmap GamepadButton <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject GamepadButton where
+  makeObject = makeObject . unGamepadButton
+
+instance IsGObject GamepadButton where
+  toGObject = GObject . unGamepadButton
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = GamepadButton . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToGamepadButton :: IsGObject obj => obj -> JSM GamepadButton
+castToGamepadButton = castTo gTypeGamepadButton "GamepadButton"
+
+gTypeGamepadButton :: JSM GType
+gTypeGamepadButton = GType . Object <$> jsg "GamepadButton"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.GamepadEvent".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/GamepadEvent Mozilla GamepadEvent documentation>
+newtype GamepadEvent = GamepadEvent { unGamepadEvent :: JSVal }
+
+instance PToJSVal GamepadEvent where
+  pToJSVal = unGamepadEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal GamepadEvent where
+  pFromJSVal = GamepadEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal GamepadEvent where
+  toJSVal = return . unGamepadEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal GamepadEvent where
+  fromJSVal v = fmap GamepadEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject GamepadEvent where
+  makeObject = makeObject . unGamepadEvent
+
+instance IsEvent GamepadEvent
+instance IsGObject GamepadEvent where
+  toGObject = GObject . unGamepadEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = GamepadEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToGamepadEvent :: IsGObject obj => obj -> JSM GamepadEvent
+castToGamepadEvent = castTo gTypeGamepadEvent "GamepadEvent"
+
+gTypeGamepadEvent :: JSM GType
+gTypeGamepadEvent = GType . Object <$> jsg "GamepadEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.Geolocation".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Geolocation Mozilla Geolocation documentation>
+newtype Geolocation = Geolocation { unGeolocation :: JSVal }
+
+instance PToJSVal Geolocation where
+  pToJSVal = unGeolocation
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Geolocation where
+  pFromJSVal = Geolocation
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Geolocation where
+  toJSVal = return . unGeolocation
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Geolocation where
+  fromJSVal v = fmap Geolocation <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject Geolocation where
+  makeObject = makeObject . unGeolocation
+
+instance IsGObject Geolocation where
+  toGObject = GObject . unGeolocation
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Geolocation . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToGeolocation :: IsGObject obj => obj -> JSM Geolocation
+castToGeolocation = castTo gTypeGeolocation "Geolocation"
+
+gTypeGeolocation :: JSM GType
+gTypeGeolocation = GType . Object <$> jsg "Geolocation"
+#else
+type IsGeolocation o = GeolocationClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.Geoposition".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Geoposition Mozilla Geoposition documentation>
+newtype Geoposition = Geoposition { unGeoposition :: JSVal }
+
+instance PToJSVal Geoposition where
+  pToJSVal = unGeoposition
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Geoposition where
+  pFromJSVal = Geoposition
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Geoposition where
+  toJSVal = return . unGeoposition
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Geoposition where
+  fromJSVal v = fmap Geoposition <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject Geoposition where
+  makeObject = makeObject . unGeoposition
+
+instance IsGObject Geoposition where
+  toGObject = GObject . unGeoposition
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Geoposition . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToGeoposition :: IsGObject obj => obj -> JSM Geoposition
+castToGeoposition = castTo gTypeGeoposition "Geoposition"
+
+gTypeGeoposition :: JSM GType
+gTypeGeoposition = GType . Object <$> jsg "Geoposition"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLAllCollection".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAllCollection Mozilla HTMLAllCollection documentation>
+newtype HTMLAllCollection = HTMLAllCollection { unHTMLAllCollection :: JSVal }
+
+instance PToJSVal HTMLAllCollection where
+  pToJSVal = unHTMLAllCollection
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLAllCollection where
+  pFromJSVal = HTMLAllCollection
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLAllCollection where
+  toJSVal = return . unHTMLAllCollection
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLAllCollection where
+  fromJSVal v = fmap HTMLAllCollection <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLAllCollection where
+  makeObject = makeObject . unHTMLAllCollection
+
+instance IsGObject HTMLAllCollection where
+  toGObject = GObject . unHTMLAllCollection
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLAllCollection . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLAllCollection :: IsGObject obj => obj -> JSM HTMLAllCollection
+castToHTMLAllCollection = castTo gTypeHTMLAllCollection "HTMLAllCollection"
+
+gTypeHTMLAllCollection :: JSM GType
+gTypeHTMLAllCollection = GType . Object <$> jsg "HTMLAllCollection"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLAnchorElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.HTMLElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement Mozilla HTMLAnchorElement documentation>
+newtype HTMLAnchorElement = HTMLAnchorElement { unHTMLAnchorElement :: JSVal }
+
+instance PToJSVal HTMLAnchorElement where
+  pToJSVal = unHTMLAnchorElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLAnchorElement where
+  pFromJSVal = HTMLAnchorElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLAnchorElement where
+  toJSVal = return . unHTMLAnchorElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLAnchorElement where
+  fromJSVal v = fmap HTMLAnchorElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLAnchorElement where
+  makeObject = makeObject . unHTMLAnchorElement
+
+instance IsHTMLElement HTMLAnchorElement
+instance IsElement HTMLAnchorElement
+instance IsNode HTMLAnchorElement
+instance IsEventTarget HTMLAnchorElement
+instance IsGObject HTMLAnchorElement where
+  toGObject = GObject . unHTMLAnchorElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLAnchorElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLAnchorElement :: IsGObject obj => obj -> JSM HTMLAnchorElement
+castToHTMLAnchorElement = castTo gTypeHTMLAnchorElement "HTMLAnchorElement"
+
+gTypeHTMLAnchorElement :: JSM GType
+gTypeHTMLAnchorElement = GType . Object <$> jsg "HTMLAnchorElement"
+#else
+type IsHTMLAnchorElement o = HTMLAnchorElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLAppletElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.HTMLElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement Mozilla HTMLAppletElement documentation>
+newtype HTMLAppletElement = HTMLAppletElement { unHTMLAppletElement :: JSVal }
+
+instance PToJSVal HTMLAppletElement where
+  pToJSVal = unHTMLAppletElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLAppletElement where
+  pFromJSVal = HTMLAppletElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLAppletElement where
+  toJSVal = return . unHTMLAppletElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLAppletElement where
+  fromJSVal v = fmap HTMLAppletElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLAppletElement where
+  makeObject = makeObject . unHTMLAppletElement
+
+instance IsHTMLElement HTMLAppletElement
+instance IsElement HTMLAppletElement
+instance IsNode HTMLAppletElement
+instance IsEventTarget HTMLAppletElement
+instance IsGObject HTMLAppletElement where
+  toGObject = GObject . unHTMLAppletElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLAppletElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLAppletElement :: IsGObject obj => obj -> JSM HTMLAppletElement
+castToHTMLAppletElement = castTo gTypeHTMLAppletElement "HTMLAppletElement"
+
+gTypeHTMLAppletElement :: JSM GType
+gTypeHTMLAppletElement = GType . Object <$> jsg "HTMLAppletElement"
+#else
+type IsHTMLAppletElement o = HTMLAppletElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLAreaElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.HTMLElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement Mozilla HTMLAreaElement documentation>
+newtype HTMLAreaElement = HTMLAreaElement { unHTMLAreaElement :: JSVal }
+
+instance PToJSVal HTMLAreaElement where
+  pToJSVal = unHTMLAreaElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLAreaElement where
+  pFromJSVal = HTMLAreaElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLAreaElement where
+  toJSVal = return . unHTMLAreaElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLAreaElement where
+  fromJSVal v = fmap HTMLAreaElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLAreaElement where
+  makeObject = makeObject . unHTMLAreaElement
+
+instance IsHTMLElement HTMLAreaElement
+instance IsElement HTMLAreaElement
+instance IsNode HTMLAreaElement
+instance IsEventTarget HTMLAreaElement
+instance IsGObject HTMLAreaElement where
+  toGObject = GObject . unHTMLAreaElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLAreaElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLAreaElement :: IsGObject obj => obj -> JSM HTMLAreaElement
+castToHTMLAreaElement = castTo gTypeHTMLAreaElement "HTMLAreaElement"
+
+gTypeHTMLAreaElement :: JSM GType
+gTypeHTMLAreaElement = GType . Object <$> jsg "HTMLAreaElement"
+#else
+type IsHTMLAreaElement o = HTMLAreaElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLAudioElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.HTMLMediaElement"
+--     * "Language.Javascript.JSaddle.DOM.HTMLElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAudioElement Mozilla HTMLAudioElement documentation>
+newtype HTMLAudioElement = HTMLAudioElement { unHTMLAudioElement :: JSVal }
+
+instance PToJSVal HTMLAudioElement where
+  pToJSVal = unHTMLAudioElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLAudioElement where
+  pFromJSVal = HTMLAudioElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLAudioElement where
+  toJSVal = return . unHTMLAudioElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLAudioElement where
+  fromJSVal v = fmap HTMLAudioElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLAudioElement where
+  makeObject = makeObject . unHTMLAudioElement
+
+instance IsHTMLMediaElement HTMLAudioElement
+instance IsHTMLElement HTMLAudioElement
+instance IsElement HTMLAudioElement
+instance IsNode HTMLAudioElement
+instance IsEventTarget HTMLAudioElement
+instance IsGObject HTMLAudioElement where
+  toGObject = GObject . unHTMLAudioElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLAudioElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLAudioElement :: IsGObject obj => obj -> JSM HTMLAudioElement
+castToHTMLAudioElement = castTo gTypeHTMLAudioElement "HTMLAudioElement"
+
+gTypeHTMLAudioElement :: JSM GType
+gTypeHTMLAudioElement = GType . Object <$> jsg "HTMLAudioElement"
+#else
+type IsHTMLAudioElement o = HTMLAudioElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLBRElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.HTMLElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBRElement Mozilla HTMLBRElement documentation>
+newtype HTMLBRElement = HTMLBRElement { unHTMLBRElement :: JSVal }
+
+instance PToJSVal HTMLBRElement where
+  pToJSVal = unHTMLBRElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLBRElement where
+  pFromJSVal = HTMLBRElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLBRElement where
+  toJSVal = return . unHTMLBRElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLBRElement where
+  fromJSVal v = fmap HTMLBRElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLBRElement where
+  makeObject = makeObject . unHTMLBRElement
+
+instance IsHTMLElement HTMLBRElement
+instance IsElement HTMLBRElement
+instance IsNode HTMLBRElement
+instance IsEventTarget HTMLBRElement
+instance IsGObject HTMLBRElement where
+  toGObject = GObject . unHTMLBRElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLBRElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLBRElement :: IsGObject obj => obj -> JSM HTMLBRElement
+castToHTMLBRElement = castTo gTypeHTMLBRElement "HTMLBRElement"
+
+gTypeHTMLBRElement :: JSM GType
+gTypeHTMLBRElement = GType . Object <$> jsg "HTMLBRElement"
+#else
+type IsHTMLBRElement o = HTMLBRElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLBaseElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.HTMLElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBaseElement Mozilla HTMLBaseElement documentation>
+newtype HTMLBaseElement = HTMLBaseElement { unHTMLBaseElement :: JSVal }
+
+instance PToJSVal HTMLBaseElement where
+  pToJSVal = unHTMLBaseElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLBaseElement where
+  pFromJSVal = HTMLBaseElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLBaseElement where
+  toJSVal = return . unHTMLBaseElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLBaseElement where
+  fromJSVal v = fmap HTMLBaseElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLBaseElement where
+  makeObject = makeObject . unHTMLBaseElement
+
+instance IsHTMLElement HTMLBaseElement
+instance IsElement HTMLBaseElement
+instance IsNode HTMLBaseElement
+instance IsEventTarget HTMLBaseElement
+instance IsGObject HTMLBaseElement where
+  toGObject = GObject . unHTMLBaseElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLBaseElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLBaseElement :: IsGObject obj => obj -> JSM HTMLBaseElement
+castToHTMLBaseElement = castTo gTypeHTMLBaseElement "HTMLBaseElement"
+
+gTypeHTMLBaseElement :: JSM GType
+gTypeHTMLBaseElement = GType . Object <$> jsg "HTMLBaseElement"
+#else
+type IsHTMLBaseElement o = HTMLBaseElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLBaseFontElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.HTMLElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBaseFontElement Mozilla HTMLBaseFontElement documentation>
+newtype HTMLBaseFontElement = HTMLBaseFontElement { unHTMLBaseFontElement :: JSVal }
+
+instance PToJSVal HTMLBaseFontElement where
+  pToJSVal = unHTMLBaseFontElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLBaseFontElement where
+  pFromJSVal = HTMLBaseFontElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLBaseFontElement where
+  toJSVal = return . unHTMLBaseFontElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLBaseFontElement where
+  fromJSVal v = fmap HTMLBaseFontElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLBaseFontElement where
+  makeObject = makeObject . unHTMLBaseFontElement
+
+instance IsHTMLElement HTMLBaseFontElement
+instance IsElement HTMLBaseFontElement
+instance IsNode HTMLBaseFontElement
+instance IsEventTarget HTMLBaseFontElement
+instance IsGObject HTMLBaseFontElement where
+  toGObject = GObject . unHTMLBaseFontElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLBaseFontElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLBaseFontElement :: IsGObject obj => obj -> JSM HTMLBaseFontElement
+castToHTMLBaseFontElement = castTo gTypeHTMLBaseFontElement "HTMLBaseFontElement"
+
+gTypeHTMLBaseFontElement :: JSM GType
+gTypeHTMLBaseFontElement = GType . Object <$> jsg "HTMLBaseFontElement"
+#else
+type IsHTMLBaseFontElement o = HTMLBaseFontElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLBodyElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.HTMLElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement Mozilla HTMLBodyElement documentation>
+newtype HTMLBodyElement = HTMLBodyElement { unHTMLBodyElement :: JSVal }
+
+instance PToJSVal HTMLBodyElement where
+  pToJSVal = unHTMLBodyElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLBodyElement where
+  pFromJSVal = HTMLBodyElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLBodyElement where
+  toJSVal = return . unHTMLBodyElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLBodyElement where
+  fromJSVal v = fmap HTMLBodyElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLBodyElement where
+  makeObject = makeObject . unHTMLBodyElement
+
+instance IsHTMLElement HTMLBodyElement
+instance IsElement HTMLBodyElement
+instance IsNode HTMLBodyElement
+instance IsEventTarget HTMLBodyElement
+instance IsGObject HTMLBodyElement where
+  toGObject = GObject . unHTMLBodyElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLBodyElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLBodyElement :: IsGObject obj => obj -> JSM HTMLBodyElement
+castToHTMLBodyElement = castTo gTypeHTMLBodyElement "HTMLBodyElement"
+
+gTypeHTMLBodyElement :: JSM GType
+gTypeHTMLBodyElement = GType . Object <$> jsg "HTMLBodyElement"
+#else
+type IsHTMLBodyElement o = HTMLBodyElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLButtonElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.HTMLElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement Mozilla HTMLButtonElement documentation>
+newtype HTMLButtonElement = HTMLButtonElement { unHTMLButtonElement :: JSVal }
+
+instance PToJSVal HTMLButtonElement where
+  pToJSVal = unHTMLButtonElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLButtonElement where
+  pFromJSVal = HTMLButtonElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLButtonElement where
+  toJSVal = return . unHTMLButtonElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLButtonElement where
+  fromJSVal v = fmap HTMLButtonElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLButtonElement where
+  makeObject = makeObject . unHTMLButtonElement
+
+instance IsHTMLElement HTMLButtonElement
+instance IsElement HTMLButtonElement
+instance IsNode HTMLButtonElement
+instance IsEventTarget HTMLButtonElement
+instance IsGObject HTMLButtonElement where
+  toGObject = GObject . unHTMLButtonElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLButtonElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLButtonElement :: IsGObject obj => obj -> JSM HTMLButtonElement
+castToHTMLButtonElement = castTo gTypeHTMLButtonElement "HTMLButtonElement"
+
+gTypeHTMLButtonElement :: JSM GType
+gTypeHTMLButtonElement = GType . Object <$> jsg "HTMLButtonElement"
+#else
+type IsHTMLButtonElement o = HTMLButtonElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLCanvasElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.HTMLElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement Mozilla HTMLCanvasElement documentation>
+newtype HTMLCanvasElement = HTMLCanvasElement { unHTMLCanvasElement :: JSVal }
+
+instance PToJSVal HTMLCanvasElement where
+  pToJSVal = unHTMLCanvasElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLCanvasElement where
+  pFromJSVal = HTMLCanvasElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLCanvasElement where
+  toJSVal = return . unHTMLCanvasElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLCanvasElement where
+  fromJSVal v = fmap HTMLCanvasElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLCanvasElement where
+  makeObject = makeObject . unHTMLCanvasElement
+
+instance IsHTMLElement HTMLCanvasElement
+instance IsElement HTMLCanvasElement
+instance IsNode HTMLCanvasElement
+instance IsEventTarget HTMLCanvasElement
+instance IsGObject HTMLCanvasElement where
+  toGObject = GObject . unHTMLCanvasElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLCanvasElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLCanvasElement :: IsGObject obj => obj -> JSM HTMLCanvasElement
+castToHTMLCanvasElement = castTo gTypeHTMLCanvasElement "HTMLCanvasElement"
+
+gTypeHTMLCanvasElement :: JSM GType
+gTypeHTMLCanvasElement = GType . Object <$> jsg "HTMLCanvasElement"
+#else
+type IsHTMLCanvasElement o = HTMLCanvasElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLCollection".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCollection Mozilla HTMLCollection documentation>
+newtype HTMLCollection = HTMLCollection { unHTMLCollection :: JSVal }
+
+instance PToJSVal HTMLCollection where
+  pToJSVal = unHTMLCollection
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLCollection where
+  pFromJSVal = HTMLCollection
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLCollection where
+  toJSVal = return . unHTMLCollection
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLCollection where
+  fromJSVal v = fmap HTMLCollection <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLCollection where
+  makeObject = makeObject . unHTMLCollection
+
+class IsGObject o => IsHTMLCollection o
+toHTMLCollection :: IsHTMLCollection o => o -> HTMLCollection
+toHTMLCollection = unsafeCastGObject . toGObject
+
+instance IsHTMLCollection HTMLCollection
+instance IsGObject HTMLCollection where
+  toGObject = GObject . unHTMLCollection
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLCollection . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLCollection :: IsGObject obj => obj -> JSM HTMLCollection
+castToHTMLCollection = castTo gTypeHTMLCollection "HTMLCollection"
+
+gTypeHTMLCollection :: JSM GType
+gTypeHTMLCollection = GType . Object <$> jsg "HTMLCollection"
+#else
+type IsHTMLCollection o = HTMLCollectionClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLDListElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.HTMLElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDListElement Mozilla HTMLDListElement documentation>
+newtype HTMLDListElement = HTMLDListElement { unHTMLDListElement :: JSVal }
+
+instance PToJSVal HTMLDListElement where
+  pToJSVal = unHTMLDListElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLDListElement where
+  pFromJSVal = HTMLDListElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLDListElement where
+  toJSVal = return . unHTMLDListElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLDListElement where
+  fromJSVal v = fmap HTMLDListElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLDListElement where
+  makeObject = makeObject . unHTMLDListElement
+
+instance IsHTMLElement HTMLDListElement
+instance IsElement HTMLDListElement
+instance IsNode HTMLDListElement
+instance IsEventTarget HTMLDListElement
+instance IsGObject HTMLDListElement where
+  toGObject = GObject . unHTMLDListElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLDListElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLDListElement :: IsGObject obj => obj -> JSM HTMLDListElement
+castToHTMLDListElement = castTo gTypeHTMLDListElement "HTMLDListElement"
+
+gTypeHTMLDListElement :: JSM GType
+gTypeHTMLDListElement = GType . Object <$> jsg "HTMLDListElement"
+#else
+type IsHTMLDListElement o = HTMLDListElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLDataListElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.HTMLElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDataListElement Mozilla HTMLDataListElement documentation>
+newtype HTMLDataListElement = HTMLDataListElement { unHTMLDataListElement :: JSVal }
+
+instance PToJSVal HTMLDataListElement where
+  pToJSVal = unHTMLDataListElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLDataListElement where
+  pFromJSVal = HTMLDataListElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLDataListElement where
+  toJSVal = return . unHTMLDataListElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLDataListElement where
+  fromJSVal v = fmap HTMLDataListElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLDataListElement where
+  makeObject = makeObject . unHTMLDataListElement
+
+instance IsHTMLElement HTMLDataListElement
+instance IsElement HTMLDataListElement
+instance IsNode HTMLDataListElement
+instance IsEventTarget HTMLDataListElement
+instance IsGObject HTMLDataListElement where
+  toGObject = GObject . unHTMLDataListElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLDataListElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLDataListElement :: IsGObject obj => obj -> JSM HTMLDataListElement
+castToHTMLDataListElement = castTo gTypeHTMLDataListElement "HTMLDataListElement"
+
+gTypeHTMLDataListElement :: JSM GType
+gTypeHTMLDataListElement = GType . Object <$> jsg "HTMLDataListElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLDetailsElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.HTMLElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDetailsElement Mozilla HTMLDetailsElement documentation>
+newtype HTMLDetailsElement = HTMLDetailsElement { unHTMLDetailsElement :: JSVal }
+
+instance PToJSVal HTMLDetailsElement where
+  pToJSVal = unHTMLDetailsElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLDetailsElement where
+  pFromJSVal = HTMLDetailsElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLDetailsElement where
+  toJSVal = return . unHTMLDetailsElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLDetailsElement where
+  fromJSVal v = fmap HTMLDetailsElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLDetailsElement where
+  makeObject = makeObject . unHTMLDetailsElement
+
+instance IsHTMLElement HTMLDetailsElement
+instance IsElement HTMLDetailsElement
+instance IsNode HTMLDetailsElement
+instance IsEventTarget HTMLDetailsElement
+instance IsGObject HTMLDetailsElement where
+  toGObject = GObject . unHTMLDetailsElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLDetailsElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLDetailsElement :: IsGObject obj => obj -> JSM HTMLDetailsElement
+castToHTMLDetailsElement = castTo gTypeHTMLDetailsElement "HTMLDetailsElement"
+
+gTypeHTMLDetailsElement :: JSM GType
+gTypeHTMLDetailsElement = GType . Object <$> jsg "HTMLDetailsElement"
+#else
+type IsHTMLDetailsElement o = HTMLDetailsElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLDirectoryElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.HTMLElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDirectoryElement Mozilla HTMLDirectoryElement documentation>
+newtype HTMLDirectoryElement = HTMLDirectoryElement { unHTMLDirectoryElement :: JSVal }
+
+instance PToJSVal HTMLDirectoryElement where
+  pToJSVal = unHTMLDirectoryElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLDirectoryElement where
+  pFromJSVal = HTMLDirectoryElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLDirectoryElement where
+  toJSVal = return . unHTMLDirectoryElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLDirectoryElement where
+  fromJSVal v = fmap HTMLDirectoryElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLDirectoryElement where
+  makeObject = makeObject . unHTMLDirectoryElement
+
+instance IsHTMLElement HTMLDirectoryElement
+instance IsElement HTMLDirectoryElement
+instance IsNode HTMLDirectoryElement
+instance IsEventTarget HTMLDirectoryElement
+instance IsGObject HTMLDirectoryElement where
+  toGObject = GObject . unHTMLDirectoryElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLDirectoryElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLDirectoryElement :: IsGObject obj => obj -> JSM HTMLDirectoryElement
+castToHTMLDirectoryElement = castTo gTypeHTMLDirectoryElement "HTMLDirectoryElement"
+
+gTypeHTMLDirectoryElement :: JSM GType
+gTypeHTMLDirectoryElement = GType . Object <$> jsg "HTMLDirectoryElement"
+#else
+type IsHTMLDirectoryElement o = HTMLDirectoryElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLDivElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.HTMLElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDivElement Mozilla HTMLDivElement documentation>
+newtype HTMLDivElement = HTMLDivElement { unHTMLDivElement :: JSVal }
+
+instance PToJSVal HTMLDivElement where
+  pToJSVal = unHTMLDivElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLDivElement where
+  pFromJSVal = HTMLDivElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLDivElement where
+  toJSVal = return . unHTMLDivElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLDivElement where
+  fromJSVal v = fmap HTMLDivElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLDivElement where
+  makeObject = makeObject . unHTMLDivElement
+
+instance IsHTMLElement HTMLDivElement
+instance IsElement HTMLDivElement
+instance IsNode HTMLDivElement
+instance IsEventTarget HTMLDivElement
+instance IsGObject HTMLDivElement where
+  toGObject = GObject . unHTMLDivElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLDivElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLDivElement :: IsGObject obj => obj -> JSM HTMLDivElement
+castToHTMLDivElement = castTo gTypeHTMLDivElement "HTMLDivElement"
+
+gTypeHTMLDivElement :: JSM GType
+gTypeHTMLDivElement = GType . Object <$> jsg "HTMLDivElement"
+#else
+type IsHTMLDivElement o = HTMLDivElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLDocument".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.Document"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument Mozilla HTMLDocument documentation>
+newtype HTMLDocument = HTMLDocument { unHTMLDocument :: JSVal }
+
+instance PToJSVal HTMLDocument where
+  pToJSVal = unHTMLDocument
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLDocument where
+  pFromJSVal = HTMLDocument
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLDocument where
+  toJSVal = return . unHTMLDocument
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLDocument where
+  fromJSVal v = fmap HTMLDocument <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLDocument where
+  makeObject = makeObject . unHTMLDocument
+
+instance IsDocument HTMLDocument
+instance IsNode HTMLDocument
+instance IsEventTarget HTMLDocument
+instance IsGObject HTMLDocument where
+  toGObject = GObject . unHTMLDocument
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLDocument . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLDocument :: IsGObject obj => obj -> JSM HTMLDocument
+castToHTMLDocument = castTo gTypeHTMLDocument "HTMLDocument"
+
+gTypeHTMLDocument :: JSM GType
+gTypeHTMLDocument = GType . Object <$> jsg "HTMLDocument"
+#else
+type IsHTMLDocument o = HTMLDocumentClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement Mozilla HTMLElement documentation>
+newtype HTMLElement = HTMLElement { unHTMLElement :: JSVal }
+
+instance PToJSVal HTMLElement where
+  pToJSVal = unHTMLElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLElement where
+  pFromJSVal = HTMLElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLElement where
+  toJSVal = return . unHTMLElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLElement where
+  fromJSVal v = fmap HTMLElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLElement where
+  makeObject = makeObject . unHTMLElement
+
+class IsElement o => IsHTMLElement o
+toHTMLElement :: IsHTMLElement o => o -> HTMLElement
+toHTMLElement = unsafeCastGObject . toGObject
+
+instance IsHTMLElement HTMLElement
+instance IsElement HTMLElement
+instance IsNode HTMLElement
+instance IsEventTarget HTMLElement
+instance IsGObject HTMLElement where
+  toGObject = GObject . unHTMLElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLElement :: IsGObject obj => obj -> JSM HTMLElement
+castToHTMLElement = castTo gTypeHTMLElement "HTMLElement"
+
+gTypeHTMLElement :: JSM GType
+gTypeHTMLElement = GType . Object <$> jsg "HTMLElement"
+#else
+type IsHTMLElement o = HTMLElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLEmbedElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.HTMLElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLEmbedElement Mozilla HTMLEmbedElement documentation>
+newtype HTMLEmbedElement = HTMLEmbedElement { unHTMLEmbedElement :: JSVal }
+
+instance PToJSVal HTMLEmbedElement where
+  pToJSVal = unHTMLEmbedElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLEmbedElement where
+  pFromJSVal = HTMLEmbedElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLEmbedElement where
+  toJSVal = return . unHTMLEmbedElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLEmbedElement where
+  fromJSVal v = fmap HTMLEmbedElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLEmbedElement where
+  makeObject = makeObject . unHTMLEmbedElement
+
+instance IsHTMLElement HTMLEmbedElement
+instance IsElement HTMLEmbedElement
+instance IsNode HTMLEmbedElement
+instance IsEventTarget HTMLEmbedElement
+instance IsGObject HTMLEmbedElement where
+  toGObject = GObject . unHTMLEmbedElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLEmbedElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLEmbedElement :: IsGObject obj => obj -> JSM HTMLEmbedElement
+castToHTMLEmbedElement = castTo gTypeHTMLEmbedElement "HTMLEmbedElement"
+
+gTypeHTMLEmbedElement :: JSM GType
+gTypeHTMLEmbedElement = GType . Object <$> jsg "HTMLEmbedElement"
+#else
+type IsHTMLEmbedElement o = HTMLEmbedElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLFieldSetElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.HTMLElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement Mozilla HTMLFieldSetElement documentation>
+newtype HTMLFieldSetElement = HTMLFieldSetElement { unHTMLFieldSetElement :: JSVal }
+
+instance PToJSVal HTMLFieldSetElement where
+  pToJSVal = unHTMLFieldSetElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLFieldSetElement where
+  pFromJSVal = HTMLFieldSetElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLFieldSetElement where
+  toJSVal = return . unHTMLFieldSetElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLFieldSetElement where
+  fromJSVal v = fmap HTMLFieldSetElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLFieldSetElement where
+  makeObject = makeObject . unHTMLFieldSetElement
+
+instance IsHTMLElement HTMLFieldSetElement
+instance IsElement HTMLFieldSetElement
+instance IsNode HTMLFieldSetElement
+instance IsEventTarget HTMLFieldSetElement
+instance IsGObject HTMLFieldSetElement where
+  toGObject = GObject . unHTMLFieldSetElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLFieldSetElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLFieldSetElement :: IsGObject obj => obj -> JSM HTMLFieldSetElement
+castToHTMLFieldSetElement = castTo gTypeHTMLFieldSetElement "HTMLFieldSetElement"
+
+gTypeHTMLFieldSetElement :: JSM GType
+gTypeHTMLFieldSetElement = GType . Object <$> jsg "HTMLFieldSetElement"
+#else
+type IsHTMLFieldSetElement o = HTMLFieldSetElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLFontElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.HTMLElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFontElement Mozilla HTMLFontElement documentation>
+newtype HTMLFontElement = HTMLFontElement { unHTMLFontElement :: JSVal }
+
+instance PToJSVal HTMLFontElement where
+  pToJSVal = unHTMLFontElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLFontElement where
+  pFromJSVal = HTMLFontElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLFontElement where
+  toJSVal = return . unHTMLFontElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLFontElement where
+  fromJSVal v = fmap HTMLFontElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLFontElement where
+  makeObject = makeObject . unHTMLFontElement
+
+instance IsHTMLElement HTMLFontElement
+instance IsElement HTMLFontElement
+instance IsNode HTMLFontElement
+instance IsEventTarget HTMLFontElement
+instance IsGObject HTMLFontElement where
+  toGObject = GObject . unHTMLFontElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLFontElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLFontElement :: IsGObject obj => obj -> JSM HTMLFontElement
+castToHTMLFontElement = castTo gTypeHTMLFontElement "HTMLFontElement"
+
+gTypeHTMLFontElement :: JSM GType
+gTypeHTMLFontElement = GType . Object <$> jsg "HTMLFontElement"
+#else
+type IsHTMLFontElement o = HTMLFontElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLFormControlsCollection".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.HTMLCollection"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormControlsCollection Mozilla HTMLFormControlsCollection documentation>
+newtype HTMLFormControlsCollection = HTMLFormControlsCollection { unHTMLFormControlsCollection :: JSVal }
+
+instance PToJSVal HTMLFormControlsCollection where
+  pToJSVal = unHTMLFormControlsCollection
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLFormControlsCollection where
+  pFromJSVal = HTMLFormControlsCollection
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLFormControlsCollection where
+  toJSVal = return . unHTMLFormControlsCollection
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLFormControlsCollection where
+  fromJSVal v = fmap HTMLFormControlsCollection <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLFormControlsCollection where
+  makeObject = makeObject . unHTMLFormControlsCollection
+
+instance IsHTMLCollection HTMLFormControlsCollection
+instance IsGObject HTMLFormControlsCollection where
+  toGObject = GObject . unHTMLFormControlsCollection
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLFormControlsCollection . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLFormControlsCollection :: IsGObject obj => obj -> JSM HTMLFormControlsCollection
+castToHTMLFormControlsCollection = castTo gTypeHTMLFormControlsCollection "HTMLFormControlsCollection"
+
+gTypeHTMLFormControlsCollection :: JSM GType
+gTypeHTMLFormControlsCollection = GType . Object <$> jsg "HTMLFormControlsCollection"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLFormElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.HTMLElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement Mozilla HTMLFormElement documentation>
+newtype HTMLFormElement = HTMLFormElement { unHTMLFormElement :: JSVal }
+
+instance PToJSVal HTMLFormElement where
+  pToJSVal = unHTMLFormElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLFormElement where
+  pFromJSVal = HTMLFormElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLFormElement where
+  toJSVal = return . unHTMLFormElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLFormElement where
+  fromJSVal v = fmap HTMLFormElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLFormElement where
+  makeObject = makeObject . unHTMLFormElement
+
+instance IsHTMLElement HTMLFormElement
+instance IsElement HTMLFormElement
+instance IsNode HTMLFormElement
+instance IsEventTarget HTMLFormElement
+instance IsGObject HTMLFormElement where
+  toGObject = GObject . unHTMLFormElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLFormElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLFormElement :: IsGObject obj => obj -> JSM HTMLFormElement
+castToHTMLFormElement = castTo gTypeHTMLFormElement "HTMLFormElement"
+
+gTypeHTMLFormElement :: JSM GType
+gTypeHTMLFormElement = GType . Object <$> jsg "HTMLFormElement"
+#else
+type IsHTMLFormElement o = HTMLFormElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLFrameElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.HTMLElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement Mozilla HTMLFrameElement documentation>
+newtype HTMLFrameElement = HTMLFrameElement { unHTMLFrameElement :: JSVal }
+
+instance PToJSVal HTMLFrameElement where
+  pToJSVal = unHTMLFrameElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLFrameElement where
+  pFromJSVal = HTMLFrameElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLFrameElement where
+  toJSVal = return . unHTMLFrameElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLFrameElement where
+  fromJSVal v = fmap HTMLFrameElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLFrameElement where
+  makeObject = makeObject . unHTMLFrameElement
+
+instance IsHTMLElement HTMLFrameElement
+instance IsElement HTMLFrameElement
+instance IsNode HTMLFrameElement
+instance IsEventTarget HTMLFrameElement
+instance IsGObject HTMLFrameElement where
+  toGObject = GObject . unHTMLFrameElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLFrameElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLFrameElement :: IsGObject obj => obj -> JSM HTMLFrameElement
+castToHTMLFrameElement = castTo gTypeHTMLFrameElement "HTMLFrameElement"
+
+gTypeHTMLFrameElement :: JSM GType
+gTypeHTMLFrameElement = GType . Object <$> jsg "HTMLFrameElement"
+#else
+type IsHTMLFrameElement o = HTMLFrameElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLFrameSetElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.HTMLElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement Mozilla HTMLFrameSetElement documentation>
+newtype HTMLFrameSetElement = HTMLFrameSetElement { unHTMLFrameSetElement :: JSVal }
+
+instance PToJSVal HTMLFrameSetElement where
+  pToJSVal = unHTMLFrameSetElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLFrameSetElement where
+  pFromJSVal = HTMLFrameSetElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLFrameSetElement where
+  toJSVal = return . unHTMLFrameSetElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLFrameSetElement where
+  fromJSVal v = fmap HTMLFrameSetElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLFrameSetElement where
+  makeObject = makeObject . unHTMLFrameSetElement
+
+instance IsHTMLElement HTMLFrameSetElement
+instance IsElement HTMLFrameSetElement
+instance IsNode HTMLFrameSetElement
+instance IsEventTarget HTMLFrameSetElement
+instance IsGObject HTMLFrameSetElement where
+  toGObject = GObject . unHTMLFrameSetElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLFrameSetElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLFrameSetElement :: IsGObject obj => obj -> JSM HTMLFrameSetElement
+castToHTMLFrameSetElement = castTo gTypeHTMLFrameSetElement "HTMLFrameSetElement"
+
+gTypeHTMLFrameSetElement :: JSM GType
+gTypeHTMLFrameSetElement = GType . Object <$> jsg "HTMLFrameSetElement"
+#else
+type IsHTMLFrameSetElement o = HTMLFrameSetElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLHRElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.HTMLElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHRElement Mozilla HTMLHRElement documentation>
+newtype HTMLHRElement = HTMLHRElement { unHTMLHRElement :: JSVal }
+
+instance PToJSVal HTMLHRElement where
+  pToJSVal = unHTMLHRElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLHRElement where
+  pFromJSVal = HTMLHRElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLHRElement where
+  toJSVal = return . unHTMLHRElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLHRElement where
+  fromJSVal v = fmap HTMLHRElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLHRElement where
+  makeObject = makeObject . unHTMLHRElement
+
+instance IsHTMLElement HTMLHRElement
+instance IsElement HTMLHRElement
+instance IsNode HTMLHRElement
+instance IsEventTarget HTMLHRElement
+instance IsGObject HTMLHRElement where
+  toGObject = GObject . unHTMLHRElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLHRElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLHRElement :: IsGObject obj => obj -> JSM HTMLHRElement
+castToHTMLHRElement = castTo gTypeHTMLHRElement "HTMLHRElement"
+
+gTypeHTMLHRElement :: JSM GType
+gTypeHTMLHRElement = GType . Object <$> jsg "HTMLHRElement"
+#else
+type IsHTMLHRElement o = HTMLHRElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLHeadElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.HTMLElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHeadElement Mozilla HTMLHeadElement documentation>
+newtype HTMLHeadElement = HTMLHeadElement { unHTMLHeadElement :: JSVal }
+
+instance PToJSVal HTMLHeadElement where
+  pToJSVal = unHTMLHeadElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLHeadElement where
+  pFromJSVal = HTMLHeadElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLHeadElement where
+  toJSVal = return . unHTMLHeadElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLHeadElement where
+  fromJSVal v = fmap HTMLHeadElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLHeadElement where
+  makeObject = makeObject . unHTMLHeadElement
+
+instance IsHTMLElement HTMLHeadElement
+instance IsElement HTMLHeadElement
+instance IsNode HTMLHeadElement
+instance IsEventTarget HTMLHeadElement
+instance IsGObject HTMLHeadElement where
+  toGObject = GObject . unHTMLHeadElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLHeadElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLHeadElement :: IsGObject obj => obj -> JSM HTMLHeadElement
+castToHTMLHeadElement = castTo gTypeHTMLHeadElement "HTMLHeadElement"
+
+gTypeHTMLHeadElement :: JSM GType
+gTypeHTMLHeadElement = GType . Object <$> jsg "HTMLHeadElement"
+#else
+type IsHTMLHeadElement o = HTMLHeadElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLHeadingElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.HTMLElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHeadingElement Mozilla HTMLHeadingElement documentation>
+newtype HTMLHeadingElement = HTMLHeadingElement { unHTMLHeadingElement :: JSVal }
+
+instance PToJSVal HTMLHeadingElement where
+  pToJSVal = unHTMLHeadingElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLHeadingElement where
+  pFromJSVal = HTMLHeadingElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLHeadingElement where
+  toJSVal = return . unHTMLHeadingElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLHeadingElement where
+  fromJSVal v = fmap HTMLHeadingElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLHeadingElement where
+  makeObject = makeObject . unHTMLHeadingElement
+
+instance IsHTMLElement HTMLHeadingElement
+instance IsElement HTMLHeadingElement
+instance IsNode HTMLHeadingElement
+instance IsEventTarget HTMLHeadingElement
+instance IsGObject HTMLHeadingElement where
+  toGObject = GObject . unHTMLHeadingElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLHeadingElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLHeadingElement :: IsGObject obj => obj -> JSM HTMLHeadingElement
+castToHTMLHeadingElement = castTo gTypeHTMLHeadingElement "HTMLHeadingElement"
+
+gTypeHTMLHeadingElement :: JSM GType
+gTypeHTMLHeadingElement = GType . Object <$> jsg "HTMLHeadingElement"
+#else
+type IsHTMLHeadingElement o = HTMLHeadingElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLHtmlElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.HTMLElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHtmlElement Mozilla HTMLHtmlElement documentation>
+newtype HTMLHtmlElement = HTMLHtmlElement { unHTMLHtmlElement :: JSVal }
+
+instance PToJSVal HTMLHtmlElement where
+  pToJSVal = unHTMLHtmlElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLHtmlElement where
+  pFromJSVal = HTMLHtmlElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLHtmlElement where
+  toJSVal = return . unHTMLHtmlElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLHtmlElement where
+  fromJSVal v = fmap HTMLHtmlElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLHtmlElement where
+  makeObject = makeObject . unHTMLHtmlElement
+
+instance IsHTMLElement HTMLHtmlElement
+instance IsElement HTMLHtmlElement
+instance IsNode HTMLHtmlElement
+instance IsEventTarget HTMLHtmlElement
+instance IsGObject HTMLHtmlElement where
+  toGObject = GObject . unHTMLHtmlElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLHtmlElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLHtmlElement :: IsGObject obj => obj -> JSM HTMLHtmlElement
+castToHTMLHtmlElement = castTo gTypeHTMLHtmlElement "HTMLHtmlElement"
+
+gTypeHTMLHtmlElement :: JSM GType
+gTypeHTMLHtmlElement = GType . Object <$> jsg "HTMLHtmlElement"
+#else
+type IsHTMLHtmlElement o = HTMLHtmlElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLIFrameElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.HTMLElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement Mozilla HTMLIFrameElement documentation>
+newtype HTMLIFrameElement = HTMLIFrameElement { unHTMLIFrameElement :: JSVal }
+
+instance PToJSVal HTMLIFrameElement where
+  pToJSVal = unHTMLIFrameElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLIFrameElement where
+  pFromJSVal = HTMLIFrameElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLIFrameElement where
+  toJSVal = return . unHTMLIFrameElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLIFrameElement where
+  fromJSVal v = fmap HTMLIFrameElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLIFrameElement where
+  makeObject = makeObject . unHTMLIFrameElement
+
+instance IsHTMLElement HTMLIFrameElement
+instance IsElement HTMLIFrameElement
+instance IsNode HTMLIFrameElement
+instance IsEventTarget HTMLIFrameElement
+instance IsGObject HTMLIFrameElement where
+  toGObject = GObject . unHTMLIFrameElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLIFrameElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLIFrameElement :: IsGObject obj => obj -> JSM HTMLIFrameElement
+castToHTMLIFrameElement = castTo gTypeHTMLIFrameElement "HTMLIFrameElement"
+
+gTypeHTMLIFrameElement :: JSM GType
+gTypeHTMLIFrameElement = GType . Object <$> jsg "HTMLIFrameElement"
+#else
+type IsHTMLIFrameElement o = HTMLIFrameElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLImageElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.HTMLElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement Mozilla HTMLImageElement documentation>
+newtype HTMLImageElement = HTMLImageElement { unHTMLImageElement :: JSVal }
+
+instance PToJSVal HTMLImageElement where
+  pToJSVal = unHTMLImageElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLImageElement where
+  pFromJSVal = HTMLImageElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLImageElement where
+  toJSVal = return . unHTMLImageElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLImageElement where
+  fromJSVal v = fmap HTMLImageElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLImageElement where
+  makeObject = makeObject . unHTMLImageElement
+
+instance IsHTMLElement HTMLImageElement
+instance IsElement HTMLImageElement
+instance IsNode HTMLImageElement
+instance IsEventTarget HTMLImageElement
+instance IsGObject HTMLImageElement where
+  toGObject = GObject . unHTMLImageElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLImageElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLImageElement :: IsGObject obj => obj -> JSM HTMLImageElement
+castToHTMLImageElement = castTo gTypeHTMLImageElement "HTMLImageElement"
+
+gTypeHTMLImageElement :: JSM GType
+gTypeHTMLImageElement = GType . Object <$> jsg "HTMLImageElement"
+#else
+type IsHTMLImageElement o = HTMLImageElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLInputElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.HTMLElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement Mozilla HTMLInputElement documentation>
+newtype HTMLInputElement = HTMLInputElement { unHTMLInputElement :: JSVal }
+
+instance PToJSVal HTMLInputElement where
+  pToJSVal = unHTMLInputElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLInputElement where
+  pFromJSVal = HTMLInputElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLInputElement where
+  toJSVal = return . unHTMLInputElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLInputElement where
+  fromJSVal v = fmap HTMLInputElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLInputElement where
+  makeObject = makeObject . unHTMLInputElement
+
+instance IsHTMLElement HTMLInputElement
+instance IsElement HTMLInputElement
+instance IsNode HTMLInputElement
+instance IsEventTarget HTMLInputElement
+instance IsGObject HTMLInputElement where
+  toGObject = GObject . unHTMLInputElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLInputElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLInputElement :: IsGObject obj => obj -> JSM HTMLInputElement
+castToHTMLInputElement = castTo gTypeHTMLInputElement "HTMLInputElement"
+
+gTypeHTMLInputElement :: JSM GType
+gTypeHTMLInputElement = GType . Object <$> jsg "HTMLInputElement"
+#else
+type IsHTMLInputElement o = HTMLInputElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLKeygenElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.HTMLElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement Mozilla HTMLKeygenElement documentation>
+newtype HTMLKeygenElement = HTMLKeygenElement { unHTMLKeygenElement :: JSVal }
+
+instance PToJSVal HTMLKeygenElement where
+  pToJSVal = unHTMLKeygenElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLKeygenElement where
+  pFromJSVal = HTMLKeygenElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLKeygenElement where
+  toJSVal = return . unHTMLKeygenElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLKeygenElement where
+  fromJSVal v = fmap HTMLKeygenElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLKeygenElement where
+  makeObject = makeObject . unHTMLKeygenElement
+
+instance IsHTMLElement HTMLKeygenElement
+instance IsElement HTMLKeygenElement
+instance IsNode HTMLKeygenElement
+instance IsEventTarget HTMLKeygenElement
+instance IsGObject HTMLKeygenElement where
+  toGObject = GObject . unHTMLKeygenElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLKeygenElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLKeygenElement :: IsGObject obj => obj -> JSM HTMLKeygenElement
+castToHTMLKeygenElement = castTo gTypeHTMLKeygenElement "HTMLKeygenElement"
+
+gTypeHTMLKeygenElement :: JSM GType
+gTypeHTMLKeygenElement = GType . Object <$> jsg "HTMLKeygenElement"
+#else
+type IsHTMLKeygenElement o = HTMLKeygenElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLLIElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.HTMLElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLIElement Mozilla HTMLLIElement documentation>
+newtype HTMLLIElement = HTMLLIElement { unHTMLLIElement :: JSVal }
+
+instance PToJSVal HTMLLIElement where
+  pToJSVal = unHTMLLIElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLLIElement where
+  pFromJSVal = HTMLLIElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLLIElement where
+  toJSVal = return . unHTMLLIElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLLIElement where
+  fromJSVal v = fmap HTMLLIElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLLIElement where
+  makeObject = makeObject . unHTMLLIElement
+
+instance IsHTMLElement HTMLLIElement
+instance IsElement HTMLLIElement
+instance IsNode HTMLLIElement
+instance IsEventTarget HTMLLIElement
+instance IsGObject HTMLLIElement where
+  toGObject = GObject . unHTMLLIElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLLIElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLLIElement :: IsGObject obj => obj -> JSM HTMLLIElement
+castToHTMLLIElement = castTo gTypeHTMLLIElement "HTMLLIElement"
+
+gTypeHTMLLIElement :: JSM GType
+gTypeHTMLLIElement = GType . Object <$> jsg "HTMLLIElement"
+#else
+type IsHTMLLIElement o = HTMLLIElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLLabelElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.HTMLElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement Mozilla HTMLLabelElement documentation>
+newtype HTMLLabelElement = HTMLLabelElement { unHTMLLabelElement :: JSVal }
+
+instance PToJSVal HTMLLabelElement where
+  pToJSVal = unHTMLLabelElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLLabelElement where
+  pFromJSVal = HTMLLabelElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLLabelElement where
+  toJSVal = return . unHTMLLabelElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLLabelElement where
+  fromJSVal v = fmap HTMLLabelElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLLabelElement where
+  makeObject = makeObject . unHTMLLabelElement
+
+instance IsHTMLElement HTMLLabelElement
+instance IsElement HTMLLabelElement
+instance IsNode HTMLLabelElement
+instance IsEventTarget HTMLLabelElement
+instance IsGObject HTMLLabelElement where
+  toGObject = GObject . unHTMLLabelElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLLabelElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLLabelElement :: IsGObject obj => obj -> JSM HTMLLabelElement
+castToHTMLLabelElement = castTo gTypeHTMLLabelElement "HTMLLabelElement"
+
+gTypeHTMLLabelElement :: JSM GType
+gTypeHTMLLabelElement = GType . Object <$> jsg "HTMLLabelElement"
+#else
+type IsHTMLLabelElement o = HTMLLabelElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLLegendElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.HTMLElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLegendElement Mozilla HTMLLegendElement documentation>
+newtype HTMLLegendElement = HTMLLegendElement { unHTMLLegendElement :: JSVal }
+
+instance PToJSVal HTMLLegendElement where
+  pToJSVal = unHTMLLegendElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLLegendElement where
+  pFromJSVal = HTMLLegendElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLLegendElement where
+  toJSVal = return . unHTMLLegendElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLLegendElement where
+  fromJSVal v = fmap HTMLLegendElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLLegendElement where
+  makeObject = makeObject . unHTMLLegendElement
+
+instance IsHTMLElement HTMLLegendElement
+instance IsElement HTMLLegendElement
+instance IsNode HTMLLegendElement
+instance IsEventTarget HTMLLegendElement
+instance IsGObject HTMLLegendElement where
+  toGObject = GObject . unHTMLLegendElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLLegendElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLLegendElement :: IsGObject obj => obj -> JSM HTMLLegendElement
+castToHTMLLegendElement = castTo gTypeHTMLLegendElement "HTMLLegendElement"
+
+gTypeHTMLLegendElement :: JSM GType
+gTypeHTMLLegendElement = GType . Object <$> jsg "HTMLLegendElement"
+#else
+type IsHTMLLegendElement o = HTMLLegendElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLLinkElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.HTMLElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement Mozilla HTMLLinkElement documentation>
+newtype HTMLLinkElement = HTMLLinkElement { unHTMLLinkElement :: JSVal }
+
+instance PToJSVal HTMLLinkElement where
+  pToJSVal = unHTMLLinkElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLLinkElement where
+  pFromJSVal = HTMLLinkElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLLinkElement where
+  toJSVal = return . unHTMLLinkElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLLinkElement where
+  fromJSVal v = fmap HTMLLinkElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLLinkElement where
+  makeObject = makeObject . unHTMLLinkElement
+
+instance IsHTMLElement HTMLLinkElement
+instance IsElement HTMLLinkElement
+instance IsNode HTMLLinkElement
+instance IsEventTarget HTMLLinkElement
+instance IsGObject HTMLLinkElement where
+  toGObject = GObject . unHTMLLinkElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLLinkElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLLinkElement :: IsGObject obj => obj -> JSM HTMLLinkElement
+castToHTMLLinkElement = castTo gTypeHTMLLinkElement "HTMLLinkElement"
+
+gTypeHTMLLinkElement :: JSM GType
+gTypeHTMLLinkElement = GType . Object <$> jsg "HTMLLinkElement"
+#else
+type IsHTMLLinkElement o = HTMLLinkElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLMapElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.HTMLElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMapElement Mozilla HTMLMapElement documentation>
+newtype HTMLMapElement = HTMLMapElement { unHTMLMapElement :: JSVal }
+
+instance PToJSVal HTMLMapElement where
+  pToJSVal = unHTMLMapElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLMapElement where
+  pFromJSVal = HTMLMapElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLMapElement where
+  toJSVal = return . unHTMLMapElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLMapElement where
+  fromJSVal v = fmap HTMLMapElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLMapElement where
+  makeObject = makeObject . unHTMLMapElement
+
+instance IsHTMLElement HTMLMapElement
+instance IsElement HTMLMapElement
+instance IsNode HTMLMapElement
+instance IsEventTarget HTMLMapElement
+instance IsGObject HTMLMapElement where
+  toGObject = GObject . unHTMLMapElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLMapElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLMapElement :: IsGObject obj => obj -> JSM HTMLMapElement
+castToHTMLMapElement = castTo gTypeHTMLMapElement "HTMLMapElement"
+
+gTypeHTMLMapElement :: JSM GType
+gTypeHTMLMapElement = GType . Object <$> jsg "HTMLMapElement"
+#else
+type IsHTMLMapElement o = HTMLMapElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLMarqueeElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.HTMLElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement Mozilla HTMLMarqueeElement documentation>
+newtype HTMLMarqueeElement = HTMLMarqueeElement { unHTMLMarqueeElement :: JSVal }
+
+instance PToJSVal HTMLMarqueeElement where
+  pToJSVal = unHTMLMarqueeElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLMarqueeElement where
+  pFromJSVal = HTMLMarqueeElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLMarqueeElement where
+  toJSVal = return . unHTMLMarqueeElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLMarqueeElement where
+  fromJSVal v = fmap HTMLMarqueeElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLMarqueeElement where
+  makeObject = makeObject . unHTMLMarqueeElement
+
+instance IsHTMLElement HTMLMarqueeElement
+instance IsElement HTMLMarqueeElement
+instance IsNode HTMLMarqueeElement
+instance IsEventTarget HTMLMarqueeElement
+instance IsGObject HTMLMarqueeElement where
+  toGObject = GObject . unHTMLMarqueeElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLMarqueeElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLMarqueeElement :: IsGObject obj => obj -> JSM HTMLMarqueeElement
+castToHTMLMarqueeElement = castTo gTypeHTMLMarqueeElement "HTMLMarqueeElement"
+
+gTypeHTMLMarqueeElement :: JSM GType
+gTypeHTMLMarqueeElement = GType . Object <$> jsg "HTMLMarqueeElement"
+#else
+type IsHTMLMarqueeElement o = HTMLMarqueeElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLMediaElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.HTMLElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement Mozilla HTMLMediaElement documentation>
+newtype HTMLMediaElement = HTMLMediaElement { unHTMLMediaElement :: JSVal }
+
+instance PToJSVal HTMLMediaElement where
+  pToJSVal = unHTMLMediaElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLMediaElement where
+  pFromJSVal = HTMLMediaElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLMediaElement where
+  toJSVal = return . unHTMLMediaElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLMediaElement where
+  fromJSVal v = fmap HTMLMediaElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLMediaElement where
+  makeObject = makeObject . unHTMLMediaElement
+
+class IsHTMLElement o => IsHTMLMediaElement o
+toHTMLMediaElement :: IsHTMLMediaElement o => o -> HTMLMediaElement
+toHTMLMediaElement = unsafeCastGObject . toGObject
+
+instance IsHTMLMediaElement HTMLMediaElement
+instance IsHTMLElement HTMLMediaElement
+instance IsElement HTMLMediaElement
+instance IsNode HTMLMediaElement
+instance IsEventTarget HTMLMediaElement
+instance IsGObject HTMLMediaElement where
+  toGObject = GObject . unHTMLMediaElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLMediaElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLMediaElement :: IsGObject obj => obj -> JSM HTMLMediaElement
+castToHTMLMediaElement = castTo gTypeHTMLMediaElement "HTMLMediaElement"
+
+gTypeHTMLMediaElement :: JSM GType
+gTypeHTMLMediaElement = GType . Object <$> jsg "HTMLMediaElement"
+#else
+type IsHTMLMediaElement o = HTMLMediaElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLMenuElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.HTMLElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMenuElement Mozilla HTMLMenuElement documentation>
+newtype HTMLMenuElement = HTMLMenuElement { unHTMLMenuElement :: JSVal }
+
+instance PToJSVal HTMLMenuElement where
+  pToJSVal = unHTMLMenuElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLMenuElement where
+  pFromJSVal = HTMLMenuElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLMenuElement where
+  toJSVal = return . unHTMLMenuElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLMenuElement where
+  fromJSVal v = fmap HTMLMenuElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLMenuElement where
+  makeObject = makeObject . unHTMLMenuElement
+
+instance IsHTMLElement HTMLMenuElement
+instance IsElement HTMLMenuElement
+instance IsNode HTMLMenuElement
+instance IsEventTarget HTMLMenuElement
+instance IsGObject HTMLMenuElement where
+  toGObject = GObject . unHTMLMenuElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLMenuElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLMenuElement :: IsGObject obj => obj -> JSM HTMLMenuElement
+castToHTMLMenuElement = castTo gTypeHTMLMenuElement "HTMLMenuElement"
+
+gTypeHTMLMenuElement :: JSM GType
+gTypeHTMLMenuElement = GType . Object <$> jsg "HTMLMenuElement"
+#else
+type IsHTMLMenuElement o = HTMLMenuElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLMetaElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.HTMLElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMetaElement Mozilla HTMLMetaElement documentation>
+newtype HTMLMetaElement = HTMLMetaElement { unHTMLMetaElement :: JSVal }
+
+instance PToJSVal HTMLMetaElement where
+  pToJSVal = unHTMLMetaElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLMetaElement where
+  pFromJSVal = HTMLMetaElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLMetaElement where
+  toJSVal = return . unHTMLMetaElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLMetaElement where
+  fromJSVal v = fmap HTMLMetaElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLMetaElement where
+  makeObject = makeObject . unHTMLMetaElement
+
+instance IsHTMLElement HTMLMetaElement
+instance IsElement HTMLMetaElement
+instance IsNode HTMLMetaElement
+instance IsEventTarget HTMLMetaElement
+instance IsGObject HTMLMetaElement where
+  toGObject = GObject . unHTMLMetaElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLMetaElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLMetaElement :: IsGObject obj => obj -> JSM HTMLMetaElement
+castToHTMLMetaElement = castTo gTypeHTMLMetaElement "HTMLMetaElement"
+
+gTypeHTMLMetaElement :: JSM GType
+gTypeHTMLMetaElement = GType . Object <$> jsg "HTMLMetaElement"
+#else
+type IsHTMLMetaElement o = HTMLMetaElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLMeterElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.HTMLElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMeterElement Mozilla HTMLMeterElement documentation>
+newtype HTMLMeterElement = HTMLMeterElement { unHTMLMeterElement :: JSVal }
+
+instance PToJSVal HTMLMeterElement where
+  pToJSVal = unHTMLMeterElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLMeterElement where
+  pFromJSVal = HTMLMeterElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLMeterElement where
+  toJSVal = return . unHTMLMeterElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLMeterElement where
+  fromJSVal v = fmap HTMLMeterElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLMeterElement where
+  makeObject = makeObject . unHTMLMeterElement
+
+instance IsHTMLElement HTMLMeterElement
+instance IsElement HTMLMeterElement
+instance IsNode HTMLMeterElement
+instance IsEventTarget HTMLMeterElement
+instance IsGObject HTMLMeterElement where
+  toGObject = GObject . unHTMLMeterElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLMeterElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLMeterElement :: IsGObject obj => obj -> JSM HTMLMeterElement
+castToHTMLMeterElement = castTo gTypeHTMLMeterElement "HTMLMeterElement"
+
+gTypeHTMLMeterElement :: JSM GType
+gTypeHTMLMeterElement = GType . Object <$> jsg "HTMLMeterElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLModElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.HTMLElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLModElement Mozilla HTMLModElement documentation>
+newtype HTMLModElement = HTMLModElement { unHTMLModElement :: JSVal }
+
+instance PToJSVal HTMLModElement where
+  pToJSVal = unHTMLModElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLModElement where
+  pFromJSVal = HTMLModElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLModElement where
+  toJSVal = return . unHTMLModElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLModElement where
+  fromJSVal v = fmap HTMLModElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLModElement where
+  makeObject = makeObject . unHTMLModElement
+
+instance IsHTMLElement HTMLModElement
+instance IsElement HTMLModElement
+instance IsNode HTMLModElement
+instance IsEventTarget HTMLModElement
+instance IsGObject HTMLModElement where
+  toGObject = GObject . unHTMLModElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLModElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLModElement :: IsGObject obj => obj -> JSM HTMLModElement
+castToHTMLModElement = castTo gTypeHTMLModElement "HTMLModElement"
+
+gTypeHTMLModElement :: JSM GType
+gTypeHTMLModElement = GType . Object <$> jsg "HTMLModElement"
+#else
+type IsHTMLModElement o = HTMLModElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLOListElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.HTMLElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOListElement Mozilla HTMLOListElement documentation>
+newtype HTMLOListElement = HTMLOListElement { unHTMLOListElement :: JSVal }
+
+instance PToJSVal HTMLOListElement where
+  pToJSVal = unHTMLOListElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLOListElement where
+  pFromJSVal = HTMLOListElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLOListElement where
+  toJSVal = return . unHTMLOListElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLOListElement where
+  fromJSVal v = fmap HTMLOListElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLOListElement where
+  makeObject = makeObject . unHTMLOListElement
+
+instance IsHTMLElement HTMLOListElement
+instance IsElement HTMLOListElement
+instance IsNode HTMLOListElement
+instance IsEventTarget HTMLOListElement
+instance IsGObject HTMLOListElement where
+  toGObject = GObject . unHTMLOListElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLOListElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLOListElement :: IsGObject obj => obj -> JSM HTMLOListElement
+castToHTMLOListElement = castTo gTypeHTMLOListElement "HTMLOListElement"
+
+gTypeHTMLOListElement :: JSM GType
+gTypeHTMLOListElement = GType . Object <$> jsg "HTMLOListElement"
+#else
+type IsHTMLOListElement o = HTMLOListElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLObjectElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.HTMLElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement Mozilla HTMLObjectElement documentation>
+newtype HTMLObjectElement = HTMLObjectElement { unHTMLObjectElement :: JSVal }
+
+instance PToJSVal HTMLObjectElement where
+  pToJSVal = unHTMLObjectElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLObjectElement where
+  pFromJSVal = HTMLObjectElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLObjectElement where
+  toJSVal = return . unHTMLObjectElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLObjectElement where
+  fromJSVal v = fmap HTMLObjectElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLObjectElement where
+  makeObject = makeObject . unHTMLObjectElement
+
+instance IsHTMLElement HTMLObjectElement
+instance IsElement HTMLObjectElement
+instance IsNode HTMLObjectElement
+instance IsEventTarget HTMLObjectElement
+instance IsGObject HTMLObjectElement where
+  toGObject = GObject . unHTMLObjectElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLObjectElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLObjectElement :: IsGObject obj => obj -> JSM HTMLObjectElement
+castToHTMLObjectElement = castTo gTypeHTMLObjectElement "HTMLObjectElement"
+
+gTypeHTMLObjectElement :: JSM GType
+gTypeHTMLObjectElement = GType . Object <$> jsg "HTMLObjectElement"
+#else
+type IsHTMLObjectElement o = HTMLObjectElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLOptGroupElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.HTMLElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptGroupElement Mozilla HTMLOptGroupElement documentation>
+newtype HTMLOptGroupElement = HTMLOptGroupElement { unHTMLOptGroupElement :: JSVal }
+
+instance PToJSVal HTMLOptGroupElement where
+  pToJSVal = unHTMLOptGroupElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLOptGroupElement where
+  pFromJSVal = HTMLOptGroupElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLOptGroupElement where
+  toJSVal = return . unHTMLOptGroupElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLOptGroupElement where
+  fromJSVal v = fmap HTMLOptGroupElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLOptGroupElement where
+  makeObject = makeObject . unHTMLOptGroupElement
+
+instance IsHTMLElement HTMLOptGroupElement
+instance IsElement HTMLOptGroupElement
+instance IsNode HTMLOptGroupElement
+instance IsEventTarget HTMLOptGroupElement
+instance IsGObject HTMLOptGroupElement where
+  toGObject = GObject . unHTMLOptGroupElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLOptGroupElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLOptGroupElement :: IsGObject obj => obj -> JSM HTMLOptGroupElement
+castToHTMLOptGroupElement = castTo gTypeHTMLOptGroupElement "HTMLOptGroupElement"
+
+gTypeHTMLOptGroupElement :: JSM GType
+gTypeHTMLOptGroupElement = GType . Object <$> jsg "HTMLOptGroupElement"
+#else
+type IsHTMLOptGroupElement o = HTMLOptGroupElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLOptionElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.HTMLElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionElement Mozilla HTMLOptionElement documentation>
+newtype HTMLOptionElement = HTMLOptionElement { unHTMLOptionElement :: JSVal }
+
+instance PToJSVal HTMLOptionElement where
+  pToJSVal = unHTMLOptionElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLOptionElement where
+  pFromJSVal = HTMLOptionElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLOptionElement where
+  toJSVal = return . unHTMLOptionElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLOptionElement where
+  fromJSVal v = fmap HTMLOptionElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLOptionElement where
+  makeObject = makeObject . unHTMLOptionElement
+
+instance IsHTMLElement HTMLOptionElement
+instance IsElement HTMLOptionElement
+instance IsNode HTMLOptionElement
+instance IsEventTarget HTMLOptionElement
+instance IsGObject HTMLOptionElement where
+  toGObject = GObject . unHTMLOptionElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLOptionElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLOptionElement :: IsGObject obj => obj -> JSM HTMLOptionElement
+castToHTMLOptionElement = castTo gTypeHTMLOptionElement "HTMLOptionElement"
+
+gTypeHTMLOptionElement :: JSM GType
+gTypeHTMLOptionElement = GType . Object <$> jsg "HTMLOptionElement"
+#else
+type IsHTMLOptionElement o = HTMLOptionElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLOptionsCollection".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.HTMLCollection"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionsCollection Mozilla HTMLOptionsCollection documentation>
+newtype HTMLOptionsCollection = HTMLOptionsCollection { unHTMLOptionsCollection :: JSVal }
+
+instance PToJSVal HTMLOptionsCollection where
+  pToJSVal = unHTMLOptionsCollection
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLOptionsCollection where
+  pFromJSVal = HTMLOptionsCollection
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLOptionsCollection where
+  toJSVal = return . unHTMLOptionsCollection
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLOptionsCollection where
+  fromJSVal v = fmap HTMLOptionsCollection <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLOptionsCollection where
+  makeObject = makeObject . unHTMLOptionsCollection
+
+instance IsHTMLCollection HTMLOptionsCollection
+instance IsGObject HTMLOptionsCollection where
+  toGObject = GObject . unHTMLOptionsCollection
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLOptionsCollection . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLOptionsCollection :: IsGObject obj => obj -> JSM HTMLOptionsCollection
+castToHTMLOptionsCollection = castTo gTypeHTMLOptionsCollection "HTMLOptionsCollection"
+
+gTypeHTMLOptionsCollection :: JSM GType
+gTypeHTMLOptionsCollection = GType . Object <$> jsg "HTMLOptionsCollection"
+#else
+type IsHTMLOptionsCollection o = HTMLOptionsCollectionClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLOutputElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.HTMLElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement Mozilla HTMLOutputElement documentation>
+newtype HTMLOutputElement = HTMLOutputElement { unHTMLOutputElement :: JSVal }
+
+instance PToJSVal HTMLOutputElement where
+  pToJSVal = unHTMLOutputElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLOutputElement where
+  pFromJSVal = HTMLOutputElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLOutputElement where
+  toJSVal = return . unHTMLOutputElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLOutputElement where
+  fromJSVal v = fmap HTMLOutputElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLOutputElement where
+  makeObject = makeObject . unHTMLOutputElement
+
+instance IsHTMLElement HTMLOutputElement
+instance IsElement HTMLOutputElement
+instance IsNode HTMLOutputElement
+instance IsEventTarget HTMLOutputElement
+instance IsGObject HTMLOutputElement where
+  toGObject = GObject . unHTMLOutputElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLOutputElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLOutputElement :: IsGObject obj => obj -> JSM HTMLOutputElement
+castToHTMLOutputElement = castTo gTypeHTMLOutputElement "HTMLOutputElement"
+
+gTypeHTMLOutputElement :: JSM GType
+gTypeHTMLOutputElement = GType . Object <$> jsg "HTMLOutputElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLParagraphElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.HTMLElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLParagraphElement Mozilla HTMLParagraphElement documentation>
+newtype HTMLParagraphElement = HTMLParagraphElement { unHTMLParagraphElement :: JSVal }
+
+instance PToJSVal HTMLParagraphElement where
+  pToJSVal = unHTMLParagraphElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLParagraphElement where
+  pFromJSVal = HTMLParagraphElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLParagraphElement where
+  toJSVal = return . unHTMLParagraphElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLParagraphElement where
+  fromJSVal v = fmap HTMLParagraphElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLParagraphElement where
+  makeObject = makeObject . unHTMLParagraphElement
+
+instance IsHTMLElement HTMLParagraphElement
+instance IsElement HTMLParagraphElement
+instance IsNode HTMLParagraphElement
+instance IsEventTarget HTMLParagraphElement
+instance IsGObject HTMLParagraphElement where
+  toGObject = GObject . unHTMLParagraphElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLParagraphElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLParagraphElement :: IsGObject obj => obj -> JSM HTMLParagraphElement
+castToHTMLParagraphElement = castTo gTypeHTMLParagraphElement "HTMLParagraphElement"
+
+gTypeHTMLParagraphElement :: JSM GType
+gTypeHTMLParagraphElement = GType . Object <$> jsg "HTMLParagraphElement"
+#else
+type IsHTMLParagraphElement o = HTMLParagraphElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLParamElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.HTMLElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLParamElement Mozilla HTMLParamElement documentation>
+newtype HTMLParamElement = HTMLParamElement { unHTMLParamElement :: JSVal }
+
+instance PToJSVal HTMLParamElement where
+  pToJSVal = unHTMLParamElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLParamElement where
+  pFromJSVal = HTMLParamElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLParamElement where
+  toJSVal = return . unHTMLParamElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLParamElement where
+  fromJSVal v = fmap HTMLParamElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLParamElement where
+  makeObject = makeObject . unHTMLParamElement
+
+instance IsHTMLElement HTMLParamElement
+instance IsElement HTMLParamElement
+instance IsNode HTMLParamElement
+instance IsEventTarget HTMLParamElement
+instance IsGObject HTMLParamElement where
+  toGObject = GObject . unHTMLParamElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLParamElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLParamElement :: IsGObject obj => obj -> JSM HTMLParamElement
+castToHTMLParamElement = castTo gTypeHTMLParamElement "HTMLParamElement"
+
+gTypeHTMLParamElement :: JSM GType
+gTypeHTMLParamElement = GType . Object <$> jsg "HTMLParamElement"
+#else
+type IsHTMLParamElement o = HTMLParamElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLPreElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.HTMLElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLPreElement Mozilla HTMLPreElement documentation>
+newtype HTMLPreElement = HTMLPreElement { unHTMLPreElement :: JSVal }
+
+instance PToJSVal HTMLPreElement where
+  pToJSVal = unHTMLPreElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLPreElement where
+  pFromJSVal = HTMLPreElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLPreElement where
+  toJSVal = return . unHTMLPreElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLPreElement where
+  fromJSVal v = fmap HTMLPreElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLPreElement where
+  makeObject = makeObject . unHTMLPreElement
+
+instance IsHTMLElement HTMLPreElement
+instance IsElement HTMLPreElement
+instance IsNode HTMLPreElement
+instance IsEventTarget HTMLPreElement
+instance IsGObject HTMLPreElement where
+  toGObject = GObject . unHTMLPreElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLPreElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLPreElement :: IsGObject obj => obj -> JSM HTMLPreElement
+castToHTMLPreElement = castTo gTypeHTMLPreElement "HTMLPreElement"
+
+gTypeHTMLPreElement :: JSM GType
+gTypeHTMLPreElement = GType . Object <$> jsg "HTMLPreElement"
+#else
+type IsHTMLPreElement o = HTMLPreElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLProgressElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.HTMLElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLProgressElement Mozilla HTMLProgressElement documentation>
+newtype HTMLProgressElement = HTMLProgressElement { unHTMLProgressElement :: JSVal }
+
+instance PToJSVal HTMLProgressElement where
+  pToJSVal = unHTMLProgressElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLProgressElement where
+  pFromJSVal = HTMLProgressElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLProgressElement where
+  toJSVal = return . unHTMLProgressElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLProgressElement where
+  fromJSVal v = fmap HTMLProgressElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLProgressElement where
+  makeObject = makeObject . unHTMLProgressElement
+
+instance IsHTMLElement HTMLProgressElement
+instance IsElement HTMLProgressElement
+instance IsNode HTMLProgressElement
+instance IsEventTarget HTMLProgressElement
+instance IsGObject HTMLProgressElement where
+  toGObject = GObject . unHTMLProgressElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLProgressElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLProgressElement :: IsGObject obj => obj -> JSM HTMLProgressElement
+castToHTMLProgressElement = castTo gTypeHTMLProgressElement "HTMLProgressElement"
+
+gTypeHTMLProgressElement :: JSM GType
+gTypeHTMLProgressElement = GType . Object <$> jsg "HTMLProgressElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLQuoteElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.HTMLElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLQuoteElement Mozilla HTMLQuoteElement documentation>
+newtype HTMLQuoteElement = HTMLQuoteElement { unHTMLQuoteElement :: JSVal }
+
+instance PToJSVal HTMLQuoteElement where
+  pToJSVal = unHTMLQuoteElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLQuoteElement where
+  pFromJSVal = HTMLQuoteElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLQuoteElement where
+  toJSVal = return . unHTMLQuoteElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLQuoteElement where
+  fromJSVal v = fmap HTMLQuoteElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLQuoteElement where
+  makeObject = makeObject . unHTMLQuoteElement
+
+instance IsHTMLElement HTMLQuoteElement
+instance IsElement HTMLQuoteElement
+instance IsNode HTMLQuoteElement
+instance IsEventTarget HTMLQuoteElement
+instance IsGObject HTMLQuoteElement where
+  toGObject = GObject . unHTMLQuoteElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLQuoteElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLQuoteElement :: IsGObject obj => obj -> JSM HTMLQuoteElement
+castToHTMLQuoteElement = castTo gTypeHTMLQuoteElement "HTMLQuoteElement"
+
+gTypeHTMLQuoteElement :: JSM GType
+gTypeHTMLQuoteElement = GType . Object <$> jsg "HTMLQuoteElement"
+#else
+type IsHTMLQuoteElement o = HTMLQuoteElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLScriptElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.HTMLElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement Mozilla HTMLScriptElement documentation>
+newtype HTMLScriptElement = HTMLScriptElement { unHTMLScriptElement :: JSVal }
+
+instance PToJSVal HTMLScriptElement where
+  pToJSVal = unHTMLScriptElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLScriptElement where
+  pFromJSVal = HTMLScriptElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLScriptElement where
+  toJSVal = return . unHTMLScriptElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLScriptElement where
+  fromJSVal v = fmap HTMLScriptElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLScriptElement where
+  makeObject = makeObject . unHTMLScriptElement
+
+instance IsHTMLElement HTMLScriptElement
+instance IsElement HTMLScriptElement
+instance IsNode HTMLScriptElement
+instance IsEventTarget HTMLScriptElement
+instance IsGObject HTMLScriptElement where
+  toGObject = GObject . unHTMLScriptElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLScriptElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLScriptElement :: IsGObject obj => obj -> JSM HTMLScriptElement
+castToHTMLScriptElement = castTo gTypeHTMLScriptElement "HTMLScriptElement"
+
+gTypeHTMLScriptElement :: JSM GType
+gTypeHTMLScriptElement = GType . Object <$> jsg "HTMLScriptElement"
+#else
+type IsHTMLScriptElement o = HTMLScriptElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLSelectElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.HTMLElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement Mozilla HTMLSelectElement documentation>
+newtype HTMLSelectElement = HTMLSelectElement { unHTMLSelectElement :: JSVal }
+
+instance PToJSVal HTMLSelectElement where
+  pToJSVal = unHTMLSelectElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLSelectElement where
+  pFromJSVal = HTMLSelectElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLSelectElement where
+  toJSVal = return . unHTMLSelectElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLSelectElement where
+  fromJSVal v = fmap HTMLSelectElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLSelectElement where
+  makeObject = makeObject . unHTMLSelectElement
+
+instance IsHTMLElement HTMLSelectElement
+instance IsElement HTMLSelectElement
+instance IsNode HTMLSelectElement
+instance IsEventTarget HTMLSelectElement
+instance IsGObject HTMLSelectElement where
+  toGObject = GObject . unHTMLSelectElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLSelectElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLSelectElement :: IsGObject obj => obj -> JSM HTMLSelectElement
+castToHTMLSelectElement = castTo gTypeHTMLSelectElement "HTMLSelectElement"
+
+gTypeHTMLSelectElement :: JSM GType
+gTypeHTMLSelectElement = GType . Object <$> jsg "HTMLSelectElement"
+#else
+type IsHTMLSelectElement o = HTMLSelectElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLSourceElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.HTMLElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSourceElement Mozilla HTMLSourceElement documentation>
+newtype HTMLSourceElement = HTMLSourceElement { unHTMLSourceElement :: JSVal }
+
+instance PToJSVal HTMLSourceElement where
+  pToJSVal = unHTMLSourceElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLSourceElement where
+  pFromJSVal = HTMLSourceElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLSourceElement where
+  toJSVal = return . unHTMLSourceElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLSourceElement where
+  fromJSVal v = fmap HTMLSourceElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLSourceElement where
+  makeObject = makeObject . unHTMLSourceElement
+
+instance IsHTMLElement HTMLSourceElement
+instance IsElement HTMLSourceElement
+instance IsNode HTMLSourceElement
+instance IsEventTarget HTMLSourceElement
+instance IsGObject HTMLSourceElement where
+  toGObject = GObject . unHTMLSourceElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLSourceElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLSourceElement :: IsGObject obj => obj -> JSM HTMLSourceElement
+castToHTMLSourceElement = castTo gTypeHTMLSourceElement "HTMLSourceElement"
+
+gTypeHTMLSourceElement :: JSM GType
+gTypeHTMLSourceElement = GType . Object <$> jsg "HTMLSourceElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLSpanElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.HTMLElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSpanElement Mozilla HTMLSpanElement documentation>
+newtype HTMLSpanElement = HTMLSpanElement { unHTMLSpanElement :: JSVal }
+
+instance PToJSVal HTMLSpanElement where
+  pToJSVal = unHTMLSpanElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLSpanElement where
+  pFromJSVal = HTMLSpanElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLSpanElement where
+  toJSVal = return . unHTMLSpanElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLSpanElement where
+  fromJSVal v = fmap HTMLSpanElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLSpanElement where
+  makeObject = makeObject . unHTMLSpanElement
+
+instance IsHTMLElement HTMLSpanElement
+instance IsElement HTMLSpanElement
+instance IsNode HTMLSpanElement
+instance IsEventTarget HTMLSpanElement
+instance IsGObject HTMLSpanElement where
+  toGObject = GObject . unHTMLSpanElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLSpanElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLSpanElement :: IsGObject obj => obj -> JSM HTMLSpanElement
+castToHTMLSpanElement = castTo gTypeHTMLSpanElement "HTMLSpanElement"
+
+gTypeHTMLSpanElement :: JSM GType
+gTypeHTMLSpanElement = GType . Object <$> jsg "HTMLSpanElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLStyleElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.HTMLElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLStyleElement Mozilla HTMLStyleElement documentation>
+newtype HTMLStyleElement = HTMLStyleElement { unHTMLStyleElement :: JSVal }
+
+instance PToJSVal HTMLStyleElement where
+  pToJSVal = unHTMLStyleElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLStyleElement where
+  pFromJSVal = HTMLStyleElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLStyleElement where
+  toJSVal = return . unHTMLStyleElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLStyleElement where
+  fromJSVal v = fmap HTMLStyleElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLStyleElement where
+  makeObject = makeObject . unHTMLStyleElement
+
+instance IsHTMLElement HTMLStyleElement
+instance IsElement HTMLStyleElement
+instance IsNode HTMLStyleElement
+instance IsEventTarget HTMLStyleElement
+instance IsGObject HTMLStyleElement where
+  toGObject = GObject . unHTMLStyleElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLStyleElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLStyleElement :: IsGObject obj => obj -> JSM HTMLStyleElement
+castToHTMLStyleElement = castTo gTypeHTMLStyleElement "HTMLStyleElement"
+
+gTypeHTMLStyleElement :: JSM GType
+gTypeHTMLStyleElement = GType . Object <$> jsg "HTMLStyleElement"
+#else
+type IsHTMLStyleElement o = HTMLStyleElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLTableCaptionElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.HTMLElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCaptionElement Mozilla HTMLTableCaptionElement documentation>
+newtype HTMLTableCaptionElement = HTMLTableCaptionElement { unHTMLTableCaptionElement :: JSVal }
+
+instance PToJSVal HTMLTableCaptionElement where
+  pToJSVal = unHTMLTableCaptionElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLTableCaptionElement where
+  pFromJSVal = HTMLTableCaptionElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLTableCaptionElement where
+  toJSVal = return . unHTMLTableCaptionElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLTableCaptionElement where
+  fromJSVal v = fmap HTMLTableCaptionElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLTableCaptionElement where
+  makeObject = makeObject . unHTMLTableCaptionElement
+
+instance IsHTMLElement HTMLTableCaptionElement
+instance IsElement HTMLTableCaptionElement
+instance IsNode HTMLTableCaptionElement
+instance IsEventTarget HTMLTableCaptionElement
+instance IsGObject HTMLTableCaptionElement where
+  toGObject = GObject . unHTMLTableCaptionElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLTableCaptionElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLTableCaptionElement :: IsGObject obj => obj -> JSM HTMLTableCaptionElement
+castToHTMLTableCaptionElement = castTo gTypeHTMLTableCaptionElement "HTMLTableCaptionElement"
+
+gTypeHTMLTableCaptionElement :: JSM GType
+gTypeHTMLTableCaptionElement = GType . Object <$> jsg "HTMLTableCaptionElement"
+#else
+type IsHTMLTableCaptionElement o = HTMLTableCaptionElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLTableCellElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.HTMLElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement Mozilla HTMLTableCellElement documentation>
+newtype HTMLTableCellElement = HTMLTableCellElement { unHTMLTableCellElement :: JSVal }
+
+instance PToJSVal HTMLTableCellElement where
+  pToJSVal = unHTMLTableCellElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLTableCellElement where
+  pFromJSVal = HTMLTableCellElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLTableCellElement where
+  toJSVal = return . unHTMLTableCellElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLTableCellElement where
+  fromJSVal v = fmap HTMLTableCellElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLTableCellElement where
+  makeObject = makeObject . unHTMLTableCellElement
+
+instance IsHTMLElement HTMLTableCellElement
+instance IsElement HTMLTableCellElement
+instance IsNode HTMLTableCellElement
+instance IsEventTarget HTMLTableCellElement
+instance IsGObject HTMLTableCellElement where
+  toGObject = GObject . unHTMLTableCellElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLTableCellElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLTableCellElement :: IsGObject obj => obj -> JSM HTMLTableCellElement
+castToHTMLTableCellElement = castTo gTypeHTMLTableCellElement "HTMLTableCellElement"
+
+gTypeHTMLTableCellElement :: JSM GType
+gTypeHTMLTableCellElement = GType . Object <$> jsg "HTMLTableCellElement"
+#else
+type IsHTMLTableCellElement o = HTMLTableCellElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLTableColElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.HTMLElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableColElement Mozilla HTMLTableColElement documentation>
+newtype HTMLTableColElement = HTMLTableColElement { unHTMLTableColElement :: JSVal }
+
+instance PToJSVal HTMLTableColElement where
+  pToJSVal = unHTMLTableColElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLTableColElement where
+  pFromJSVal = HTMLTableColElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLTableColElement where
+  toJSVal = return . unHTMLTableColElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLTableColElement where
+  fromJSVal v = fmap HTMLTableColElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLTableColElement where
+  makeObject = makeObject . unHTMLTableColElement
+
+instance IsHTMLElement HTMLTableColElement
+instance IsElement HTMLTableColElement
+instance IsNode HTMLTableColElement
+instance IsEventTarget HTMLTableColElement
+instance IsGObject HTMLTableColElement where
+  toGObject = GObject . unHTMLTableColElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLTableColElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLTableColElement :: IsGObject obj => obj -> JSM HTMLTableColElement
+castToHTMLTableColElement = castTo gTypeHTMLTableColElement "HTMLTableColElement"
+
+gTypeHTMLTableColElement :: JSM GType
+gTypeHTMLTableColElement = GType . Object <$> jsg "HTMLTableColElement"
+#else
+type IsHTMLTableColElement o = HTMLTableColElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLTableElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.HTMLElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement Mozilla HTMLTableElement documentation>
+newtype HTMLTableElement = HTMLTableElement { unHTMLTableElement :: JSVal }
+
+instance PToJSVal HTMLTableElement where
+  pToJSVal = unHTMLTableElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLTableElement where
+  pFromJSVal = HTMLTableElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLTableElement where
+  toJSVal = return . unHTMLTableElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLTableElement where
+  fromJSVal v = fmap HTMLTableElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLTableElement where
+  makeObject = makeObject . unHTMLTableElement
+
+instance IsHTMLElement HTMLTableElement
+instance IsElement HTMLTableElement
+instance IsNode HTMLTableElement
+instance IsEventTarget HTMLTableElement
+instance IsGObject HTMLTableElement where
+  toGObject = GObject . unHTMLTableElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLTableElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLTableElement :: IsGObject obj => obj -> JSM HTMLTableElement
+castToHTMLTableElement = castTo gTypeHTMLTableElement "HTMLTableElement"
+
+gTypeHTMLTableElement :: JSM GType
+gTypeHTMLTableElement = GType . Object <$> jsg "HTMLTableElement"
+#else
+type IsHTMLTableElement o = HTMLTableElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLTableRowElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.HTMLElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement Mozilla HTMLTableRowElement documentation>
+newtype HTMLTableRowElement = HTMLTableRowElement { unHTMLTableRowElement :: JSVal }
+
+instance PToJSVal HTMLTableRowElement where
+  pToJSVal = unHTMLTableRowElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLTableRowElement where
+  pFromJSVal = HTMLTableRowElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLTableRowElement where
+  toJSVal = return . unHTMLTableRowElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLTableRowElement where
+  fromJSVal v = fmap HTMLTableRowElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLTableRowElement where
+  makeObject = makeObject . unHTMLTableRowElement
+
+instance IsHTMLElement HTMLTableRowElement
+instance IsElement HTMLTableRowElement
+instance IsNode HTMLTableRowElement
+instance IsEventTarget HTMLTableRowElement
+instance IsGObject HTMLTableRowElement where
+  toGObject = GObject . unHTMLTableRowElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLTableRowElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLTableRowElement :: IsGObject obj => obj -> JSM HTMLTableRowElement
+castToHTMLTableRowElement = castTo gTypeHTMLTableRowElement "HTMLTableRowElement"
+
+gTypeHTMLTableRowElement :: JSM GType
+gTypeHTMLTableRowElement = GType . Object <$> jsg "HTMLTableRowElement"
+#else
+type IsHTMLTableRowElement o = HTMLTableRowElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLTableSectionElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.HTMLElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableSectionElement Mozilla HTMLTableSectionElement documentation>
+newtype HTMLTableSectionElement = HTMLTableSectionElement { unHTMLTableSectionElement :: JSVal }
+
+instance PToJSVal HTMLTableSectionElement where
+  pToJSVal = unHTMLTableSectionElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLTableSectionElement where
+  pFromJSVal = HTMLTableSectionElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLTableSectionElement where
+  toJSVal = return . unHTMLTableSectionElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLTableSectionElement where
+  fromJSVal v = fmap HTMLTableSectionElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLTableSectionElement where
+  makeObject = makeObject . unHTMLTableSectionElement
+
+instance IsHTMLElement HTMLTableSectionElement
+instance IsElement HTMLTableSectionElement
+instance IsNode HTMLTableSectionElement
+instance IsEventTarget HTMLTableSectionElement
+instance IsGObject HTMLTableSectionElement where
+  toGObject = GObject . unHTMLTableSectionElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLTableSectionElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLTableSectionElement :: IsGObject obj => obj -> JSM HTMLTableSectionElement
+castToHTMLTableSectionElement = castTo gTypeHTMLTableSectionElement "HTMLTableSectionElement"
+
+gTypeHTMLTableSectionElement :: JSM GType
+gTypeHTMLTableSectionElement = GType . Object <$> jsg "HTMLTableSectionElement"
+#else
+type IsHTMLTableSectionElement o = HTMLTableSectionElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLTemplateElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.HTMLElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement Mozilla HTMLTemplateElement documentation>
+newtype HTMLTemplateElement = HTMLTemplateElement { unHTMLTemplateElement :: JSVal }
+
+instance PToJSVal HTMLTemplateElement where
+  pToJSVal = unHTMLTemplateElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLTemplateElement where
+  pFromJSVal = HTMLTemplateElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLTemplateElement where
+  toJSVal = return . unHTMLTemplateElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLTemplateElement where
+  fromJSVal v = fmap HTMLTemplateElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLTemplateElement where
+  makeObject = makeObject . unHTMLTemplateElement
+
+instance IsHTMLElement HTMLTemplateElement
+instance IsElement HTMLTemplateElement
+instance IsNode HTMLTemplateElement
+instance IsEventTarget HTMLTemplateElement
+instance IsGObject HTMLTemplateElement where
+  toGObject = GObject . unHTMLTemplateElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLTemplateElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLTemplateElement :: IsGObject obj => obj -> JSM HTMLTemplateElement
+castToHTMLTemplateElement = castTo gTypeHTMLTemplateElement "HTMLTemplateElement"
+
+gTypeHTMLTemplateElement :: JSM GType
+gTypeHTMLTemplateElement = GType . Object <$> jsg "HTMLTemplateElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLTextAreaElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.HTMLElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement Mozilla HTMLTextAreaElement documentation>
+newtype HTMLTextAreaElement = HTMLTextAreaElement { unHTMLTextAreaElement :: JSVal }
+
+instance PToJSVal HTMLTextAreaElement where
+  pToJSVal = unHTMLTextAreaElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLTextAreaElement where
+  pFromJSVal = HTMLTextAreaElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLTextAreaElement where
+  toJSVal = return . unHTMLTextAreaElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLTextAreaElement where
+  fromJSVal v = fmap HTMLTextAreaElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLTextAreaElement where
+  makeObject = makeObject . unHTMLTextAreaElement
+
+instance IsHTMLElement HTMLTextAreaElement
+instance IsElement HTMLTextAreaElement
+instance IsNode HTMLTextAreaElement
+instance IsEventTarget HTMLTextAreaElement
+instance IsGObject HTMLTextAreaElement where
+  toGObject = GObject . unHTMLTextAreaElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLTextAreaElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLTextAreaElement :: IsGObject obj => obj -> JSM HTMLTextAreaElement
+castToHTMLTextAreaElement = castTo gTypeHTMLTextAreaElement "HTMLTextAreaElement"
+
+gTypeHTMLTextAreaElement :: JSM GType
+gTypeHTMLTextAreaElement = GType . Object <$> jsg "HTMLTextAreaElement"
+#else
+type IsHTMLTextAreaElement o = HTMLTextAreaElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLTitleElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.HTMLElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTitleElement Mozilla HTMLTitleElement documentation>
+newtype HTMLTitleElement = HTMLTitleElement { unHTMLTitleElement :: JSVal }
+
+instance PToJSVal HTMLTitleElement where
+  pToJSVal = unHTMLTitleElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLTitleElement where
+  pFromJSVal = HTMLTitleElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLTitleElement where
+  toJSVal = return . unHTMLTitleElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLTitleElement where
+  fromJSVal v = fmap HTMLTitleElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLTitleElement where
+  makeObject = makeObject . unHTMLTitleElement
+
+instance IsHTMLElement HTMLTitleElement
+instance IsElement HTMLTitleElement
+instance IsNode HTMLTitleElement
+instance IsEventTarget HTMLTitleElement
+instance IsGObject HTMLTitleElement where
+  toGObject = GObject . unHTMLTitleElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLTitleElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLTitleElement :: IsGObject obj => obj -> JSM HTMLTitleElement
+castToHTMLTitleElement = castTo gTypeHTMLTitleElement "HTMLTitleElement"
+
+gTypeHTMLTitleElement :: JSM GType
+gTypeHTMLTitleElement = GType . Object <$> jsg "HTMLTitleElement"
+#else
+type IsHTMLTitleElement o = HTMLTitleElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLTrackElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.HTMLElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTrackElement Mozilla HTMLTrackElement documentation>
+newtype HTMLTrackElement = HTMLTrackElement { unHTMLTrackElement :: JSVal }
+
+instance PToJSVal HTMLTrackElement where
+  pToJSVal = unHTMLTrackElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLTrackElement where
+  pFromJSVal = HTMLTrackElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLTrackElement where
+  toJSVal = return . unHTMLTrackElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLTrackElement where
+  fromJSVal v = fmap HTMLTrackElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLTrackElement where
+  makeObject = makeObject . unHTMLTrackElement
+
+instance IsHTMLElement HTMLTrackElement
+instance IsElement HTMLTrackElement
+instance IsNode HTMLTrackElement
+instance IsEventTarget HTMLTrackElement
+instance IsGObject HTMLTrackElement where
+  toGObject = GObject . unHTMLTrackElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLTrackElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLTrackElement :: IsGObject obj => obj -> JSM HTMLTrackElement
+castToHTMLTrackElement = castTo gTypeHTMLTrackElement "HTMLTrackElement"
+
+gTypeHTMLTrackElement :: JSM GType
+gTypeHTMLTrackElement = GType . Object <$> jsg "HTMLTrackElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLUListElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.HTMLElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLUListElement Mozilla HTMLUListElement documentation>
+newtype HTMLUListElement = HTMLUListElement { unHTMLUListElement :: JSVal }
+
+instance PToJSVal HTMLUListElement where
+  pToJSVal = unHTMLUListElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLUListElement where
+  pFromJSVal = HTMLUListElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLUListElement where
+  toJSVal = return . unHTMLUListElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLUListElement where
+  fromJSVal v = fmap HTMLUListElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLUListElement where
+  makeObject = makeObject . unHTMLUListElement
+
+instance IsHTMLElement HTMLUListElement
+instance IsElement HTMLUListElement
+instance IsNode HTMLUListElement
+instance IsEventTarget HTMLUListElement
+instance IsGObject HTMLUListElement where
+  toGObject = GObject . unHTMLUListElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLUListElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLUListElement :: IsGObject obj => obj -> JSM HTMLUListElement
+castToHTMLUListElement = castTo gTypeHTMLUListElement "HTMLUListElement"
+
+gTypeHTMLUListElement :: JSM GType
+gTypeHTMLUListElement = GType . Object <$> jsg "HTMLUListElement"
+#else
+type IsHTMLUListElement o = HTMLUListElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLUnknownElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.HTMLElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLUnknownElement Mozilla HTMLUnknownElement documentation>
+newtype HTMLUnknownElement = HTMLUnknownElement { unHTMLUnknownElement :: JSVal }
+
+instance PToJSVal HTMLUnknownElement where
+  pToJSVal = unHTMLUnknownElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLUnknownElement where
+  pFromJSVal = HTMLUnknownElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLUnknownElement where
+  toJSVal = return . unHTMLUnknownElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLUnknownElement where
+  fromJSVal v = fmap HTMLUnknownElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLUnknownElement where
+  makeObject = makeObject . unHTMLUnknownElement
+
+instance IsHTMLElement HTMLUnknownElement
+instance IsElement HTMLUnknownElement
+instance IsNode HTMLUnknownElement
+instance IsEventTarget HTMLUnknownElement
+instance IsGObject HTMLUnknownElement where
+  toGObject = GObject . unHTMLUnknownElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLUnknownElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLUnknownElement :: IsGObject obj => obj -> JSM HTMLUnknownElement
+castToHTMLUnknownElement = castTo gTypeHTMLUnknownElement "HTMLUnknownElement"
+
+gTypeHTMLUnknownElement :: JSM GType
+gTypeHTMLUnknownElement = GType . Object <$> jsg "HTMLUnknownElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HTMLVideoElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.HTMLMediaElement"
+--     * "Language.Javascript.JSaddle.DOM.HTMLElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement Mozilla HTMLVideoElement documentation>
+newtype HTMLVideoElement = HTMLVideoElement { unHTMLVideoElement :: JSVal }
+
+instance PToJSVal HTMLVideoElement where
+  pToJSVal = unHTMLVideoElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLVideoElement where
+  pFromJSVal = HTMLVideoElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLVideoElement where
+  toJSVal = return . unHTMLVideoElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLVideoElement where
+  fromJSVal v = fmap HTMLVideoElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLVideoElement where
+  makeObject = makeObject . unHTMLVideoElement
+
+instance IsHTMLMediaElement HTMLVideoElement
+instance IsHTMLElement HTMLVideoElement
+instance IsElement HTMLVideoElement
+instance IsNode HTMLVideoElement
+instance IsEventTarget HTMLVideoElement
+instance IsGObject HTMLVideoElement where
+  toGObject = GObject . unHTMLVideoElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLVideoElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLVideoElement :: IsGObject obj => obj -> JSM HTMLVideoElement
+castToHTMLVideoElement = castTo gTypeHTMLVideoElement "HTMLVideoElement"
+
+gTypeHTMLVideoElement :: JSM GType
+gTypeHTMLVideoElement = GType . Object <$> jsg "HTMLVideoElement"
+#else
+type IsHTMLVideoElement o = HTMLVideoElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.HashChangeEvent".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HashChangeEvent Mozilla HashChangeEvent documentation>
+newtype HashChangeEvent = HashChangeEvent { unHashChangeEvent :: JSVal }
+
+instance PToJSVal HashChangeEvent where
+  pToJSVal = unHashChangeEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HashChangeEvent where
+  pFromJSVal = HashChangeEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HashChangeEvent where
+  toJSVal = return . unHashChangeEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HashChangeEvent where
+  fromJSVal v = fmap HashChangeEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HashChangeEvent where
+  makeObject = makeObject . unHashChangeEvent
+
+instance IsEvent HashChangeEvent
+instance IsGObject HashChangeEvent where
+  toGObject = GObject . unHashChangeEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HashChangeEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHashChangeEvent :: IsGObject obj => obj -> JSM HashChangeEvent
+castToHashChangeEvent = castTo gTypeHashChangeEvent "HashChangeEvent"
+
+gTypeHashChangeEvent :: JSM GType
+gTypeHashChangeEvent = GType . Object <$> jsg "HashChangeEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.History".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/History Mozilla History documentation>
+newtype History = History { unHistory :: JSVal }
+
+instance PToJSVal History where
+  pToJSVal = unHistory
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal History where
+  pFromJSVal = History
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal History where
+  toJSVal = return . unHistory
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal History where
+  fromJSVal v = fmap History <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject History where
+  makeObject = makeObject . unHistory
+
+instance IsGObject History where
+  toGObject = GObject . unHistory
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = History . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHistory :: IsGObject obj => obj -> JSM History
+castToHistory = castTo gTypeHistory "History"
+
+gTypeHistory :: JSM GType
+gTypeHistory = GType . Object <$> jsg "History"
+#else
+type IsHistory o = HistoryClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.IDBAny".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/IDBAny Mozilla IDBAny documentation>
+newtype IDBAny = IDBAny { unIDBAny :: JSVal }
+
+instance PToJSVal IDBAny where
+  pToJSVal = unIDBAny
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal IDBAny where
+  pFromJSVal = IDBAny
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal IDBAny where
+  toJSVal = return . unIDBAny
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal IDBAny where
+  fromJSVal v = fmap IDBAny <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject IDBAny where
+  makeObject = makeObject . unIDBAny
+
+instance IsGObject IDBAny where
+  toGObject = GObject . unIDBAny
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = IDBAny . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToIDBAny :: IsGObject obj => obj -> JSM IDBAny
+castToIDBAny = castTo gTypeIDBAny "IDBAny"
+
+gTypeIDBAny :: JSM GType
+gTypeIDBAny = GType . Object <$> jsg "IDBAny"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.IDBCursor".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor Mozilla IDBCursor documentation>
+newtype IDBCursor = IDBCursor { unIDBCursor :: JSVal }
+
+instance PToJSVal IDBCursor where
+  pToJSVal = unIDBCursor
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal IDBCursor where
+  pFromJSVal = IDBCursor
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal IDBCursor where
+  toJSVal = return . unIDBCursor
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal IDBCursor where
+  fromJSVal v = fmap IDBCursor <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject IDBCursor where
+  makeObject = makeObject . unIDBCursor
+
+class IsGObject o => IsIDBCursor o
+toIDBCursor :: IsIDBCursor o => o -> IDBCursor
+toIDBCursor = unsafeCastGObject . toGObject
+
+instance IsIDBCursor IDBCursor
+instance IsGObject IDBCursor where
+  toGObject = GObject . unIDBCursor
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = IDBCursor . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToIDBCursor :: IsGObject obj => obj -> JSM IDBCursor
+castToIDBCursor = castTo gTypeIDBCursor "IDBCursor"
+
+gTypeIDBCursor :: JSM GType
+gTypeIDBCursor = GType . Object <$> jsg "IDBCursor"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.IDBCursorWithValue".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.IDBCursor"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursorWithValue Mozilla IDBCursorWithValue documentation>
+newtype IDBCursorWithValue = IDBCursorWithValue { unIDBCursorWithValue :: JSVal }
+
+instance PToJSVal IDBCursorWithValue where
+  pToJSVal = unIDBCursorWithValue
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal IDBCursorWithValue where
+  pFromJSVal = IDBCursorWithValue
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal IDBCursorWithValue where
+  toJSVal = return . unIDBCursorWithValue
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal IDBCursorWithValue where
+  fromJSVal v = fmap IDBCursorWithValue <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject IDBCursorWithValue where
+  makeObject = makeObject . unIDBCursorWithValue
+
+instance IsIDBCursor IDBCursorWithValue
+instance IsGObject IDBCursorWithValue where
+  toGObject = GObject . unIDBCursorWithValue
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = IDBCursorWithValue . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToIDBCursorWithValue :: IsGObject obj => obj -> JSM IDBCursorWithValue
+castToIDBCursorWithValue = castTo gTypeIDBCursorWithValue "IDBCursorWithValue"
+
+gTypeIDBCursorWithValue :: JSM GType
+gTypeIDBCursorWithValue = GType . Object <$> jsg "IDBCursorWithValue"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.IDBDatabase".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase Mozilla IDBDatabase documentation>
+newtype IDBDatabase = IDBDatabase { unIDBDatabase :: JSVal }
+
+instance PToJSVal IDBDatabase where
+  pToJSVal = unIDBDatabase
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal IDBDatabase where
+  pFromJSVal = IDBDatabase
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal IDBDatabase where
+  toJSVal = return . unIDBDatabase
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal IDBDatabase where
+  fromJSVal v = fmap IDBDatabase <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject IDBDatabase where
+  makeObject = makeObject . unIDBDatabase
+
+instance IsEventTarget IDBDatabase
+instance IsGObject IDBDatabase where
+  toGObject = GObject . unIDBDatabase
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = IDBDatabase . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToIDBDatabase :: IsGObject obj => obj -> JSM IDBDatabase
+castToIDBDatabase = castTo gTypeIDBDatabase "IDBDatabase"
+
+gTypeIDBDatabase :: JSM GType
+gTypeIDBDatabase = GType . Object <$> jsg "IDBDatabase"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.IDBFactory".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/IDBFactory Mozilla IDBFactory documentation>
+newtype IDBFactory = IDBFactory { unIDBFactory :: JSVal }
+
+instance PToJSVal IDBFactory where
+  pToJSVal = unIDBFactory
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal IDBFactory where
+  pFromJSVal = IDBFactory
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal IDBFactory where
+  toJSVal = return . unIDBFactory
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal IDBFactory where
+  fromJSVal v = fmap IDBFactory <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject IDBFactory where
+  makeObject = makeObject . unIDBFactory
+
+instance IsGObject IDBFactory where
+  toGObject = GObject . unIDBFactory
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = IDBFactory . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToIDBFactory :: IsGObject obj => obj -> JSM IDBFactory
+castToIDBFactory = castTo gTypeIDBFactory "IDBFactory"
+
+gTypeIDBFactory :: JSM GType
+gTypeIDBFactory = GType . Object <$> jsg "IDBFactory"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.IDBIndex".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex Mozilla IDBIndex documentation>
+newtype IDBIndex = IDBIndex { unIDBIndex :: JSVal }
+
+instance PToJSVal IDBIndex where
+  pToJSVal = unIDBIndex
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal IDBIndex where
+  pFromJSVal = IDBIndex
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal IDBIndex where
+  toJSVal = return . unIDBIndex
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal IDBIndex where
+  fromJSVal v = fmap IDBIndex <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject IDBIndex where
+  makeObject = makeObject . unIDBIndex
+
+instance IsGObject IDBIndex where
+  toGObject = GObject . unIDBIndex
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = IDBIndex . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToIDBIndex :: IsGObject obj => obj -> JSM IDBIndex
+castToIDBIndex = castTo gTypeIDBIndex "IDBIndex"
+
+gTypeIDBIndex :: JSM GType
+gTypeIDBIndex = GType . Object <$> jsg "IDBIndex"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.IDBKeyRange".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange Mozilla IDBKeyRange documentation>
+newtype IDBKeyRange = IDBKeyRange { unIDBKeyRange :: JSVal }
+
+instance PToJSVal IDBKeyRange where
+  pToJSVal = unIDBKeyRange
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal IDBKeyRange where
+  pFromJSVal = IDBKeyRange
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal IDBKeyRange where
+  toJSVal = return . unIDBKeyRange
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal IDBKeyRange where
+  fromJSVal v = fmap IDBKeyRange <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject IDBKeyRange where
+  makeObject = makeObject . unIDBKeyRange
+
+instance IsGObject IDBKeyRange where
+  toGObject = GObject . unIDBKeyRange
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = IDBKeyRange . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToIDBKeyRange :: IsGObject obj => obj -> JSM IDBKeyRange
+castToIDBKeyRange = castTo gTypeIDBKeyRange "IDBKeyRange"
+
+gTypeIDBKeyRange :: JSM GType
+gTypeIDBKeyRange = GType . Object <$> jsg "IDBKeyRange"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.IDBObjectStore".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore Mozilla IDBObjectStore documentation>
+newtype IDBObjectStore = IDBObjectStore { unIDBObjectStore :: JSVal }
+
+instance PToJSVal IDBObjectStore where
+  pToJSVal = unIDBObjectStore
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal IDBObjectStore where
+  pFromJSVal = IDBObjectStore
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal IDBObjectStore where
+  toJSVal = return . unIDBObjectStore
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal IDBObjectStore where
+  fromJSVal v = fmap IDBObjectStore <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject IDBObjectStore where
+  makeObject = makeObject . unIDBObjectStore
+
+instance IsGObject IDBObjectStore where
+  toGObject = GObject . unIDBObjectStore
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = IDBObjectStore . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToIDBObjectStore :: IsGObject obj => obj -> JSM IDBObjectStore
+castToIDBObjectStore = castTo gTypeIDBObjectStore "IDBObjectStore"
+
+gTypeIDBObjectStore :: JSM GType
+gTypeIDBObjectStore = GType . Object <$> jsg "IDBObjectStore"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.IDBOpenDBRequest".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.IDBRequest"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/IDBOpenDBRequest Mozilla IDBOpenDBRequest documentation>
+newtype IDBOpenDBRequest = IDBOpenDBRequest { unIDBOpenDBRequest :: JSVal }
+
+instance PToJSVal IDBOpenDBRequest where
+  pToJSVal = unIDBOpenDBRequest
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal IDBOpenDBRequest where
+  pFromJSVal = IDBOpenDBRequest
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal IDBOpenDBRequest where
+  toJSVal = return . unIDBOpenDBRequest
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal IDBOpenDBRequest where
+  fromJSVal v = fmap IDBOpenDBRequest <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject IDBOpenDBRequest where
+  makeObject = makeObject . unIDBOpenDBRequest
+
+instance IsIDBRequest IDBOpenDBRequest
+instance IsEventTarget IDBOpenDBRequest
+instance IsGObject IDBOpenDBRequest where
+  toGObject = GObject . unIDBOpenDBRequest
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = IDBOpenDBRequest . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToIDBOpenDBRequest :: IsGObject obj => obj -> JSM IDBOpenDBRequest
+castToIDBOpenDBRequest = castTo gTypeIDBOpenDBRequest "IDBOpenDBRequest"
+
+gTypeIDBOpenDBRequest :: JSM GType
+gTypeIDBOpenDBRequest = GType . Object <$> jsg "IDBOpenDBRequest"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.IDBRequest".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/IDBRequest Mozilla IDBRequest documentation>
+newtype IDBRequest = IDBRequest { unIDBRequest :: JSVal }
+
+instance PToJSVal IDBRequest where
+  pToJSVal = unIDBRequest
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal IDBRequest where
+  pFromJSVal = IDBRequest
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal IDBRequest where
+  toJSVal = return . unIDBRequest
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal IDBRequest where
+  fromJSVal v = fmap IDBRequest <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject IDBRequest where
+  makeObject = makeObject . unIDBRequest
+
+class IsEventTarget o => IsIDBRequest o
+toIDBRequest :: IsIDBRequest o => o -> IDBRequest
+toIDBRequest = unsafeCastGObject . toGObject
+
+instance IsIDBRequest IDBRequest
+instance IsEventTarget IDBRequest
+instance IsGObject IDBRequest where
+  toGObject = GObject . unIDBRequest
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = IDBRequest . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToIDBRequest :: IsGObject obj => obj -> JSM IDBRequest
+castToIDBRequest = castTo gTypeIDBRequest "IDBRequest"
+
+gTypeIDBRequest :: JSM GType
+gTypeIDBRequest = GType . Object <$> jsg "IDBRequest"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.IDBTransaction".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/IDBTransaction Mozilla IDBTransaction documentation>
+newtype IDBTransaction = IDBTransaction { unIDBTransaction :: JSVal }
+
+instance PToJSVal IDBTransaction where
+  pToJSVal = unIDBTransaction
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal IDBTransaction where
+  pFromJSVal = IDBTransaction
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal IDBTransaction where
+  toJSVal = return . unIDBTransaction
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal IDBTransaction where
+  fromJSVal v = fmap IDBTransaction <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject IDBTransaction where
+  makeObject = makeObject . unIDBTransaction
+
+instance IsEventTarget IDBTransaction
+instance IsGObject IDBTransaction where
+  toGObject = GObject . unIDBTransaction
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = IDBTransaction . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToIDBTransaction :: IsGObject obj => obj -> JSM IDBTransaction
+castToIDBTransaction = castTo gTypeIDBTransaction "IDBTransaction"
+
+gTypeIDBTransaction :: JSM GType
+gTypeIDBTransaction = GType . Object <$> jsg "IDBTransaction"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.IDBVersionChangeEvent".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/IDBVersionChangeEvent Mozilla IDBVersionChangeEvent documentation>
+newtype IDBVersionChangeEvent = IDBVersionChangeEvent { unIDBVersionChangeEvent :: JSVal }
+
+instance PToJSVal IDBVersionChangeEvent where
+  pToJSVal = unIDBVersionChangeEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal IDBVersionChangeEvent where
+  pFromJSVal = IDBVersionChangeEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal IDBVersionChangeEvent where
+  toJSVal = return . unIDBVersionChangeEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal IDBVersionChangeEvent where
+  fromJSVal v = fmap IDBVersionChangeEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject IDBVersionChangeEvent where
+  makeObject = makeObject . unIDBVersionChangeEvent
+
+instance IsEvent IDBVersionChangeEvent
+instance IsGObject IDBVersionChangeEvent where
+  toGObject = GObject . unIDBVersionChangeEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = IDBVersionChangeEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToIDBVersionChangeEvent :: IsGObject obj => obj -> JSM IDBVersionChangeEvent
+castToIDBVersionChangeEvent = castTo gTypeIDBVersionChangeEvent "IDBVersionChangeEvent"
+
+gTypeIDBVersionChangeEvent :: JSM GType
+gTypeIDBVersionChangeEvent = GType . Object <$> jsg "IDBVersionChangeEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.ImageData".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ImageData Mozilla ImageData documentation>
+newtype ImageData = ImageData { unImageData :: JSVal }
+
+instance PToJSVal ImageData where
+  pToJSVal = unImageData
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ImageData where
+  pFromJSVal = ImageData
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ImageData where
+  toJSVal = return . unImageData
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ImageData where
+  fromJSVal v = fmap ImageData <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject ImageData where
+  makeObject = makeObject . unImageData
+
+instance IsGObject ImageData where
+  toGObject = GObject . unImageData
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = ImageData . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToImageData :: IsGObject obj => obj -> JSM ImageData
+castToImageData = castTo gTypeImageData "ImageData"
+
+gTypeImageData :: JSM GType
+gTypeImageData = GType . Object <$> jsg "ImageData"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.InspectorFrontendHost".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost Mozilla InspectorFrontendHost documentation>
+newtype InspectorFrontendHost = InspectorFrontendHost { unInspectorFrontendHost :: JSVal }
+
+instance PToJSVal InspectorFrontendHost where
+  pToJSVal = unInspectorFrontendHost
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal InspectorFrontendHost where
+  pFromJSVal = InspectorFrontendHost
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal InspectorFrontendHost where
+  toJSVal = return . unInspectorFrontendHost
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal InspectorFrontendHost where
+  fromJSVal v = fmap InspectorFrontendHost <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject InspectorFrontendHost where
+  makeObject = makeObject . unInspectorFrontendHost
+
+instance IsGObject InspectorFrontendHost where
+  toGObject = GObject . unInspectorFrontendHost
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = InspectorFrontendHost . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToInspectorFrontendHost :: IsGObject obj => obj -> JSM InspectorFrontendHost
+castToInspectorFrontendHost = castTo gTypeInspectorFrontendHost "InspectorFrontendHost"
+
+gTypeInspectorFrontendHost :: JSM GType
+gTypeInspectorFrontendHost = GType . Object <$> jsg "InspectorFrontendHost"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.InternalSettings".
+-- Base interface functions are in:
+--
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/InternalSettings Mozilla InternalSettings documentation>
+newtype InternalSettings = InternalSettings { unInternalSettings :: JSVal }
+
+instance PToJSVal InternalSettings where
+  pToJSVal = unInternalSettings
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal InternalSettings where
+  pFromJSVal = InternalSettings
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal InternalSettings where
+  toJSVal = return . unInternalSettings
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal InternalSettings where
+  fromJSVal v = fmap InternalSettings <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject InternalSettings where
+  makeObject = makeObject . unInternalSettings
+
+instance IsGObject InternalSettings where
+  toGObject = GObject . unInternalSettings
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = InternalSettings . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToInternalSettings :: IsGObject obj => obj -> JSM InternalSettings
+castToInternalSettings = castTo gTypeInternalSettings "InternalSettings"
+
+gTypeInternalSettings :: JSM GType
+gTypeInternalSettings = GType . Object <$> jsg "InternalSettings"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.Internals".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Internals Mozilla Internals documentation>
+newtype Internals = Internals { unInternals :: JSVal }
+
+instance PToJSVal Internals where
+  pToJSVal = unInternals
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Internals where
+  pFromJSVal = Internals
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Internals where
+  toJSVal = return . unInternals
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Internals where
+  fromJSVal v = fmap Internals <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject Internals where
+  makeObject = makeObject . unInternals
+
+instance IsGObject Internals where
+  toGObject = GObject . unInternals
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Internals . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToInternals :: IsGObject obj => obj -> JSM Internals
+castToInternals = castTo gTypeInternals "Internals"
+
+gTypeInternals :: JSM GType
+gTypeInternals = GType . Object <$> jsg "Internals"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.KeyboardEvent".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.UIEvent"
+--     * "Language.Javascript.JSaddle.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent Mozilla KeyboardEvent documentation>
+newtype KeyboardEvent = KeyboardEvent { unKeyboardEvent :: JSVal }
+
+instance PToJSVal KeyboardEvent where
+  pToJSVal = unKeyboardEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal KeyboardEvent where
+  pFromJSVal = KeyboardEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal KeyboardEvent where
+  toJSVal = return . unKeyboardEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal KeyboardEvent where
+  fromJSVal v = fmap KeyboardEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject KeyboardEvent where
+  makeObject = makeObject . unKeyboardEvent
+
+instance IsUIEvent KeyboardEvent
+instance IsEvent KeyboardEvent
+instance IsGObject KeyboardEvent where
+  toGObject = GObject . unKeyboardEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = KeyboardEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToKeyboardEvent :: IsGObject obj => obj -> JSM KeyboardEvent
+castToKeyboardEvent = castTo gTypeKeyboardEvent "KeyboardEvent"
+
+gTypeKeyboardEvent :: JSM GType
+gTypeKeyboardEvent = GType . Object <$> jsg "KeyboardEvent"
+#else
+#ifndef USE_OLD_WEBKIT
+type IsKeyboardEvent o = KeyboardEventClass o
+#endif
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.Location".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Location Mozilla Location documentation>
+newtype Location = Location { unLocation :: JSVal }
+
+instance PToJSVal Location where
+  pToJSVal = unLocation
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Location where
+  pFromJSVal = Location
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Location where
+  toJSVal = return . unLocation
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Location where
+  fromJSVal v = fmap Location <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject Location where
+  makeObject = makeObject . unLocation
+
+instance IsGObject Location where
+  toGObject = GObject . unLocation
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Location . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToLocation :: IsGObject obj => obj -> JSM Location
+castToLocation = castTo gTypeLocation "Location"
+
+gTypeLocation :: JSM GType
+gTypeLocation = GType . Object <$> jsg "Location"
+#else
+type IsLocation o = LocationClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.MallocStatistics".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MallocStatistics Mozilla MallocStatistics documentation>
+newtype MallocStatistics = MallocStatistics { unMallocStatistics :: JSVal }
+
+instance PToJSVal MallocStatistics where
+  pToJSVal = unMallocStatistics
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MallocStatistics where
+  pFromJSVal = MallocStatistics
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MallocStatistics where
+  toJSVal = return . unMallocStatistics
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MallocStatistics where
+  fromJSVal v = fmap MallocStatistics <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject MallocStatistics where
+  makeObject = makeObject . unMallocStatistics
+
+instance IsGObject MallocStatistics where
+  toGObject = GObject . unMallocStatistics
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MallocStatistics . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMallocStatistics :: IsGObject obj => obj -> JSM MallocStatistics
+castToMallocStatistics = castTo gTypeMallocStatistics "MallocStatistics"
+
+gTypeMallocStatistics :: JSM GType
+gTypeMallocStatistics = GType . Object <$> jsg "MallocStatistics"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.MediaController".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaController Mozilla MediaController documentation>
+newtype MediaController = MediaController { unMediaController :: JSVal }
+
+instance PToJSVal MediaController where
+  pToJSVal = unMediaController
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaController where
+  pFromJSVal = MediaController
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaController where
+  toJSVal = return . unMediaController
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaController where
+  fromJSVal v = fmap MediaController <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject MediaController where
+  makeObject = makeObject . unMediaController
+
+instance IsEventTarget MediaController
+instance IsGObject MediaController where
+  toGObject = GObject . unMediaController
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaController . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaController :: IsGObject obj => obj -> JSM MediaController
+castToMediaController = castTo gTypeMediaController "MediaController"
+
+gTypeMediaController :: JSM GType
+gTypeMediaController = GType . Object <$> jsg "MediaController"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.MediaControlsHost".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost Mozilla MediaControlsHost documentation>
+newtype MediaControlsHost = MediaControlsHost { unMediaControlsHost :: JSVal }
+
+instance PToJSVal MediaControlsHost where
+  pToJSVal = unMediaControlsHost
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaControlsHost where
+  pFromJSVal = MediaControlsHost
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaControlsHost where
+  toJSVal = return . unMediaControlsHost
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaControlsHost where
+  fromJSVal v = fmap MediaControlsHost <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject MediaControlsHost where
+  makeObject = makeObject . unMediaControlsHost
+
+instance IsGObject MediaControlsHost where
+  toGObject = GObject . unMediaControlsHost
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaControlsHost . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaControlsHost :: IsGObject obj => obj -> JSM MediaControlsHost
+castToMediaControlsHost = castTo gTypeMediaControlsHost "MediaControlsHost"
+
+gTypeMediaControlsHost :: JSM GType
+gTypeMediaControlsHost = GType . Object <$> jsg "MediaControlsHost"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.MediaElementAudioSourceNode".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.AudioNode"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaElementAudioSourceNode Mozilla MediaElementAudioSourceNode documentation>
+newtype MediaElementAudioSourceNode = MediaElementAudioSourceNode { unMediaElementAudioSourceNode :: JSVal }
+
+instance PToJSVal MediaElementAudioSourceNode where
+  pToJSVal = unMediaElementAudioSourceNode
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaElementAudioSourceNode where
+  pFromJSVal = MediaElementAudioSourceNode
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaElementAudioSourceNode where
+  toJSVal = return . unMediaElementAudioSourceNode
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaElementAudioSourceNode where
+  fromJSVal v = fmap MediaElementAudioSourceNode <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject MediaElementAudioSourceNode where
+  makeObject = makeObject . unMediaElementAudioSourceNode
+
+instance IsAudioNode MediaElementAudioSourceNode
+instance IsEventTarget MediaElementAudioSourceNode
+instance IsGObject MediaElementAudioSourceNode where
+  toGObject = GObject . unMediaElementAudioSourceNode
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaElementAudioSourceNode . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaElementAudioSourceNode :: IsGObject obj => obj -> JSM MediaElementAudioSourceNode
+castToMediaElementAudioSourceNode = castTo gTypeMediaElementAudioSourceNode "MediaElementAudioSourceNode"
+
+gTypeMediaElementAudioSourceNode :: JSM GType
+gTypeMediaElementAudioSourceNode = GType . Object <$> jsg "MediaElementAudioSourceNode"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.MediaError".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaError Mozilla MediaError documentation>
+newtype MediaError = MediaError { unMediaError :: JSVal }
+
+instance PToJSVal MediaError where
+  pToJSVal = unMediaError
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaError where
+  pFromJSVal = MediaError
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaError where
+  toJSVal = return . unMediaError
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaError where
+  fromJSVal v = fmap MediaError <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject MediaError where
+  makeObject = makeObject . unMediaError
+
+instance IsGObject MediaError where
+  toGObject = GObject . unMediaError
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaError . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaError :: IsGObject obj => obj -> JSM MediaError
+castToMediaError = castTo gTypeMediaError "MediaError"
+
+gTypeMediaError :: JSM GType
+gTypeMediaError = GType . Object <$> jsg "MediaError"
+#else
+type IsMediaError o = MediaErrorClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.MediaKeyError".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeyError Mozilla WebKitMediaKeyError documentation>
+newtype MediaKeyError = MediaKeyError { unMediaKeyError :: JSVal }
+
+instance PToJSVal MediaKeyError where
+  pToJSVal = unMediaKeyError
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaKeyError where
+  pFromJSVal = MediaKeyError
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaKeyError where
+  toJSVal = return . unMediaKeyError
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaKeyError where
+  fromJSVal v = fmap MediaKeyError <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject MediaKeyError where
+  makeObject = makeObject . unMediaKeyError
+
+instance IsGObject MediaKeyError where
+  toGObject = GObject . unMediaKeyError
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaKeyError . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaKeyError :: IsGObject obj => obj -> JSM MediaKeyError
+castToMediaKeyError = castTo gTypeMediaKeyError "MediaKeyError"
+
+gTypeMediaKeyError :: JSM GType
+gTypeMediaKeyError = GType . Object <$> jsg "WebKitMediaKeyError"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.MediaKeyEvent".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeyEvent Mozilla MediaKeyEvent documentation>
+newtype MediaKeyEvent = MediaKeyEvent { unMediaKeyEvent :: JSVal }
+
+instance PToJSVal MediaKeyEvent where
+  pToJSVal = unMediaKeyEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaKeyEvent where
+  pFromJSVal = MediaKeyEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaKeyEvent where
+  toJSVal = return . unMediaKeyEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaKeyEvent where
+  fromJSVal v = fmap MediaKeyEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject MediaKeyEvent where
+  makeObject = makeObject . unMediaKeyEvent
+
+instance IsEvent MediaKeyEvent
+instance IsGObject MediaKeyEvent where
+  toGObject = GObject . unMediaKeyEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaKeyEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaKeyEvent :: IsGObject obj => obj -> JSM MediaKeyEvent
+castToMediaKeyEvent = castTo gTypeMediaKeyEvent "MediaKeyEvent"
+
+gTypeMediaKeyEvent :: JSM GType
+gTypeMediaKeyEvent = GType . Object <$> jsg "MediaKeyEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.MediaKeyMessageEvent".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeyMessageEvent Mozilla WebKitMediaKeyMessageEvent documentation>
+newtype MediaKeyMessageEvent = MediaKeyMessageEvent { unMediaKeyMessageEvent :: JSVal }
+
+instance PToJSVal MediaKeyMessageEvent where
+  pToJSVal = unMediaKeyMessageEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaKeyMessageEvent where
+  pFromJSVal = MediaKeyMessageEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaKeyMessageEvent where
+  toJSVal = return . unMediaKeyMessageEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaKeyMessageEvent where
+  fromJSVal v = fmap MediaKeyMessageEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject MediaKeyMessageEvent where
+  makeObject = makeObject . unMediaKeyMessageEvent
+
+instance IsEvent MediaKeyMessageEvent
+instance IsGObject MediaKeyMessageEvent where
+  toGObject = GObject . unMediaKeyMessageEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaKeyMessageEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaKeyMessageEvent :: IsGObject obj => obj -> JSM MediaKeyMessageEvent
+castToMediaKeyMessageEvent = castTo gTypeMediaKeyMessageEvent "MediaKeyMessageEvent"
+
+gTypeMediaKeyMessageEvent :: JSM GType
+gTypeMediaKeyMessageEvent = GType . Object <$> jsg "WebKitMediaKeyMessageEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.MediaKeyNeededEvent".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeyNeededEvent Mozilla MediaKeyNeededEvent documentation>
+newtype MediaKeyNeededEvent = MediaKeyNeededEvent { unMediaKeyNeededEvent :: JSVal }
+
+instance PToJSVal MediaKeyNeededEvent where
+  pToJSVal = unMediaKeyNeededEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaKeyNeededEvent where
+  pFromJSVal = MediaKeyNeededEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaKeyNeededEvent where
+  toJSVal = return . unMediaKeyNeededEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaKeyNeededEvent where
+  fromJSVal v = fmap MediaKeyNeededEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject MediaKeyNeededEvent where
+  makeObject = makeObject . unMediaKeyNeededEvent
+
+instance IsEvent MediaKeyNeededEvent
+instance IsGObject MediaKeyNeededEvent where
+  toGObject = GObject . unMediaKeyNeededEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaKeyNeededEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaKeyNeededEvent :: IsGObject obj => obj -> JSM MediaKeyNeededEvent
+castToMediaKeyNeededEvent = castTo gTypeMediaKeyNeededEvent "MediaKeyNeededEvent"
+
+gTypeMediaKeyNeededEvent :: JSM GType
+gTypeMediaKeyNeededEvent = GType . Object <$> jsg "MediaKeyNeededEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.MediaKeySession".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession Mozilla WebKitMediaKeySession documentation>
+newtype MediaKeySession = MediaKeySession { unMediaKeySession :: JSVal }
+
+instance PToJSVal MediaKeySession where
+  pToJSVal = unMediaKeySession
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaKeySession where
+  pFromJSVal = MediaKeySession
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaKeySession where
+  toJSVal = return . unMediaKeySession
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaKeySession where
+  fromJSVal v = fmap MediaKeySession <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject MediaKeySession where
+  makeObject = makeObject . unMediaKeySession
+
+instance IsEventTarget MediaKeySession
+instance IsGObject MediaKeySession where
+  toGObject = GObject . unMediaKeySession
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaKeySession . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaKeySession :: IsGObject obj => obj -> JSM MediaKeySession
+castToMediaKeySession = castTo gTypeMediaKeySession "MediaKeySession"
+
+gTypeMediaKeySession :: JSM GType
+gTypeMediaKeySession = GType . Object <$> jsg "WebKitMediaKeySession"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.MediaKeys".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeys Mozilla WebKitMediaKeys documentation>
+newtype MediaKeys = MediaKeys { unMediaKeys :: JSVal }
+
+instance PToJSVal MediaKeys where
+  pToJSVal = unMediaKeys
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaKeys where
+  pFromJSVal = MediaKeys
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaKeys where
+  toJSVal = return . unMediaKeys
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaKeys where
+  fromJSVal v = fmap MediaKeys <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject MediaKeys where
+  makeObject = makeObject . unMediaKeys
+
+instance IsGObject MediaKeys where
+  toGObject = GObject . unMediaKeys
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaKeys . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaKeys :: IsGObject obj => obj -> JSM MediaKeys
+castToMediaKeys = castTo gTypeMediaKeys "MediaKeys"
+
+gTypeMediaKeys :: JSM GType
+gTypeMediaKeys = GType . Object <$> jsg "WebKitMediaKeys"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.MediaList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaList Mozilla MediaList documentation>
+newtype MediaList = MediaList { unMediaList :: JSVal }
+
+instance PToJSVal MediaList where
+  pToJSVal = unMediaList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaList where
+  pFromJSVal = MediaList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaList where
+  toJSVal = return . unMediaList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaList where
+  fromJSVal v = fmap MediaList <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject MediaList where
+  makeObject = makeObject . unMediaList
+
+instance IsGObject MediaList where
+  toGObject = GObject . unMediaList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaList . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaList :: IsGObject obj => obj -> JSM MediaList
+castToMediaList = castTo gTypeMediaList "MediaList"
+
+gTypeMediaList :: JSM GType
+gTypeMediaList = GType . Object <$> jsg "MediaList"
+#else
+type IsMediaList o = MediaListClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.MediaQueryList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaQueryList Mozilla MediaQueryList documentation>
+newtype MediaQueryList = MediaQueryList { unMediaQueryList :: JSVal }
+
+instance PToJSVal MediaQueryList where
+  pToJSVal = unMediaQueryList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaQueryList where
+  pFromJSVal = MediaQueryList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaQueryList where
+  toJSVal = return . unMediaQueryList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaQueryList where
+  fromJSVal v = fmap MediaQueryList <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject MediaQueryList where
+  makeObject = makeObject . unMediaQueryList
+
+instance IsGObject MediaQueryList where
+  toGObject = GObject . unMediaQueryList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaQueryList . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaQueryList :: IsGObject obj => obj -> JSM MediaQueryList
+castToMediaQueryList = castTo gTypeMediaQueryList "MediaQueryList"
+
+gTypeMediaQueryList :: JSM GType
+gTypeMediaQueryList = GType . Object <$> jsg "MediaQueryList"
+#else
+type IsMediaQueryList o = MediaQueryListClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.MediaSource".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource Mozilla MediaSource documentation>
+newtype MediaSource = MediaSource { unMediaSource :: JSVal }
+
+instance PToJSVal MediaSource where
+  pToJSVal = unMediaSource
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaSource where
+  pFromJSVal = MediaSource
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaSource where
+  toJSVal = return . unMediaSource
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaSource where
+  fromJSVal v = fmap MediaSource <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject MediaSource where
+  makeObject = makeObject . unMediaSource
+
+instance IsEventTarget MediaSource
+instance IsGObject MediaSource where
+  toGObject = GObject . unMediaSource
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaSource . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaSource :: IsGObject obj => obj -> JSM MediaSource
+castToMediaSource = castTo gTypeMediaSource "MediaSource"
+
+gTypeMediaSource :: JSM GType
+gTypeMediaSource = GType . Object <$> jsg "MediaSource"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.MediaSourceStates".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaSourceStates Mozilla MediaSourceStates documentation>
+newtype MediaSourceStates = MediaSourceStates { unMediaSourceStates :: JSVal }
+
+instance PToJSVal MediaSourceStates where
+  pToJSVal = unMediaSourceStates
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaSourceStates where
+  pFromJSVal = MediaSourceStates
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaSourceStates where
+  toJSVal = return . unMediaSourceStates
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaSourceStates where
+  fromJSVal v = fmap MediaSourceStates <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject MediaSourceStates where
+  makeObject = makeObject . unMediaSourceStates
+
+instance IsGObject MediaSourceStates where
+  toGObject = GObject . unMediaSourceStates
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaSourceStates . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaSourceStates :: IsGObject obj => obj -> JSM MediaSourceStates
+castToMediaSourceStates = castTo gTypeMediaSourceStates "MediaSourceStates"
+
+gTypeMediaSourceStates :: JSM GType
+gTypeMediaSourceStates = GType . Object <$> jsg "MediaSourceStates"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.MediaStream".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream Mozilla webkitMediaStream documentation>
+newtype MediaStream = MediaStream { unMediaStream :: JSVal }
+
+instance PToJSVal MediaStream where
+  pToJSVal = unMediaStream
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaStream where
+  pFromJSVal = MediaStream
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaStream where
+  toJSVal = return . unMediaStream
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaStream where
+  fromJSVal v = fmap MediaStream <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject MediaStream where
+  makeObject = makeObject . unMediaStream
+
+instance IsEventTarget MediaStream
+instance IsGObject MediaStream where
+  toGObject = GObject . unMediaStream
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaStream . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaStream :: IsGObject obj => obj -> JSM MediaStream
+castToMediaStream = castTo gTypeMediaStream "MediaStream"
+
+gTypeMediaStream :: JSM GType
+gTypeMediaStream = GType . Object <$> jsg "webkitMediaStream"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.MediaStreamAudioDestinationNode".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.AudioNode"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamAudioDestinationNode Mozilla MediaStreamAudioDestinationNode documentation>
+newtype MediaStreamAudioDestinationNode = MediaStreamAudioDestinationNode { unMediaStreamAudioDestinationNode :: JSVal }
+
+instance PToJSVal MediaStreamAudioDestinationNode where
+  pToJSVal = unMediaStreamAudioDestinationNode
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaStreamAudioDestinationNode where
+  pFromJSVal = MediaStreamAudioDestinationNode
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaStreamAudioDestinationNode where
+  toJSVal = return . unMediaStreamAudioDestinationNode
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaStreamAudioDestinationNode where
+  fromJSVal v = fmap MediaStreamAudioDestinationNode <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject MediaStreamAudioDestinationNode where
+  makeObject = makeObject . unMediaStreamAudioDestinationNode
+
+instance IsAudioNode MediaStreamAudioDestinationNode
+instance IsEventTarget MediaStreamAudioDestinationNode
+instance IsGObject MediaStreamAudioDestinationNode where
+  toGObject = GObject . unMediaStreamAudioDestinationNode
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaStreamAudioDestinationNode . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaStreamAudioDestinationNode :: IsGObject obj => obj -> JSM MediaStreamAudioDestinationNode
+castToMediaStreamAudioDestinationNode = castTo gTypeMediaStreamAudioDestinationNode "MediaStreamAudioDestinationNode"
+
+gTypeMediaStreamAudioDestinationNode :: JSM GType
+gTypeMediaStreamAudioDestinationNode = GType . Object <$> jsg "MediaStreamAudioDestinationNode"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.MediaStreamAudioSourceNode".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.AudioNode"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamAudioSourceNode Mozilla MediaStreamAudioSourceNode documentation>
+newtype MediaStreamAudioSourceNode = MediaStreamAudioSourceNode { unMediaStreamAudioSourceNode :: JSVal }
+
+instance PToJSVal MediaStreamAudioSourceNode where
+  pToJSVal = unMediaStreamAudioSourceNode
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaStreamAudioSourceNode where
+  pFromJSVal = MediaStreamAudioSourceNode
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaStreamAudioSourceNode where
+  toJSVal = return . unMediaStreamAudioSourceNode
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaStreamAudioSourceNode where
+  fromJSVal v = fmap MediaStreamAudioSourceNode <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject MediaStreamAudioSourceNode where
+  makeObject = makeObject . unMediaStreamAudioSourceNode
+
+instance IsAudioNode MediaStreamAudioSourceNode
+instance IsEventTarget MediaStreamAudioSourceNode
+instance IsGObject MediaStreamAudioSourceNode where
+  toGObject = GObject . unMediaStreamAudioSourceNode
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaStreamAudioSourceNode . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaStreamAudioSourceNode :: IsGObject obj => obj -> JSM MediaStreamAudioSourceNode
+castToMediaStreamAudioSourceNode = castTo gTypeMediaStreamAudioSourceNode "MediaStreamAudioSourceNode"
+
+gTypeMediaStreamAudioSourceNode :: JSM GType
+gTypeMediaStreamAudioSourceNode = GType . Object <$> jsg "MediaStreamAudioSourceNode"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.MediaStreamCapabilities".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamCapabilities Mozilla MediaStreamCapabilities documentation>
+newtype MediaStreamCapabilities = MediaStreamCapabilities { unMediaStreamCapabilities :: JSVal }
+
+instance PToJSVal MediaStreamCapabilities where
+  pToJSVal = unMediaStreamCapabilities
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaStreamCapabilities where
+  pFromJSVal = MediaStreamCapabilities
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaStreamCapabilities where
+  toJSVal = return . unMediaStreamCapabilities
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaStreamCapabilities where
+  fromJSVal v = fmap MediaStreamCapabilities <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject MediaStreamCapabilities where
+  makeObject = makeObject . unMediaStreamCapabilities
+
+class IsGObject o => IsMediaStreamCapabilities o
+toMediaStreamCapabilities :: IsMediaStreamCapabilities o => o -> MediaStreamCapabilities
+toMediaStreamCapabilities = unsafeCastGObject . toGObject
+
+instance IsMediaStreamCapabilities MediaStreamCapabilities
+instance IsGObject MediaStreamCapabilities where
+  toGObject = GObject . unMediaStreamCapabilities
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaStreamCapabilities . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaStreamCapabilities :: IsGObject obj => obj -> JSM MediaStreamCapabilities
+castToMediaStreamCapabilities = castTo gTypeMediaStreamCapabilities "MediaStreamCapabilities"
+
+gTypeMediaStreamCapabilities :: JSM GType
+gTypeMediaStreamCapabilities = GType . Object <$> jsg "MediaStreamCapabilities"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.MediaStreamEvent".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamEvent Mozilla MediaStreamEvent documentation>
+newtype MediaStreamEvent = MediaStreamEvent { unMediaStreamEvent :: JSVal }
+
+instance PToJSVal MediaStreamEvent where
+  pToJSVal = unMediaStreamEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaStreamEvent where
+  pFromJSVal = MediaStreamEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaStreamEvent where
+  toJSVal = return . unMediaStreamEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaStreamEvent where
+  fromJSVal v = fmap MediaStreamEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject MediaStreamEvent where
+  makeObject = makeObject . unMediaStreamEvent
+
+instance IsEvent MediaStreamEvent
+instance IsGObject MediaStreamEvent where
+  toGObject = GObject . unMediaStreamEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaStreamEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaStreamEvent :: IsGObject obj => obj -> JSM MediaStreamEvent
+castToMediaStreamEvent = castTo gTypeMediaStreamEvent "MediaStreamEvent"
+
+gTypeMediaStreamEvent :: JSM GType
+gTypeMediaStreamEvent = GType . Object <$> jsg "MediaStreamEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.MediaStreamTrack".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack Mozilla MediaStreamTrack documentation>
+newtype MediaStreamTrack = MediaStreamTrack { unMediaStreamTrack :: JSVal }
+
+instance PToJSVal MediaStreamTrack where
+  pToJSVal = unMediaStreamTrack
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaStreamTrack where
+  pFromJSVal = MediaStreamTrack
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaStreamTrack where
+  toJSVal = return . unMediaStreamTrack
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaStreamTrack where
+  fromJSVal v = fmap MediaStreamTrack <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject MediaStreamTrack where
+  makeObject = makeObject . unMediaStreamTrack
+
+class IsEventTarget o => IsMediaStreamTrack o
+toMediaStreamTrack :: IsMediaStreamTrack o => o -> MediaStreamTrack
+toMediaStreamTrack = unsafeCastGObject . toGObject
+
+instance IsMediaStreamTrack MediaStreamTrack
+instance IsEventTarget MediaStreamTrack
+instance IsGObject MediaStreamTrack where
+  toGObject = GObject . unMediaStreamTrack
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaStreamTrack . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaStreamTrack :: IsGObject obj => obj -> JSM MediaStreamTrack
+castToMediaStreamTrack = castTo gTypeMediaStreamTrack "MediaStreamTrack"
+
+gTypeMediaStreamTrack :: JSM GType
+gTypeMediaStreamTrack = GType . Object <$> jsg "MediaStreamTrack"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.MediaStreamTrackEvent".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrackEvent Mozilla MediaStreamTrackEvent documentation>
+newtype MediaStreamTrackEvent = MediaStreamTrackEvent { unMediaStreamTrackEvent :: JSVal }
+
+instance PToJSVal MediaStreamTrackEvent where
+  pToJSVal = unMediaStreamTrackEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaStreamTrackEvent where
+  pFromJSVal = MediaStreamTrackEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaStreamTrackEvent where
+  toJSVal = return . unMediaStreamTrackEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaStreamTrackEvent where
+  fromJSVal v = fmap MediaStreamTrackEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject MediaStreamTrackEvent where
+  makeObject = makeObject . unMediaStreamTrackEvent
+
+instance IsEvent MediaStreamTrackEvent
+instance IsGObject MediaStreamTrackEvent where
+  toGObject = GObject . unMediaStreamTrackEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaStreamTrackEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaStreamTrackEvent :: IsGObject obj => obj -> JSM MediaStreamTrackEvent
+castToMediaStreamTrackEvent = castTo gTypeMediaStreamTrackEvent "MediaStreamTrackEvent"
+
+gTypeMediaStreamTrackEvent :: JSM GType
+gTypeMediaStreamTrackEvent = GType . Object <$> jsg "MediaStreamTrackEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.MediaTrackConstraint".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackConstraint Mozilla MediaTrackConstraint documentation>
+newtype MediaTrackConstraint = MediaTrackConstraint { unMediaTrackConstraint :: JSVal }
+
+instance PToJSVal MediaTrackConstraint where
+  pToJSVal = unMediaTrackConstraint
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaTrackConstraint where
+  pFromJSVal = MediaTrackConstraint
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaTrackConstraint where
+  toJSVal = return . unMediaTrackConstraint
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaTrackConstraint where
+  fromJSVal v = fmap MediaTrackConstraint <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject MediaTrackConstraint where
+  makeObject = makeObject . unMediaTrackConstraint
+
+instance IsGObject MediaTrackConstraint where
+  toGObject = GObject . unMediaTrackConstraint
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaTrackConstraint . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaTrackConstraint :: IsGObject obj => obj -> JSM MediaTrackConstraint
+castToMediaTrackConstraint = castTo gTypeMediaTrackConstraint "MediaTrackConstraint"
+
+gTypeMediaTrackConstraint :: JSM GType
+gTypeMediaTrackConstraint = GType . Object <$> jsg "MediaTrackConstraint"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.MediaTrackConstraintSet".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackConstraintSet Mozilla MediaTrackConstraintSet documentation>
+newtype MediaTrackConstraintSet = MediaTrackConstraintSet { unMediaTrackConstraintSet :: JSVal }
+
+instance PToJSVal MediaTrackConstraintSet where
+  pToJSVal = unMediaTrackConstraintSet
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaTrackConstraintSet where
+  pFromJSVal = MediaTrackConstraintSet
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaTrackConstraintSet where
+  toJSVal = return . unMediaTrackConstraintSet
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaTrackConstraintSet where
+  fromJSVal v = fmap MediaTrackConstraintSet <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject MediaTrackConstraintSet where
+  makeObject = makeObject . unMediaTrackConstraintSet
+
+instance IsGObject MediaTrackConstraintSet where
+  toGObject = GObject . unMediaTrackConstraintSet
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaTrackConstraintSet . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaTrackConstraintSet :: IsGObject obj => obj -> JSM MediaTrackConstraintSet
+castToMediaTrackConstraintSet = castTo gTypeMediaTrackConstraintSet "MediaTrackConstraintSet"
+
+gTypeMediaTrackConstraintSet :: JSM GType
+gTypeMediaTrackConstraintSet = GType . Object <$> jsg "MediaTrackConstraintSet"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.MediaTrackConstraints".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackConstraints Mozilla MediaTrackConstraints documentation>
+newtype MediaTrackConstraints = MediaTrackConstraints { unMediaTrackConstraints :: JSVal }
+
+instance PToJSVal MediaTrackConstraints where
+  pToJSVal = unMediaTrackConstraints
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaTrackConstraints where
+  pFromJSVal = MediaTrackConstraints
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaTrackConstraints where
+  toJSVal = return . unMediaTrackConstraints
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaTrackConstraints where
+  fromJSVal v = fmap MediaTrackConstraints <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject MediaTrackConstraints where
+  makeObject = makeObject . unMediaTrackConstraints
+
+instance IsGObject MediaTrackConstraints where
+  toGObject = GObject . unMediaTrackConstraints
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaTrackConstraints . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaTrackConstraints :: IsGObject obj => obj -> JSM MediaTrackConstraints
+castToMediaTrackConstraints = castTo gTypeMediaTrackConstraints "MediaTrackConstraints"
+
+gTypeMediaTrackConstraints :: JSM GType
+gTypeMediaTrackConstraints = GType . Object <$> jsg "MediaTrackConstraints"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.MemoryInfo".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MemoryInfo Mozilla MemoryInfo documentation>
+newtype MemoryInfo = MemoryInfo { unMemoryInfo :: JSVal }
+
+instance PToJSVal MemoryInfo where
+  pToJSVal = unMemoryInfo
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MemoryInfo where
+  pFromJSVal = MemoryInfo
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MemoryInfo where
+  toJSVal = return . unMemoryInfo
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MemoryInfo where
+  fromJSVal v = fmap MemoryInfo <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject MemoryInfo where
+  makeObject = makeObject . unMemoryInfo
+
+instance IsGObject MemoryInfo where
+  toGObject = GObject . unMemoryInfo
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MemoryInfo . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMemoryInfo :: IsGObject obj => obj -> JSM MemoryInfo
+castToMemoryInfo = castTo gTypeMemoryInfo "MemoryInfo"
+
+gTypeMemoryInfo :: JSM GType
+gTypeMemoryInfo = GType . Object <$> jsg "MemoryInfo"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.MessageChannel".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MessageChannel Mozilla MessageChannel documentation>
+newtype MessageChannel = MessageChannel { unMessageChannel :: JSVal }
+
+instance PToJSVal MessageChannel where
+  pToJSVal = unMessageChannel
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MessageChannel where
+  pFromJSVal = MessageChannel
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MessageChannel where
+  toJSVal = return . unMessageChannel
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MessageChannel where
+  fromJSVal v = fmap MessageChannel <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject MessageChannel where
+  makeObject = makeObject . unMessageChannel
+
+instance IsGObject MessageChannel where
+  toGObject = GObject . unMessageChannel
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MessageChannel . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMessageChannel :: IsGObject obj => obj -> JSM MessageChannel
+castToMessageChannel = castTo gTypeMessageChannel "MessageChannel"
+
+gTypeMessageChannel :: JSM GType
+gTypeMessageChannel = GType . Object <$> jsg "MessageChannel"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.MessageEvent".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent Mozilla MessageEvent documentation>
+newtype MessageEvent = MessageEvent { unMessageEvent :: JSVal }
+
+instance PToJSVal MessageEvent where
+  pToJSVal = unMessageEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MessageEvent where
+  pFromJSVal = MessageEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MessageEvent where
+  toJSVal = return . unMessageEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MessageEvent where
+  fromJSVal v = fmap MessageEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject MessageEvent where
+  makeObject = makeObject . unMessageEvent
+
+instance IsEvent MessageEvent
+instance IsGObject MessageEvent where
+  toGObject = GObject . unMessageEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MessageEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMessageEvent :: IsGObject obj => obj -> JSM MessageEvent
+castToMessageEvent = castTo gTypeMessageEvent "MessageEvent"
+
+gTypeMessageEvent :: JSM GType
+gTypeMessageEvent = GType . Object <$> jsg "MessageEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.MessagePort".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MessagePort Mozilla MessagePort documentation>
+newtype MessagePort = MessagePort { unMessagePort :: JSVal }
+
+instance PToJSVal MessagePort where
+  pToJSVal = unMessagePort
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MessagePort where
+  pFromJSVal = MessagePort
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MessagePort where
+  toJSVal = return . unMessagePort
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MessagePort where
+  fromJSVal v = fmap MessagePort <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject MessagePort where
+  makeObject = makeObject . unMessagePort
+
+instance IsEventTarget MessagePort
+instance IsGObject MessagePort where
+  toGObject = GObject . unMessagePort
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MessagePort . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMessagePort :: IsGObject obj => obj -> JSM MessagePort
+castToMessagePort = castTo gTypeMessagePort "MessagePort"
+
+gTypeMessagePort :: JSM GType
+gTypeMessagePort = GType . Object <$> jsg "MessagePort"
+#else
+type IsMessagePort o = MessagePortClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.MimeType".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MimeType Mozilla MimeType documentation>
+newtype MimeType = MimeType { unMimeType :: JSVal }
+
+instance PToJSVal MimeType where
+  pToJSVal = unMimeType
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MimeType where
+  pFromJSVal = MimeType
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MimeType where
+  toJSVal = return . unMimeType
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MimeType where
+  fromJSVal v = fmap MimeType <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject MimeType where
+  makeObject = makeObject . unMimeType
+
+instance IsGObject MimeType where
+  toGObject = GObject . unMimeType
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MimeType . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMimeType :: IsGObject obj => obj -> JSM MimeType
+castToMimeType = castTo gTypeMimeType "MimeType"
+
+gTypeMimeType :: JSM GType
+gTypeMimeType = GType . Object <$> jsg "MimeType"
+#else
+type IsMimeType o = MimeTypeClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.MimeTypeArray".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MimeTypeArray Mozilla MimeTypeArray documentation>
+newtype MimeTypeArray = MimeTypeArray { unMimeTypeArray :: JSVal }
+
+instance PToJSVal MimeTypeArray where
+  pToJSVal = unMimeTypeArray
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MimeTypeArray where
+  pFromJSVal = MimeTypeArray
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MimeTypeArray where
+  toJSVal = return . unMimeTypeArray
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MimeTypeArray where
+  fromJSVal v = fmap MimeTypeArray <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject MimeTypeArray where
+  makeObject = makeObject . unMimeTypeArray
+
+instance IsGObject MimeTypeArray where
+  toGObject = GObject . unMimeTypeArray
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MimeTypeArray . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMimeTypeArray :: IsGObject obj => obj -> JSM MimeTypeArray
+castToMimeTypeArray = castTo gTypeMimeTypeArray "MimeTypeArray"
+
+gTypeMimeTypeArray :: JSM GType
+gTypeMimeTypeArray = GType . Object <$> jsg "MimeTypeArray"
+#else
+type IsMimeTypeArray o = MimeTypeArrayClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.MouseEvent".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.UIEvent"
+--     * "Language.Javascript.JSaddle.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent Mozilla MouseEvent documentation>
+newtype MouseEvent = MouseEvent { unMouseEvent :: JSVal }
+
+instance PToJSVal MouseEvent where
+  pToJSVal = unMouseEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MouseEvent where
+  pFromJSVal = MouseEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MouseEvent where
+  toJSVal = return . unMouseEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MouseEvent where
+  fromJSVal v = fmap MouseEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject MouseEvent where
+  makeObject = makeObject . unMouseEvent
+
+class IsUIEvent o => IsMouseEvent o
+toMouseEvent :: IsMouseEvent o => o -> MouseEvent
+toMouseEvent = unsafeCastGObject . toGObject
+
+instance IsMouseEvent MouseEvent
+instance IsUIEvent MouseEvent
+instance IsEvent MouseEvent
+instance IsGObject MouseEvent where
+  toGObject = GObject . unMouseEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MouseEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMouseEvent :: IsGObject obj => obj -> JSM MouseEvent
+castToMouseEvent = castTo gTypeMouseEvent "MouseEvent"
+
+gTypeMouseEvent :: JSM GType
+gTypeMouseEvent = GType . Object <$> jsg "MouseEvent"
+#else
+type IsMouseEvent o = MouseEventClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.MutationEvent".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MutationEvent Mozilla MutationEvent documentation>
+newtype MutationEvent = MutationEvent { unMutationEvent :: JSVal }
+
+instance PToJSVal MutationEvent where
+  pToJSVal = unMutationEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MutationEvent where
+  pFromJSVal = MutationEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MutationEvent where
+  toJSVal = return . unMutationEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MutationEvent where
+  fromJSVal v = fmap MutationEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject MutationEvent where
+  makeObject = makeObject . unMutationEvent
+
+instance IsEvent MutationEvent
+instance IsGObject MutationEvent where
+  toGObject = GObject . unMutationEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MutationEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMutationEvent :: IsGObject obj => obj -> JSM MutationEvent
+castToMutationEvent = castTo gTypeMutationEvent "MutationEvent"
+
+gTypeMutationEvent :: JSM GType
+gTypeMutationEvent = GType . Object <$> jsg "MutationEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.MutationObserver".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver Mozilla MutationObserver documentation>
+newtype MutationObserver = MutationObserver { unMutationObserver :: JSVal }
+
+instance PToJSVal MutationObserver where
+  pToJSVal = unMutationObserver
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MutationObserver where
+  pFromJSVal = MutationObserver
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MutationObserver where
+  toJSVal = return . unMutationObserver
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MutationObserver where
+  fromJSVal v = fmap MutationObserver <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject MutationObserver where
+  makeObject = makeObject . unMutationObserver
+
+instance IsGObject MutationObserver where
+  toGObject = GObject . unMutationObserver
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MutationObserver . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMutationObserver :: IsGObject obj => obj -> JSM MutationObserver
+castToMutationObserver = castTo gTypeMutationObserver "MutationObserver"
+
+gTypeMutationObserver :: JSM GType
+gTypeMutationObserver = GType . Object <$> jsg "MutationObserver"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.MutationRecord".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord Mozilla MutationRecord documentation>
+newtype MutationRecord = MutationRecord { unMutationRecord :: JSVal }
+
+instance PToJSVal MutationRecord where
+  pToJSVal = unMutationRecord
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MutationRecord where
+  pFromJSVal = MutationRecord
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MutationRecord where
+  toJSVal = return . unMutationRecord
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MutationRecord where
+  fromJSVal v = fmap MutationRecord <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject MutationRecord where
+  makeObject = makeObject . unMutationRecord
+
+instance IsGObject MutationRecord where
+  toGObject = GObject . unMutationRecord
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MutationRecord . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMutationRecord :: IsGObject obj => obj -> JSM MutationRecord
+castToMutationRecord = castTo gTypeMutationRecord "MutationRecord"
+
+gTypeMutationRecord :: JSM GType
+gTypeMutationRecord = GType . Object <$> jsg "MutationRecord"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.NamedNodeMap".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap Mozilla NamedNodeMap documentation>
+newtype NamedNodeMap = NamedNodeMap { unNamedNodeMap :: JSVal }
+
+instance PToJSVal NamedNodeMap where
+  pToJSVal = unNamedNodeMap
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal NamedNodeMap where
+  pFromJSVal = NamedNodeMap
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal NamedNodeMap where
+  toJSVal = return . unNamedNodeMap
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal NamedNodeMap where
+  fromJSVal v = fmap NamedNodeMap <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject NamedNodeMap where
+  makeObject = makeObject . unNamedNodeMap
+
+instance IsGObject NamedNodeMap where
+  toGObject = GObject . unNamedNodeMap
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = NamedNodeMap . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToNamedNodeMap :: IsGObject obj => obj -> JSM NamedNodeMap
+castToNamedNodeMap = castTo gTypeNamedNodeMap "NamedNodeMap"
+
+gTypeNamedNodeMap :: JSM GType
+gTypeNamedNodeMap = GType . Object <$> jsg "NamedNodeMap"
+#else
+type IsNamedNodeMap o = NamedNodeMapClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.Navigator".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Navigator Mozilla Navigator documentation>
+newtype Navigator = Navigator { unNavigator :: JSVal }
+
+instance PToJSVal Navigator where
+  pToJSVal = unNavigator
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Navigator where
+  pFromJSVal = Navigator
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Navigator where
+  toJSVal = return . unNavigator
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Navigator where
+  fromJSVal v = fmap Navigator <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject Navigator where
+  makeObject = makeObject . unNavigator
+
+instance IsGObject Navigator where
+  toGObject = GObject . unNavigator
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Navigator . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToNavigator :: IsGObject obj => obj -> JSM Navigator
+castToNavigator = castTo gTypeNavigator "Navigator"
+
+gTypeNavigator :: JSM GType
+gTypeNavigator = GType . Object <$> jsg "Navigator"
+#else
+type IsNavigator o = NavigatorClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.NavigatorUserMediaError".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.DOMError"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorUserMediaError Mozilla NavigatorUserMediaError documentation>
+newtype NavigatorUserMediaError = NavigatorUserMediaError { unNavigatorUserMediaError :: JSVal }
+
+instance PToJSVal NavigatorUserMediaError where
+  pToJSVal = unNavigatorUserMediaError
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal NavigatorUserMediaError where
+  pFromJSVal = NavigatorUserMediaError
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal NavigatorUserMediaError where
+  toJSVal = return . unNavigatorUserMediaError
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal NavigatorUserMediaError where
+  fromJSVal v = fmap NavigatorUserMediaError <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject NavigatorUserMediaError where
+  makeObject = makeObject . unNavigatorUserMediaError
+
+instance IsDOMError NavigatorUserMediaError
+instance IsGObject NavigatorUserMediaError where
+  toGObject = GObject . unNavigatorUserMediaError
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = NavigatorUserMediaError . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToNavigatorUserMediaError :: IsGObject obj => obj -> JSM NavigatorUserMediaError
+castToNavigatorUserMediaError = castTo gTypeNavigatorUserMediaError "NavigatorUserMediaError"
+
+gTypeNavigatorUserMediaError :: JSM GType
+gTypeNavigatorUserMediaError = GType . Object <$> jsg "NavigatorUserMediaError"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.Node".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Node Mozilla Node documentation>
+newtype Node = Node { unNode :: JSVal }
+
+instance PToJSVal Node where
+  pToJSVal = unNode
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Node where
+  pFromJSVal = Node
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Node where
+  toJSVal = return . unNode
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Node where
+  fromJSVal v = fmap Node <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject Node where
+  makeObject = makeObject . unNode
+
+class IsEventTarget o => IsNode o
+toNode :: IsNode o => o -> Node
+toNode = unsafeCastGObject . toGObject
+
+instance IsNode Node
+instance IsEventTarget Node
+instance IsGObject Node where
+  toGObject = GObject . unNode
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Node . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToNode :: IsGObject obj => obj -> JSM Node
+castToNode = castTo gTypeNode "Node"
+
+gTypeNode :: JSM GType
+gTypeNode = GType . Object <$> jsg "Node"
+#else
+type IsNode o = NodeClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.NodeFilter".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/NodeFilter Mozilla NodeFilter documentation>
+newtype NodeFilter = NodeFilter { unNodeFilter :: JSVal }
+
+instance PToJSVal NodeFilter where
+  pToJSVal = unNodeFilter
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal NodeFilter where
+  pFromJSVal = NodeFilter
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal NodeFilter where
+  toJSVal = return . unNodeFilter
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal NodeFilter where
+  fromJSVal v = fmap NodeFilter <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject NodeFilter where
+  makeObject = makeObject . unNodeFilter
+
+instance IsGObject NodeFilter where
+  toGObject = GObject . unNodeFilter
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = NodeFilter . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToNodeFilter :: IsGObject obj => obj -> JSM NodeFilter
+castToNodeFilter = castTo gTypeNodeFilter "NodeFilter"
+
+gTypeNodeFilter :: JSM GType
+gTypeNodeFilter = GType . Object <$> jsg "NodeFilter"
+#else
+type IsNodeFilter o = NodeFilterClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.NodeIterator".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/NodeIterator Mozilla NodeIterator documentation>
+newtype NodeIterator = NodeIterator { unNodeIterator :: JSVal }
+
+instance PToJSVal NodeIterator where
+  pToJSVal = unNodeIterator
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal NodeIterator where
+  pFromJSVal = NodeIterator
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal NodeIterator where
+  toJSVal = return . unNodeIterator
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal NodeIterator where
+  fromJSVal v = fmap NodeIterator <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject NodeIterator where
+  makeObject = makeObject . unNodeIterator
+
+instance IsGObject NodeIterator where
+  toGObject = GObject . unNodeIterator
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = NodeIterator . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToNodeIterator :: IsGObject obj => obj -> JSM NodeIterator
+castToNodeIterator = castTo gTypeNodeIterator "NodeIterator"
+
+gTypeNodeIterator :: JSM GType
+gTypeNodeIterator = GType . Object <$> jsg "NodeIterator"
+#else
+type IsNodeIterator o = NodeIteratorClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.NodeList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/NodeList Mozilla NodeList documentation>
+newtype NodeList = NodeList { unNodeList :: JSVal }
+
+instance PToJSVal NodeList where
+  pToJSVal = unNodeList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal NodeList where
+  pFromJSVal = NodeList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal NodeList where
+  toJSVal = return . unNodeList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal NodeList where
+  fromJSVal v = fmap NodeList <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject NodeList where
+  makeObject = makeObject . unNodeList
+
+class IsGObject o => IsNodeList o
+toNodeList :: IsNodeList o => o -> NodeList
+toNodeList = unsafeCastGObject . toGObject
+
+instance IsNodeList NodeList
+instance IsGObject NodeList where
+  toGObject = GObject . unNodeList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = NodeList . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToNodeList :: IsGObject obj => obj -> JSM NodeList
+castToNodeList = castTo gTypeNodeList "NodeList"
+
+gTypeNodeList :: JSM GType
+gTypeNodeList = GType . Object <$> jsg "NodeList"
+#else
+type IsNodeList o = NodeListClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.Notification".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Notification Mozilla Notification documentation>
+newtype Notification = Notification { unNotification :: JSVal }
+
+instance PToJSVal Notification where
+  pToJSVal = unNotification
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Notification where
+  pFromJSVal = Notification
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Notification where
+  toJSVal = return . unNotification
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Notification where
+  fromJSVal v = fmap Notification <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject Notification where
+  makeObject = makeObject . unNotification
+
+instance IsEventTarget Notification
+instance IsGObject Notification where
+  toGObject = GObject . unNotification
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Notification . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToNotification :: IsGObject obj => obj -> JSM Notification
+castToNotification = castTo gTypeNotification "Notification"
+
+gTypeNotification :: JSM GType
+gTypeNotification = GType . Object <$> jsg "Notification"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.NotificationCenter".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/NotificationCenter Mozilla NotificationCenter documentation>
+newtype NotificationCenter = NotificationCenter { unNotificationCenter :: JSVal }
+
+instance PToJSVal NotificationCenter where
+  pToJSVal = unNotificationCenter
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal NotificationCenter where
+  pFromJSVal = NotificationCenter
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal NotificationCenter where
+  toJSVal = return . unNotificationCenter
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal NotificationCenter where
+  fromJSVal v = fmap NotificationCenter <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject NotificationCenter where
+  makeObject = makeObject . unNotificationCenter
+
+instance IsGObject NotificationCenter where
+  toGObject = GObject . unNotificationCenter
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = NotificationCenter . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToNotificationCenter :: IsGObject obj => obj -> JSM NotificationCenter
+castToNotificationCenter = castTo gTypeNotificationCenter "NotificationCenter"
+
+gTypeNotificationCenter :: JSM GType
+gTypeNotificationCenter = GType . Object <$> jsg "NotificationCenter"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.OESElementIndexUint".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/OESElementIndexUint Mozilla OESElementIndexUint documentation>
+newtype OESElementIndexUint = OESElementIndexUint { unOESElementIndexUint :: JSVal }
+
+instance PToJSVal OESElementIndexUint where
+  pToJSVal = unOESElementIndexUint
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal OESElementIndexUint where
+  pFromJSVal = OESElementIndexUint
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal OESElementIndexUint where
+  toJSVal = return . unOESElementIndexUint
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal OESElementIndexUint where
+  fromJSVal v = fmap OESElementIndexUint <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject OESElementIndexUint where
+  makeObject = makeObject . unOESElementIndexUint
+
+instance IsGObject OESElementIndexUint where
+  toGObject = GObject . unOESElementIndexUint
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = OESElementIndexUint . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToOESElementIndexUint :: IsGObject obj => obj -> JSM OESElementIndexUint
+castToOESElementIndexUint = castTo gTypeOESElementIndexUint "OESElementIndexUint"
+
+gTypeOESElementIndexUint :: JSM GType
+gTypeOESElementIndexUint = GType . Object <$> jsg "OESElementIndexUint"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.OESStandardDerivatives".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/OESStandardDerivatives Mozilla OESStandardDerivatives documentation>
+newtype OESStandardDerivatives = OESStandardDerivatives { unOESStandardDerivatives :: JSVal }
+
+instance PToJSVal OESStandardDerivatives where
+  pToJSVal = unOESStandardDerivatives
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal OESStandardDerivatives where
+  pFromJSVal = OESStandardDerivatives
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal OESStandardDerivatives where
+  toJSVal = return . unOESStandardDerivatives
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal OESStandardDerivatives where
+  fromJSVal v = fmap OESStandardDerivatives <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject OESStandardDerivatives where
+  makeObject = makeObject . unOESStandardDerivatives
+
+instance IsGObject OESStandardDerivatives where
+  toGObject = GObject . unOESStandardDerivatives
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = OESStandardDerivatives . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToOESStandardDerivatives :: IsGObject obj => obj -> JSM OESStandardDerivatives
+castToOESStandardDerivatives = castTo gTypeOESStandardDerivatives "OESStandardDerivatives"
+
+gTypeOESStandardDerivatives :: JSM GType
+gTypeOESStandardDerivatives = GType . Object <$> jsg "OESStandardDerivatives"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.OESTextureFloat".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/OESTextureFloat Mozilla OESTextureFloat documentation>
+newtype OESTextureFloat = OESTextureFloat { unOESTextureFloat :: JSVal }
+
+instance PToJSVal OESTextureFloat where
+  pToJSVal = unOESTextureFloat
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal OESTextureFloat where
+  pFromJSVal = OESTextureFloat
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal OESTextureFloat where
+  toJSVal = return . unOESTextureFloat
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal OESTextureFloat where
+  fromJSVal v = fmap OESTextureFloat <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject OESTextureFloat where
+  makeObject = makeObject . unOESTextureFloat
+
+instance IsGObject OESTextureFloat where
+  toGObject = GObject . unOESTextureFloat
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = OESTextureFloat . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToOESTextureFloat :: IsGObject obj => obj -> JSM OESTextureFloat
+castToOESTextureFloat = castTo gTypeOESTextureFloat "OESTextureFloat"
+
+gTypeOESTextureFloat :: JSM GType
+gTypeOESTextureFloat = GType . Object <$> jsg "OESTextureFloat"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.OESTextureFloatLinear".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/OESTextureFloatLinear Mozilla OESTextureFloatLinear documentation>
+newtype OESTextureFloatLinear = OESTextureFloatLinear { unOESTextureFloatLinear :: JSVal }
+
+instance PToJSVal OESTextureFloatLinear where
+  pToJSVal = unOESTextureFloatLinear
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal OESTextureFloatLinear where
+  pFromJSVal = OESTextureFloatLinear
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal OESTextureFloatLinear where
+  toJSVal = return . unOESTextureFloatLinear
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal OESTextureFloatLinear where
+  fromJSVal v = fmap OESTextureFloatLinear <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject OESTextureFloatLinear where
+  makeObject = makeObject . unOESTextureFloatLinear
+
+instance IsGObject OESTextureFloatLinear where
+  toGObject = GObject . unOESTextureFloatLinear
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = OESTextureFloatLinear . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToOESTextureFloatLinear :: IsGObject obj => obj -> JSM OESTextureFloatLinear
+castToOESTextureFloatLinear = castTo gTypeOESTextureFloatLinear "OESTextureFloatLinear"
+
+gTypeOESTextureFloatLinear :: JSM GType
+gTypeOESTextureFloatLinear = GType . Object <$> jsg "OESTextureFloatLinear"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.OESTextureHalfFloat".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/OESTextureHalfFloat Mozilla OESTextureHalfFloat documentation>
+newtype OESTextureHalfFloat = OESTextureHalfFloat { unOESTextureHalfFloat :: JSVal }
+
+instance PToJSVal OESTextureHalfFloat where
+  pToJSVal = unOESTextureHalfFloat
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal OESTextureHalfFloat where
+  pFromJSVal = OESTextureHalfFloat
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal OESTextureHalfFloat where
+  toJSVal = return . unOESTextureHalfFloat
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal OESTextureHalfFloat where
+  fromJSVal v = fmap OESTextureHalfFloat <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject OESTextureHalfFloat where
+  makeObject = makeObject . unOESTextureHalfFloat
+
+instance IsGObject OESTextureHalfFloat where
+  toGObject = GObject . unOESTextureHalfFloat
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = OESTextureHalfFloat . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToOESTextureHalfFloat :: IsGObject obj => obj -> JSM OESTextureHalfFloat
+castToOESTextureHalfFloat = castTo gTypeOESTextureHalfFloat "OESTextureHalfFloat"
+
+gTypeOESTextureHalfFloat :: JSM GType
+gTypeOESTextureHalfFloat = GType . Object <$> jsg "OESTextureHalfFloat"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.OESTextureHalfFloatLinear".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/OESTextureHalfFloatLinear Mozilla OESTextureHalfFloatLinear documentation>
+newtype OESTextureHalfFloatLinear = OESTextureHalfFloatLinear { unOESTextureHalfFloatLinear :: JSVal }
+
+instance PToJSVal OESTextureHalfFloatLinear where
+  pToJSVal = unOESTextureHalfFloatLinear
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal OESTextureHalfFloatLinear where
+  pFromJSVal = OESTextureHalfFloatLinear
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal OESTextureHalfFloatLinear where
+  toJSVal = return . unOESTextureHalfFloatLinear
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal OESTextureHalfFloatLinear where
+  fromJSVal v = fmap OESTextureHalfFloatLinear <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject OESTextureHalfFloatLinear where
+  makeObject = makeObject . unOESTextureHalfFloatLinear
+
+instance IsGObject OESTextureHalfFloatLinear where
+  toGObject = GObject . unOESTextureHalfFloatLinear
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = OESTextureHalfFloatLinear . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToOESTextureHalfFloatLinear :: IsGObject obj => obj -> JSM OESTextureHalfFloatLinear
+castToOESTextureHalfFloatLinear = castTo gTypeOESTextureHalfFloatLinear "OESTextureHalfFloatLinear"
+
+gTypeOESTextureHalfFloatLinear :: JSM GType
+gTypeOESTextureHalfFloatLinear = GType . Object <$> jsg "OESTextureHalfFloatLinear"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.OESVertexArrayObject".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/OESVertexArrayObject Mozilla OESVertexArrayObject documentation>
+newtype OESVertexArrayObject = OESVertexArrayObject { unOESVertexArrayObject :: JSVal }
+
+instance PToJSVal OESVertexArrayObject where
+  pToJSVal = unOESVertexArrayObject
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal OESVertexArrayObject where
+  pFromJSVal = OESVertexArrayObject
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal OESVertexArrayObject where
+  toJSVal = return . unOESVertexArrayObject
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal OESVertexArrayObject where
+  fromJSVal v = fmap OESVertexArrayObject <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject OESVertexArrayObject where
+  makeObject = makeObject . unOESVertexArrayObject
+
+instance IsGObject OESVertexArrayObject where
+  toGObject = GObject . unOESVertexArrayObject
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = OESVertexArrayObject . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToOESVertexArrayObject :: IsGObject obj => obj -> JSM OESVertexArrayObject
+castToOESVertexArrayObject = castTo gTypeOESVertexArrayObject "OESVertexArrayObject"
+
+gTypeOESVertexArrayObject :: JSM GType
+gTypeOESVertexArrayObject = GType . Object <$> jsg "OESVertexArrayObject"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.OfflineAudioCompletionEvent".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/OfflineAudioCompletionEvent Mozilla OfflineAudioCompletionEvent documentation>
+newtype OfflineAudioCompletionEvent = OfflineAudioCompletionEvent { unOfflineAudioCompletionEvent :: JSVal }
+
+instance PToJSVal OfflineAudioCompletionEvent where
+  pToJSVal = unOfflineAudioCompletionEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal OfflineAudioCompletionEvent where
+  pFromJSVal = OfflineAudioCompletionEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal OfflineAudioCompletionEvent where
+  toJSVal = return . unOfflineAudioCompletionEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal OfflineAudioCompletionEvent where
+  fromJSVal v = fmap OfflineAudioCompletionEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject OfflineAudioCompletionEvent where
+  makeObject = makeObject . unOfflineAudioCompletionEvent
+
+instance IsEvent OfflineAudioCompletionEvent
+instance IsGObject OfflineAudioCompletionEvent where
+  toGObject = GObject . unOfflineAudioCompletionEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = OfflineAudioCompletionEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToOfflineAudioCompletionEvent :: IsGObject obj => obj -> JSM OfflineAudioCompletionEvent
+castToOfflineAudioCompletionEvent = castTo gTypeOfflineAudioCompletionEvent "OfflineAudioCompletionEvent"
+
+gTypeOfflineAudioCompletionEvent :: JSM GType
+gTypeOfflineAudioCompletionEvent = GType . Object <$> jsg "OfflineAudioCompletionEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.OfflineAudioContext".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.AudioContext"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/OfflineAudioContext Mozilla OfflineAudioContext documentation>
+newtype OfflineAudioContext = OfflineAudioContext { unOfflineAudioContext :: JSVal }
+
+instance PToJSVal OfflineAudioContext where
+  pToJSVal = unOfflineAudioContext
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal OfflineAudioContext where
+  pFromJSVal = OfflineAudioContext
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal OfflineAudioContext where
+  toJSVal = return . unOfflineAudioContext
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal OfflineAudioContext where
+  fromJSVal v = fmap OfflineAudioContext <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject OfflineAudioContext where
+  makeObject = makeObject . unOfflineAudioContext
+
+instance IsAudioContext OfflineAudioContext
+instance IsEventTarget OfflineAudioContext
+instance IsGObject OfflineAudioContext where
+  toGObject = GObject . unOfflineAudioContext
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = OfflineAudioContext . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToOfflineAudioContext :: IsGObject obj => obj -> JSM OfflineAudioContext
+castToOfflineAudioContext = castTo gTypeOfflineAudioContext "OfflineAudioContext"
+
+gTypeOfflineAudioContext :: JSM GType
+gTypeOfflineAudioContext = GType . Object <$> jsg "OfflineAudioContext"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.OscillatorNode".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.AudioNode"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/OscillatorNode Mozilla OscillatorNode documentation>
+newtype OscillatorNode = OscillatorNode { unOscillatorNode :: JSVal }
+
+instance PToJSVal OscillatorNode where
+  pToJSVal = unOscillatorNode
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal OscillatorNode where
+  pFromJSVal = OscillatorNode
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal OscillatorNode where
+  toJSVal = return . unOscillatorNode
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal OscillatorNode where
+  fromJSVal v = fmap OscillatorNode <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject OscillatorNode where
+  makeObject = makeObject . unOscillatorNode
+
+instance IsAudioNode OscillatorNode
+instance IsEventTarget OscillatorNode
+instance IsGObject OscillatorNode where
+  toGObject = GObject . unOscillatorNode
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = OscillatorNode . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToOscillatorNode :: IsGObject obj => obj -> JSM OscillatorNode
+castToOscillatorNode = castTo gTypeOscillatorNode "OscillatorNode"
+
+gTypeOscillatorNode :: JSM GType
+gTypeOscillatorNode = GType . Object <$> jsg "OscillatorNode"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.OverflowEvent".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/OverflowEvent Mozilla OverflowEvent documentation>
+newtype OverflowEvent = OverflowEvent { unOverflowEvent :: JSVal }
+
+instance PToJSVal OverflowEvent where
+  pToJSVal = unOverflowEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal OverflowEvent where
+  pFromJSVal = OverflowEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal OverflowEvent where
+  toJSVal = return . unOverflowEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal OverflowEvent where
+  fromJSVal v = fmap OverflowEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject OverflowEvent where
+  makeObject = makeObject . unOverflowEvent
+
+instance IsEvent OverflowEvent
+instance IsGObject OverflowEvent where
+  toGObject = GObject . unOverflowEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = OverflowEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToOverflowEvent :: IsGObject obj => obj -> JSM OverflowEvent
+castToOverflowEvent = castTo gTypeOverflowEvent "OverflowEvent"
+
+gTypeOverflowEvent :: JSM GType
+gTypeOverflowEvent = GType . Object <$> jsg "OverflowEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.PageTransitionEvent".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/PageTransitionEvent Mozilla PageTransitionEvent documentation>
+newtype PageTransitionEvent = PageTransitionEvent { unPageTransitionEvent :: JSVal }
+
+instance PToJSVal PageTransitionEvent where
+  pToJSVal = unPageTransitionEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal PageTransitionEvent where
+  pFromJSVal = PageTransitionEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal PageTransitionEvent where
+  toJSVal = return . unPageTransitionEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal PageTransitionEvent where
+  fromJSVal v = fmap PageTransitionEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject PageTransitionEvent where
+  makeObject = makeObject . unPageTransitionEvent
+
+instance IsEvent PageTransitionEvent
+instance IsGObject PageTransitionEvent where
+  toGObject = GObject . unPageTransitionEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = PageTransitionEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToPageTransitionEvent :: IsGObject obj => obj -> JSM PageTransitionEvent
+castToPageTransitionEvent = castTo gTypePageTransitionEvent "PageTransitionEvent"
+
+gTypePageTransitionEvent :: JSM GType
+gTypePageTransitionEvent = GType . Object <$> jsg "PageTransitionEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.PannerNode".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.AudioNode"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode Mozilla webkitAudioPannerNode documentation>
+newtype PannerNode = PannerNode { unPannerNode :: JSVal }
+
+instance PToJSVal PannerNode where
+  pToJSVal = unPannerNode
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal PannerNode where
+  pFromJSVal = PannerNode
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal PannerNode where
+  toJSVal = return . unPannerNode
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal PannerNode where
+  fromJSVal v = fmap PannerNode <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject PannerNode where
+  makeObject = makeObject . unPannerNode
+
+instance IsAudioNode PannerNode
+instance IsEventTarget PannerNode
+instance IsGObject PannerNode where
+  toGObject = GObject . unPannerNode
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = PannerNode . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToPannerNode :: IsGObject obj => obj -> JSM PannerNode
+castToPannerNode = castTo gTypePannerNode "PannerNode"
+
+gTypePannerNode :: JSM GType
+gTypePannerNode = GType . Object <$> jsg "webkitAudioPannerNode"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.Path2D".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Path2D Mozilla Path2D documentation>
+newtype Path2D = Path2D { unPath2D :: JSVal }
+
+instance PToJSVal Path2D where
+  pToJSVal = unPath2D
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Path2D where
+  pFromJSVal = Path2D
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Path2D where
+  toJSVal = return . unPath2D
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Path2D where
+  fromJSVal v = fmap Path2D <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject Path2D where
+  makeObject = makeObject . unPath2D
+
+instance IsGObject Path2D where
+  toGObject = GObject . unPath2D
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Path2D . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToPath2D :: IsGObject obj => obj -> JSM Path2D
+castToPath2D = castTo gTypePath2D "Path2D"
+
+gTypePath2D :: JSM GType
+gTypePath2D = GType . Object <$> jsg "Path2D"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.Performance".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Performance Mozilla Performance documentation>
+newtype Performance = Performance { unPerformance :: JSVal }
+
+instance PToJSVal Performance where
+  pToJSVal = unPerformance
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Performance where
+  pFromJSVal = Performance
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Performance where
+  toJSVal = return . unPerformance
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Performance where
+  fromJSVal v = fmap Performance <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject Performance where
+  makeObject = makeObject . unPerformance
+
+instance IsEventTarget Performance
+instance IsGObject Performance where
+  toGObject = GObject . unPerformance
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Performance . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToPerformance :: IsGObject obj => obj -> JSM Performance
+castToPerformance = castTo gTypePerformance "Performance"
+
+gTypePerformance :: JSM GType
+gTypePerformance = GType . Object <$> jsg "Performance"
+#else
+#ifndef USE_OLD_WEBKIT
+type IsPerformance o = PerformanceClass o
+#endif
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.PerformanceEntry".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceEntry Mozilla PerformanceEntry documentation>
+newtype PerformanceEntry = PerformanceEntry { unPerformanceEntry :: JSVal }
+
+instance PToJSVal PerformanceEntry where
+  pToJSVal = unPerformanceEntry
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal PerformanceEntry where
+  pFromJSVal = PerformanceEntry
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal PerformanceEntry where
+  toJSVal = return . unPerformanceEntry
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal PerformanceEntry where
+  fromJSVal v = fmap PerformanceEntry <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject PerformanceEntry where
+  makeObject = makeObject . unPerformanceEntry
+
+class IsGObject o => IsPerformanceEntry o
+toPerformanceEntry :: IsPerformanceEntry o => o -> PerformanceEntry
+toPerformanceEntry = unsafeCastGObject . toGObject
+
+instance IsPerformanceEntry PerformanceEntry
+instance IsGObject PerformanceEntry where
+  toGObject = GObject . unPerformanceEntry
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = PerformanceEntry . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToPerformanceEntry :: IsGObject obj => obj -> JSM PerformanceEntry
+castToPerformanceEntry = castTo gTypePerformanceEntry "PerformanceEntry"
+
+gTypePerformanceEntry :: JSM GType
+gTypePerformanceEntry = GType . Object <$> jsg "PerformanceEntry"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.PerformanceEntryList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceEntryList Mozilla PerformanceEntryList documentation>
+newtype PerformanceEntryList = PerformanceEntryList { unPerformanceEntryList :: JSVal }
+
+instance PToJSVal PerformanceEntryList where
+  pToJSVal = unPerformanceEntryList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal PerformanceEntryList where
+  pFromJSVal = PerformanceEntryList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal PerformanceEntryList where
+  toJSVal = return . unPerformanceEntryList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal PerformanceEntryList where
+  fromJSVal v = fmap PerformanceEntryList <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject PerformanceEntryList where
+  makeObject = makeObject . unPerformanceEntryList
+
+instance IsGObject PerformanceEntryList where
+  toGObject = GObject . unPerformanceEntryList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = PerformanceEntryList . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToPerformanceEntryList :: IsGObject obj => obj -> JSM PerformanceEntryList
+castToPerformanceEntryList = castTo gTypePerformanceEntryList "PerformanceEntryList"
+
+gTypePerformanceEntryList :: JSM GType
+gTypePerformanceEntryList = GType . Object <$> jsg "PerformanceEntryList"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.PerformanceMark".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.PerformanceEntry"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceMark Mozilla PerformanceMark documentation>
+newtype PerformanceMark = PerformanceMark { unPerformanceMark :: JSVal }
+
+instance PToJSVal PerformanceMark where
+  pToJSVal = unPerformanceMark
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal PerformanceMark where
+  pFromJSVal = PerformanceMark
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal PerformanceMark where
+  toJSVal = return . unPerformanceMark
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal PerformanceMark where
+  fromJSVal v = fmap PerformanceMark <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject PerformanceMark where
+  makeObject = makeObject . unPerformanceMark
+
+instance IsPerformanceEntry PerformanceMark
+instance IsGObject PerformanceMark where
+  toGObject = GObject . unPerformanceMark
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = PerformanceMark . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToPerformanceMark :: IsGObject obj => obj -> JSM PerformanceMark
+castToPerformanceMark = castTo gTypePerformanceMark "PerformanceMark"
+
+gTypePerformanceMark :: JSM GType
+gTypePerformanceMark = GType . Object <$> jsg "PerformanceMark"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.PerformanceMeasure".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.PerformanceEntry"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceMeasure Mozilla PerformanceMeasure documentation>
+newtype PerformanceMeasure = PerformanceMeasure { unPerformanceMeasure :: JSVal }
+
+instance PToJSVal PerformanceMeasure where
+  pToJSVal = unPerformanceMeasure
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal PerformanceMeasure where
+  pFromJSVal = PerformanceMeasure
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal PerformanceMeasure where
+  toJSVal = return . unPerformanceMeasure
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal PerformanceMeasure where
+  fromJSVal v = fmap PerformanceMeasure <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject PerformanceMeasure where
+  makeObject = makeObject . unPerformanceMeasure
+
+instance IsPerformanceEntry PerformanceMeasure
+instance IsGObject PerformanceMeasure where
+  toGObject = GObject . unPerformanceMeasure
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = PerformanceMeasure . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToPerformanceMeasure :: IsGObject obj => obj -> JSM PerformanceMeasure
+castToPerformanceMeasure = castTo gTypePerformanceMeasure "PerformanceMeasure"
+
+gTypePerformanceMeasure :: JSM GType
+gTypePerformanceMeasure = GType . Object <$> jsg "PerformanceMeasure"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.PerformanceNavigation".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceNavigation Mozilla PerformanceNavigation documentation>
+newtype PerformanceNavigation = PerformanceNavigation { unPerformanceNavigation :: JSVal }
+
+instance PToJSVal PerformanceNavigation where
+  pToJSVal = unPerformanceNavigation
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal PerformanceNavigation where
+  pFromJSVal = PerformanceNavigation
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal PerformanceNavigation where
+  toJSVal = return . unPerformanceNavigation
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal PerformanceNavigation where
+  fromJSVal v = fmap PerformanceNavigation <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject PerformanceNavigation where
+  makeObject = makeObject . unPerformanceNavigation
+
+instance IsGObject PerformanceNavigation where
+  toGObject = GObject . unPerformanceNavigation
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = PerformanceNavigation . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToPerformanceNavigation :: IsGObject obj => obj -> JSM PerformanceNavigation
+castToPerformanceNavigation = castTo gTypePerformanceNavigation "PerformanceNavigation"
+
+gTypePerformanceNavigation :: JSM GType
+gTypePerformanceNavigation = GType . Object <$> jsg "PerformanceNavigation"
+#else
+#ifndef USE_OLD_WEBKIT
+type IsPerformanceNavigation o = PerformanceNavigationClass o
+#endif
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.PerformanceResourceTiming".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.PerformanceEntry"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming Mozilla PerformanceResourceTiming documentation>
+newtype PerformanceResourceTiming = PerformanceResourceTiming { unPerformanceResourceTiming :: JSVal }
+
+instance PToJSVal PerformanceResourceTiming where
+  pToJSVal = unPerformanceResourceTiming
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal PerformanceResourceTiming where
+  pFromJSVal = PerformanceResourceTiming
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal PerformanceResourceTiming where
+  toJSVal = return . unPerformanceResourceTiming
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal PerformanceResourceTiming where
+  fromJSVal v = fmap PerformanceResourceTiming <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject PerformanceResourceTiming where
+  makeObject = makeObject . unPerformanceResourceTiming
+
+instance IsPerformanceEntry PerformanceResourceTiming
+instance IsGObject PerformanceResourceTiming where
+  toGObject = GObject . unPerformanceResourceTiming
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = PerformanceResourceTiming . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToPerformanceResourceTiming :: IsGObject obj => obj -> JSM PerformanceResourceTiming
+castToPerformanceResourceTiming = castTo gTypePerformanceResourceTiming "PerformanceResourceTiming"
+
+gTypePerformanceResourceTiming :: JSM GType
+gTypePerformanceResourceTiming = GType . Object <$> jsg "PerformanceResourceTiming"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.PerformanceTiming".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming Mozilla PerformanceTiming documentation>
+newtype PerformanceTiming = PerformanceTiming { unPerformanceTiming :: JSVal }
+
+instance PToJSVal PerformanceTiming where
+  pToJSVal = unPerformanceTiming
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal PerformanceTiming where
+  pFromJSVal = PerformanceTiming
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal PerformanceTiming where
+  toJSVal = return . unPerformanceTiming
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal PerformanceTiming where
+  fromJSVal v = fmap PerformanceTiming <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject PerformanceTiming where
+  makeObject = makeObject . unPerformanceTiming
+
+instance IsGObject PerformanceTiming where
+  toGObject = GObject . unPerformanceTiming
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = PerformanceTiming . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToPerformanceTiming :: IsGObject obj => obj -> JSM PerformanceTiming
+castToPerformanceTiming = castTo gTypePerformanceTiming "PerformanceTiming"
+
+gTypePerformanceTiming :: JSM GType
+gTypePerformanceTiming = GType . Object <$> jsg "PerformanceTiming"
+#else
+#ifndef USE_OLD_WEBKIT
+type IsPerformanceTiming o = PerformanceTimingClass o
+#endif
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.PeriodicWave".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/PeriodicWave Mozilla PeriodicWave documentation>
+newtype PeriodicWave = PeriodicWave { unPeriodicWave :: JSVal }
+
+instance PToJSVal PeriodicWave where
+  pToJSVal = unPeriodicWave
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal PeriodicWave where
+  pFromJSVal = PeriodicWave
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal PeriodicWave where
+  toJSVal = return . unPeriodicWave
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal PeriodicWave where
+  fromJSVal v = fmap PeriodicWave <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject PeriodicWave where
+  makeObject = makeObject . unPeriodicWave
+
+instance IsGObject PeriodicWave where
+  toGObject = GObject . unPeriodicWave
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = PeriodicWave . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToPeriodicWave :: IsGObject obj => obj -> JSM PeriodicWave
+castToPeriodicWave = castTo gTypePeriodicWave "PeriodicWave"
+
+gTypePeriodicWave :: JSM GType
+gTypePeriodicWave = GType . Object <$> jsg "PeriodicWave"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.Plugin".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Plugin Mozilla Plugin documentation>
+newtype Plugin = Plugin { unPlugin :: JSVal }
+
+instance PToJSVal Plugin where
+  pToJSVal = unPlugin
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Plugin where
+  pFromJSVal = Plugin
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Plugin where
+  toJSVal = return . unPlugin
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Plugin where
+  fromJSVal v = fmap Plugin <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject Plugin where
+  makeObject = makeObject . unPlugin
+
+instance IsGObject Plugin where
+  toGObject = GObject . unPlugin
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Plugin . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToPlugin :: IsGObject obj => obj -> JSM Plugin
+castToPlugin = castTo gTypePlugin "Plugin"
+
+gTypePlugin :: JSM GType
+gTypePlugin = GType . Object <$> jsg "Plugin"
+#else
+type IsPlugin o = PluginClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.PluginArray".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/PluginArray Mozilla PluginArray documentation>
+newtype PluginArray = PluginArray { unPluginArray :: JSVal }
+
+instance PToJSVal PluginArray where
+  pToJSVal = unPluginArray
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal PluginArray where
+  pFromJSVal = PluginArray
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal PluginArray where
+  toJSVal = return . unPluginArray
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal PluginArray where
+  fromJSVal v = fmap PluginArray <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject PluginArray where
+  makeObject = makeObject . unPluginArray
+
+instance IsGObject PluginArray where
+  toGObject = GObject . unPluginArray
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = PluginArray . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToPluginArray :: IsGObject obj => obj -> JSM PluginArray
+castToPluginArray = castTo gTypePluginArray "PluginArray"
+
+gTypePluginArray :: JSM GType
+gTypePluginArray = GType . Object <$> jsg "PluginArray"
+#else
+type IsPluginArray o = PluginArrayClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.PopStateEvent".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/PopStateEvent Mozilla PopStateEvent documentation>
+newtype PopStateEvent = PopStateEvent { unPopStateEvent :: JSVal }
+
+instance PToJSVal PopStateEvent where
+  pToJSVal = unPopStateEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal PopStateEvent where
+  pFromJSVal = PopStateEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal PopStateEvent where
+  toJSVal = return . unPopStateEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal PopStateEvent where
+  fromJSVal v = fmap PopStateEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject PopStateEvent where
+  makeObject = makeObject . unPopStateEvent
+
+instance IsEvent PopStateEvent
+instance IsGObject PopStateEvent where
+  toGObject = GObject . unPopStateEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = PopStateEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToPopStateEvent :: IsGObject obj => obj -> JSM PopStateEvent
+castToPopStateEvent = castTo gTypePopStateEvent "PopStateEvent"
+
+gTypePopStateEvent :: JSM GType
+gTypePopStateEvent = GType . Object <$> jsg "PopStateEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.PositionError".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/PositionError Mozilla PositionError documentation>
+newtype PositionError = PositionError { unPositionError :: JSVal }
+
+instance PToJSVal PositionError where
+  pToJSVal = unPositionError
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal PositionError where
+  pFromJSVal = PositionError
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal PositionError where
+  toJSVal = return . unPositionError
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal PositionError where
+  fromJSVal v = fmap PositionError <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject PositionError where
+  makeObject = makeObject . unPositionError
+
+instance IsGObject PositionError where
+  toGObject = GObject . unPositionError
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = PositionError . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToPositionError :: IsGObject obj => obj -> JSM PositionError
+castToPositionError = castTo gTypePositionError "PositionError"
+
+gTypePositionError :: JSM GType
+gTypePositionError = GType . Object <$> jsg "PositionError"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.ProcessingInstruction".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.CharacterData"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ProcessingInstruction Mozilla ProcessingInstruction documentation>
+newtype ProcessingInstruction = ProcessingInstruction { unProcessingInstruction :: JSVal }
+
+instance PToJSVal ProcessingInstruction where
+  pToJSVal = unProcessingInstruction
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ProcessingInstruction where
+  pFromJSVal = ProcessingInstruction
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ProcessingInstruction where
+  toJSVal = return . unProcessingInstruction
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ProcessingInstruction where
+  fromJSVal v = fmap ProcessingInstruction <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject ProcessingInstruction where
+  makeObject = makeObject . unProcessingInstruction
+
+instance IsCharacterData ProcessingInstruction
+instance IsNode ProcessingInstruction
+instance IsEventTarget ProcessingInstruction
+instance IsGObject ProcessingInstruction where
+  toGObject = GObject . unProcessingInstruction
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = ProcessingInstruction . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToProcessingInstruction :: IsGObject obj => obj -> JSM ProcessingInstruction
+castToProcessingInstruction = castTo gTypeProcessingInstruction "ProcessingInstruction"
+
+gTypeProcessingInstruction :: JSM GType
+gTypeProcessingInstruction = GType . Object <$> jsg "ProcessingInstruction"
+#else
+type IsProcessingInstruction o = ProcessingInstructionClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.ProgressEvent".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ProgressEvent Mozilla ProgressEvent documentation>
+newtype ProgressEvent = ProgressEvent { unProgressEvent :: JSVal }
+
+instance PToJSVal ProgressEvent where
+  pToJSVal = unProgressEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ProgressEvent where
+  pFromJSVal = ProgressEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ProgressEvent where
+  toJSVal = return . unProgressEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ProgressEvent where
+  fromJSVal v = fmap ProgressEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject ProgressEvent where
+  makeObject = makeObject . unProgressEvent
+
+class IsEvent o => IsProgressEvent o
+toProgressEvent :: IsProgressEvent o => o -> ProgressEvent
+toProgressEvent = unsafeCastGObject . toGObject
+
+instance IsProgressEvent ProgressEvent
+instance IsEvent ProgressEvent
+instance IsGObject ProgressEvent where
+  toGObject = GObject . unProgressEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = ProgressEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToProgressEvent :: IsGObject obj => obj -> JSM ProgressEvent
+castToProgressEvent = castTo gTypeProgressEvent "ProgressEvent"
+
+gTypeProgressEvent :: JSM GType
+gTypeProgressEvent = GType . Object <$> jsg "ProgressEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.QuickTimePluginReplacement".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/QuickTimePluginReplacement Mozilla QuickTimePluginReplacement documentation>
+newtype QuickTimePluginReplacement = QuickTimePluginReplacement { unQuickTimePluginReplacement :: JSVal }
+
+instance PToJSVal QuickTimePluginReplacement where
+  pToJSVal = unQuickTimePluginReplacement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal QuickTimePluginReplacement where
+  pFromJSVal = QuickTimePluginReplacement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal QuickTimePluginReplacement where
+  toJSVal = return . unQuickTimePluginReplacement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal QuickTimePluginReplacement where
+  fromJSVal v = fmap QuickTimePluginReplacement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject QuickTimePluginReplacement where
+  makeObject = makeObject . unQuickTimePluginReplacement
+
+instance IsGObject QuickTimePluginReplacement where
+  toGObject = GObject . unQuickTimePluginReplacement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = QuickTimePluginReplacement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToQuickTimePluginReplacement :: IsGObject obj => obj -> JSM QuickTimePluginReplacement
+castToQuickTimePluginReplacement = castTo gTypeQuickTimePluginReplacement "QuickTimePluginReplacement"
+
+gTypeQuickTimePluginReplacement :: JSM GType
+gTypeQuickTimePluginReplacement = GType . Object <$> jsg "QuickTimePluginReplacement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.RGBColor".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RGBColor Mozilla RGBColor documentation>
+newtype RGBColor = RGBColor { unRGBColor :: JSVal }
+
+instance PToJSVal RGBColor where
+  pToJSVal = unRGBColor
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RGBColor where
+  pFromJSVal = RGBColor
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RGBColor where
+  toJSVal = return . unRGBColor
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RGBColor where
+  fromJSVal v = fmap RGBColor <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject RGBColor where
+  makeObject = makeObject . unRGBColor
+
+instance IsGObject RGBColor where
+  toGObject = GObject . unRGBColor
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = RGBColor . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToRGBColor :: IsGObject obj => obj -> JSM RGBColor
+castToRGBColor = castTo gTypeRGBColor "RGBColor"
+
+gTypeRGBColor :: JSM GType
+gTypeRGBColor = GType . Object <$> jsg "RGBColor"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.RTCConfiguration".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RTCConfiguration Mozilla RTCConfiguration documentation>
+newtype RTCConfiguration = RTCConfiguration { unRTCConfiguration :: JSVal }
+
+instance PToJSVal RTCConfiguration where
+  pToJSVal = unRTCConfiguration
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RTCConfiguration where
+  pFromJSVal = RTCConfiguration
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RTCConfiguration where
+  toJSVal = return . unRTCConfiguration
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RTCConfiguration where
+  fromJSVal v = fmap RTCConfiguration <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject RTCConfiguration where
+  makeObject = makeObject . unRTCConfiguration
+
+instance IsGObject RTCConfiguration where
+  toGObject = GObject . unRTCConfiguration
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = RTCConfiguration . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToRTCConfiguration :: IsGObject obj => obj -> JSM RTCConfiguration
+castToRTCConfiguration = castTo gTypeRTCConfiguration "RTCConfiguration"
+
+gTypeRTCConfiguration :: JSM GType
+gTypeRTCConfiguration = GType . Object <$> jsg "RTCConfiguration"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.RTCDTMFSender".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RTCDTMFSender Mozilla RTCDTMFSender documentation>
+newtype RTCDTMFSender = RTCDTMFSender { unRTCDTMFSender :: JSVal }
+
+instance PToJSVal RTCDTMFSender where
+  pToJSVal = unRTCDTMFSender
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RTCDTMFSender where
+  pFromJSVal = RTCDTMFSender
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RTCDTMFSender where
+  toJSVal = return . unRTCDTMFSender
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RTCDTMFSender where
+  fromJSVal v = fmap RTCDTMFSender <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject RTCDTMFSender where
+  makeObject = makeObject . unRTCDTMFSender
+
+instance IsEventTarget RTCDTMFSender
+instance IsGObject RTCDTMFSender where
+  toGObject = GObject . unRTCDTMFSender
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = RTCDTMFSender . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToRTCDTMFSender :: IsGObject obj => obj -> JSM RTCDTMFSender
+castToRTCDTMFSender = castTo gTypeRTCDTMFSender "RTCDTMFSender"
+
+gTypeRTCDTMFSender :: JSM GType
+gTypeRTCDTMFSender = GType . Object <$> jsg "RTCDTMFSender"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.RTCDTMFToneChangeEvent".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RTCDTMFToneChangeEvent Mozilla RTCDTMFToneChangeEvent documentation>
+newtype RTCDTMFToneChangeEvent = RTCDTMFToneChangeEvent { unRTCDTMFToneChangeEvent :: JSVal }
+
+instance PToJSVal RTCDTMFToneChangeEvent where
+  pToJSVal = unRTCDTMFToneChangeEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RTCDTMFToneChangeEvent where
+  pFromJSVal = RTCDTMFToneChangeEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RTCDTMFToneChangeEvent where
+  toJSVal = return . unRTCDTMFToneChangeEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RTCDTMFToneChangeEvent where
+  fromJSVal v = fmap RTCDTMFToneChangeEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject RTCDTMFToneChangeEvent where
+  makeObject = makeObject . unRTCDTMFToneChangeEvent
+
+instance IsEvent RTCDTMFToneChangeEvent
+instance IsGObject RTCDTMFToneChangeEvent where
+  toGObject = GObject . unRTCDTMFToneChangeEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = RTCDTMFToneChangeEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToRTCDTMFToneChangeEvent :: IsGObject obj => obj -> JSM RTCDTMFToneChangeEvent
+castToRTCDTMFToneChangeEvent = castTo gTypeRTCDTMFToneChangeEvent "RTCDTMFToneChangeEvent"
+
+gTypeRTCDTMFToneChangeEvent :: JSM GType
+gTypeRTCDTMFToneChangeEvent = GType . Object <$> jsg "RTCDTMFToneChangeEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.RTCDataChannel".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel Mozilla RTCDataChannel documentation>
+newtype RTCDataChannel = RTCDataChannel { unRTCDataChannel :: JSVal }
+
+instance PToJSVal RTCDataChannel where
+  pToJSVal = unRTCDataChannel
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RTCDataChannel where
+  pFromJSVal = RTCDataChannel
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RTCDataChannel where
+  toJSVal = return . unRTCDataChannel
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RTCDataChannel where
+  fromJSVal v = fmap RTCDataChannel <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject RTCDataChannel where
+  makeObject = makeObject . unRTCDataChannel
+
+instance IsEventTarget RTCDataChannel
+instance IsGObject RTCDataChannel where
+  toGObject = GObject . unRTCDataChannel
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = RTCDataChannel . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToRTCDataChannel :: IsGObject obj => obj -> JSM RTCDataChannel
+castToRTCDataChannel = castTo gTypeRTCDataChannel "RTCDataChannel"
+
+gTypeRTCDataChannel :: JSM GType
+gTypeRTCDataChannel = GType . Object <$> jsg "RTCDataChannel"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.RTCDataChannelEvent".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannelEvent Mozilla RTCDataChannelEvent documentation>
+newtype RTCDataChannelEvent = RTCDataChannelEvent { unRTCDataChannelEvent :: JSVal }
+
+instance PToJSVal RTCDataChannelEvent where
+  pToJSVal = unRTCDataChannelEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RTCDataChannelEvent where
+  pFromJSVal = RTCDataChannelEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RTCDataChannelEvent where
+  toJSVal = return . unRTCDataChannelEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RTCDataChannelEvent where
+  fromJSVal v = fmap RTCDataChannelEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject RTCDataChannelEvent where
+  makeObject = makeObject . unRTCDataChannelEvent
+
+instance IsEvent RTCDataChannelEvent
+instance IsGObject RTCDataChannelEvent where
+  toGObject = GObject . unRTCDataChannelEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = RTCDataChannelEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToRTCDataChannelEvent :: IsGObject obj => obj -> JSM RTCDataChannelEvent
+castToRTCDataChannelEvent = castTo gTypeRTCDataChannelEvent "RTCDataChannelEvent"
+
+gTypeRTCDataChannelEvent :: JSM GType
+gTypeRTCDataChannelEvent = GType . Object <$> jsg "RTCDataChannelEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.RTCIceCandidate".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidate Mozilla RTCIceCandidate documentation>
+newtype RTCIceCandidate = RTCIceCandidate { unRTCIceCandidate :: JSVal }
+
+instance PToJSVal RTCIceCandidate where
+  pToJSVal = unRTCIceCandidate
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RTCIceCandidate where
+  pFromJSVal = RTCIceCandidate
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RTCIceCandidate where
+  toJSVal = return . unRTCIceCandidate
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RTCIceCandidate where
+  fromJSVal v = fmap RTCIceCandidate <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject RTCIceCandidate where
+  makeObject = makeObject . unRTCIceCandidate
+
+instance IsGObject RTCIceCandidate where
+  toGObject = GObject . unRTCIceCandidate
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = RTCIceCandidate . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToRTCIceCandidate :: IsGObject obj => obj -> JSM RTCIceCandidate
+castToRTCIceCandidate = castTo gTypeRTCIceCandidate "RTCIceCandidate"
+
+gTypeRTCIceCandidate :: JSM GType
+gTypeRTCIceCandidate = GType . Object <$> jsg "RTCIceCandidate"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.RTCIceCandidateEvent".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidateEvent Mozilla RTCIceCandidateEvent documentation>
+newtype RTCIceCandidateEvent = RTCIceCandidateEvent { unRTCIceCandidateEvent :: JSVal }
+
+instance PToJSVal RTCIceCandidateEvent where
+  pToJSVal = unRTCIceCandidateEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RTCIceCandidateEvent where
+  pFromJSVal = RTCIceCandidateEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RTCIceCandidateEvent where
+  toJSVal = return . unRTCIceCandidateEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RTCIceCandidateEvent where
+  fromJSVal v = fmap RTCIceCandidateEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject RTCIceCandidateEvent where
+  makeObject = makeObject . unRTCIceCandidateEvent
+
+instance IsEvent RTCIceCandidateEvent
+instance IsGObject RTCIceCandidateEvent where
+  toGObject = GObject . unRTCIceCandidateEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = RTCIceCandidateEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToRTCIceCandidateEvent :: IsGObject obj => obj -> JSM RTCIceCandidateEvent
+castToRTCIceCandidateEvent = castTo gTypeRTCIceCandidateEvent "RTCIceCandidateEvent"
+
+gTypeRTCIceCandidateEvent :: JSM GType
+gTypeRTCIceCandidateEvent = GType . Object <$> jsg "RTCIceCandidateEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.RTCIceServer".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceServer Mozilla RTCIceServer documentation>
+newtype RTCIceServer = RTCIceServer { unRTCIceServer :: JSVal }
+
+instance PToJSVal RTCIceServer where
+  pToJSVal = unRTCIceServer
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RTCIceServer where
+  pFromJSVal = RTCIceServer
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RTCIceServer where
+  toJSVal = return . unRTCIceServer
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RTCIceServer where
+  fromJSVal v = fmap RTCIceServer <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject RTCIceServer where
+  makeObject = makeObject . unRTCIceServer
+
+instance IsGObject RTCIceServer where
+  toGObject = GObject . unRTCIceServer
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = RTCIceServer . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToRTCIceServer :: IsGObject obj => obj -> JSM RTCIceServer
+castToRTCIceServer = castTo gTypeRTCIceServer "RTCIceServer"
+
+gTypeRTCIceServer :: JSM GType
+gTypeRTCIceServer = GType . Object <$> jsg "RTCIceServer"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.RTCPeerConnection".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection Mozilla webkitRTCPeerConnection documentation>
+newtype RTCPeerConnection = RTCPeerConnection { unRTCPeerConnection :: JSVal }
+
+instance PToJSVal RTCPeerConnection where
+  pToJSVal = unRTCPeerConnection
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RTCPeerConnection where
+  pFromJSVal = RTCPeerConnection
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RTCPeerConnection where
+  toJSVal = return . unRTCPeerConnection
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RTCPeerConnection where
+  fromJSVal v = fmap RTCPeerConnection <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject RTCPeerConnection where
+  makeObject = makeObject . unRTCPeerConnection
+
+instance IsEventTarget RTCPeerConnection
+instance IsGObject RTCPeerConnection where
+  toGObject = GObject . unRTCPeerConnection
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = RTCPeerConnection . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToRTCPeerConnection :: IsGObject obj => obj -> JSM RTCPeerConnection
+castToRTCPeerConnection = castTo gTypeRTCPeerConnection "RTCPeerConnection"
+
+gTypeRTCPeerConnection :: JSM GType
+gTypeRTCPeerConnection = GType . Object <$> jsg "webkitRTCPeerConnection"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.RTCSessionDescription".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RTCSessionDescription Mozilla RTCSessionDescription documentation>
+newtype RTCSessionDescription = RTCSessionDescription { unRTCSessionDescription :: JSVal }
+
+instance PToJSVal RTCSessionDescription where
+  pToJSVal = unRTCSessionDescription
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RTCSessionDescription where
+  pFromJSVal = RTCSessionDescription
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RTCSessionDescription where
+  toJSVal = return . unRTCSessionDescription
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RTCSessionDescription where
+  fromJSVal v = fmap RTCSessionDescription <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject RTCSessionDescription where
+  makeObject = makeObject . unRTCSessionDescription
+
+instance IsGObject RTCSessionDescription where
+  toGObject = GObject . unRTCSessionDescription
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = RTCSessionDescription . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToRTCSessionDescription :: IsGObject obj => obj -> JSM RTCSessionDescription
+castToRTCSessionDescription = castTo gTypeRTCSessionDescription "RTCSessionDescription"
+
+gTypeRTCSessionDescription :: JSM GType
+gTypeRTCSessionDescription = GType . Object <$> jsg "RTCSessionDescription"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.RTCStatsReport".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RTCStatsReport Mozilla RTCStatsReport documentation>
+newtype RTCStatsReport = RTCStatsReport { unRTCStatsReport :: JSVal }
+
+instance PToJSVal RTCStatsReport where
+  pToJSVal = unRTCStatsReport
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RTCStatsReport where
+  pFromJSVal = RTCStatsReport
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RTCStatsReport where
+  toJSVal = return . unRTCStatsReport
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RTCStatsReport where
+  fromJSVal v = fmap RTCStatsReport <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject RTCStatsReport where
+  makeObject = makeObject . unRTCStatsReport
+
+instance IsGObject RTCStatsReport where
+  toGObject = GObject . unRTCStatsReport
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = RTCStatsReport . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToRTCStatsReport :: IsGObject obj => obj -> JSM RTCStatsReport
+castToRTCStatsReport = castTo gTypeRTCStatsReport "RTCStatsReport"
+
+gTypeRTCStatsReport :: JSM GType
+gTypeRTCStatsReport = GType . Object <$> jsg "RTCStatsReport"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.RTCStatsResponse".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RTCStatsResponse Mozilla RTCStatsResponse documentation>
+newtype RTCStatsResponse = RTCStatsResponse { unRTCStatsResponse :: JSVal }
+
+instance PToJSVal RTCStatsResponse where
+  pToJSVal = unRTCStatsResponse
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RTCStatsResponse where
+  pFromJSVal = RTCStatsResponse
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RTCStatsResponse where
+  toJSVal = return . unRTCStatsResponse
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RTCStatsResponse where
+  fromJSVal v = fmap RTCStatsResponse <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject RTCStatsResponse where
+  makeObject = makeObject . unRTCStatsResponse
+
+instance IsGObject RTCStatsResponse where
+  toGObject = GObject . unRTCStatsResponse
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = RTCStatsResponse . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToRTCStatsResponse :: IsGObject obj => obj -> JSM RTCStatsResponse
+castToRTCStatsResponse = castTo gTypeRTCStatsResponse "RTCStatsResponse"
+
+gTypeRTCStatsResponse :: JSM GType
+gTypeRTCStatsResponse = GType . Object <$> jsg "RTCStatsResponse"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.RadioNodeList".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.NodeList"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RadioNodeList Mozilla RadioNodeList documentation>
+newtype RadioNodeList = RadioNodeList { unRadioNodeList :: JSVal }
+
+instance PToJSVal RadioNodeList where
+  pToJSVal = unRadioNodeList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RadioNodeList where
+  pFromJSVal = RadioNodeList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RadioNodeList where
+  toJSVal = return . unRadioNodeList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RadioNodeList where
+  fromJSVal v = fmap RadioNodeList <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject RadioNodeList where
+  makeObject = makeObject . unRadioNodeList
+
+instance IsNodeList RadioNodeList
+instance IsGObject RadioNodeList where
+  toGObject = GObject . unRadioNodeList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = RadioNodeList . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToRadioNodeList :: IsGObject obj => obj -> JSM RadioNodeList
+castToRadioNodeList = castTo gTypeRadioNodeList "RadioNodeList"
+
+gTypeRadioNodeList :: JSM GType
+gTypeRadioNodeList = GType . Object <$> jsg "RadioNodeList"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.Range".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Range Mozilla Range documentation>
+newtype Range = Range { unRange :: JSVal }
+
+instance PToJSVal Range where
+  pToJSVal = unRange
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Range where
+  pFromJSVal = Range
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Range where
+  toJSVal = return . unRange
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Range where
+  fromJSVal v = fmap Range <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject Range where
+  makeObject = makeObject . unRange
+
+instance IsGObject Range where
+  toGObject = GObject . unRange
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Range . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToRange :: IsGObject obj => obj -> JSM Range
+castToRange = castTo gTypeRange "Range"
+
+gTypeRange :: JSM GType
+gTypeRange = GType . Object <$> jsg "Range"
+#else
+type IsRange o = RangeClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.ReadableStream".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream Mozilla ReadableStream documentation>
+newtype ReadableStream = ReadableStream { unReadableStream :: JSVal }
+
+instance PToJSVal ReadableStream where
+  pToJSVal = unReadableStream
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ReadableStream where
+  pFromJSVal = ReadableStream
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ReadableStream where
+  toJSVal = return . unReadableStream
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ReadableStream where
+  fromJSVal v = fmap ReadableStream <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject ReadableStream where
+  makeObject = makeObject . unReadableStream
+
+instance IsGObject ReadableStream where
+  toGObject = GObject . unReadableStream
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = ReadableStream . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToReadableStream :: IsGObject obj => obj -> JSM ReadableStream
+castToReadableStream = castTo gTypeReadableStream "ReadableStream"
+
+gTypeReadableStream :: JSM GType
+gTypeReadableStream = GType . Object <$> jsg "ReadableStream"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.Rect".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Rect Mozilla Rect documentation>
+newtype Rect = Rect { unRect :: JSVal }
+
+instance PToJSVal Rect where
+  pToJSVal = unRect
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Rect where
+  pFromJSVal = Rect
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Rect where
+  toJSVal = return . unRect
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Rect where
+  fromJSVal v = fmap Rect <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject Rect where
+  makeObject = makeObject . unRect
+
+instance IsGObject Rect where
+  toGObject = GObject . unRect
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Rect . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToRect :: IsGObject obj => obj -> JSM Rect
+castToRect = castTo gTypeRect "Rect"
+
+gTypeRect :: JSM GType
+gTypeRect = GType . Object <$> jsg "Rect"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SQLError".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SQLError Mozilla SQLError documentation>
+newtype SQLError = SQLError { unSQLError :: JSVal }
+
+instance PToJSVal SQLError where
+  pToJSVal = unSQLError
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SQLError where
+  pFromJSVal = SQLError
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SQLError where
+  toJSVal = return . unSQLError
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SQLError where
+  fromJSVal v = fmap SQLError <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SQLError where
+  makeObject = makeObject . unSQLError
+
+instance IsGObject SQLError where
+  toGObject = GObject . unSQLError
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SQLError . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSQLError :: IsGObject obj => obj -> JSM SQLError
+castToSQLError = castTo gTypeSQLError "SQLError"
+
+gTypeSQLError :: JSM GType
+gTypeSQLError = GType . Object <$> jsg "SQLError"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SQLResultSet".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SQLResultSet Mozilla SQLResultSet documentation>
+newtype SQLResultSet = SQLResultSet { unSQLResultSet :: JSVal }
+
+instance PToJSVal SQLResultSet where
+  pToJSVal = unSQLResultSet
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SQLResultSet where
+  pFromJSVal = SQLResultSet
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SQLResultSet where
+  toJSVal = return . unSQLResultSet
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SQLResultSet where
+  fromJSVal v = fmap SQLResultSet <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SQLResultSet where
+  makeObject = makeObject . unSQLResultSet
+
+instance IsGObject SQLResultSet where
+  toGObject = GObject . unSQLResultSet
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SQLResultSet . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSQLResultSet :: IsGObject obj => obj -> JSM SQLResultSet
+castToSQLResultSet = castTo gTypeSQLResultSet "SQLResultSet"
+
+gTypeSQLResultSet :: JSM GType
+gTypeSQLResultSet = GType . Object <$> jsg "SQLResultSet"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SQLResultSetRowList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SQLResultSetRowList Mozilla SQLResultSetRowList documentation>
+newtype SQLResultSetRowList = SQLResultSetRowList { unSQLResultSetRowList :: JSVal }
+
+instance PToJSVal SQLResultSetRowList where
+  pToJSVal = unSQLResultSetRowList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SQLResultSetRowList where
+  pFromJSVal = SQLResultSetRowList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SQLResultSetRowList where
+  toJSVal = return . unSQLResultSetRowList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SQLResultSetRowList where
+  fromJSVal v = fmap SQLResultSetRowList <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SQLResultSetRowList where
+  makeObject = makeObject . unSQLResultSetRowList
+
+instance IsGObject SQLResultSetRowList where
+  toGObject = GObject . unSQLResultSetRowList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SQLResultSetRowList . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSQLResultSetRowList :: IsGObject obj => obj -> JSM SQLResultSetRowList
+castToSQLResultSetRowList = castTo gTypeSQLResultSetRowList "SQLResultSetRowList"
+
+gTypeSQLResultSetRowList :: JSM GType
+gTypeSQLResultSetRowList = GType . Object <$> jsg "SQLResultSetRowList"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SQLTransaction".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SQLTransaction Mozilla SQLTransaction documentation>
+newtype SQLTransaction = SQLTransaction { unSQLTransaction :: JSVal }
+
+instance PToJSVal SQLTransaction where
+  pToJSVal = unSQLTransaction
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SQLTransaction where
+  pFromJSVal = SQLTransaction
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SQLTransaction where
+  toJSVal = return . unSQLTransaction
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SQLTransaction where
+  fromJSVal v = fmap SQLTransaction <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SQLTransaction where
+  makeObject = makeObject . unSQLTransaction
+
+instance IsGObject SQLTransaction where
+  toGObject = GObject . unSQLTransaction
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SQLTransaction . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSQLTransaction :: IsGObject obj => obj -> JSM SQLTransaction
+castToSQLTransaction = castTo gTypeSQLTransaction "SQLTransaction"
+
+gTypeSQLTransaction :: JSM GType
+gTypeSQLTransaction = GType . Object <$> jsg "SQLTransaction"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGAElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGGraphicsElement"
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAElement Mozilla SVGAElement documentation>
+newtype SVGAElement = SVGAElement { unSVGAElement :: JSVal }
+
+instance PToJSVal SVGAElement where
+  pToJSVal = unSVGAElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGAElement where
+  pFromJSVal = SVGAElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGAElement where
+  toJSVal = return . unSVGAElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGAElement where
+  fromJSVal v = fmap SVGAElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGAElement where
+  makeObject = makeObject . unSVGAElement
+
+instance IsSVGGraphicsElement SVGAElement
+instance IsSVGElement SVGAElement
+instance IsElement SVGAElement
+instance IsNode SVGAElement
+instance IsEventTarget SVGAElement
+instance IsGObject SVGAElement where
+  toGObject = GObject . unSVGAElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGAElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGAElement :: IsGObject obj => obj -> JSM SVGAElement
+castToSVGAElement = castTo gTypeSVGAElement "SVGAElement"
+
+gTypeSVGAElement :: JSM GType
+gTypeSVGAElement = GType . Object <$> jsg "SVGAElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGAltGlyphDefElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAltGlyphDefElement Mozilla SVGAltGlyphDefElement documentation>
+newtype SVGAltGlyphDefElement = SVGAltGlyphDefElement { unSVGAltGlyphDefElement :: JSVal }
+
+instance PToJSVal SVGAltGlyphDefElement where
+  pToJSVal = unSVGAltGlyphDefElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGAltGlyphDefElement where
+  pFromJSVal = SVGAltGlyphDefElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGAltGlyphDefElement where
+  toJSVal = return . unSVGAltGlyphDefElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGAltGlyphDefElement where
+  fromJSVal v = fmap SVGAltGlyphDefElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGAltGlyphDefElement where
+  makeObject = makeObject . unSVGAltGlyphDefElement
+
+instance IsSVGElement SVGAltGlyphDefElement
+instance IsElement SVGAltGlyphDefElement
+instance IsNode SVGAltGlyphDefElement
+instance IsEventTarget SVGAltGlyphDefElement
+instance IsGObject SVGAltGlyphDefElement where
+  toGObject = GObject . unSVGAltGlyphDefElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGAltGlyphDefElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGAltGlyphDefElement :: IsGObject obj => obj -> JSM SVGAltGlyphDefElement
+castToSVGAltGlyphDefElement = castTo gTypeSVGAltGlyphDefElement "SVGAltGlyphDefElement"
+
+gTypeSVGAltGlyphDefElement :: JSM GType
+gTypeSVGAltGlyphDefElement = GType . Object <$> jsg "SVGAltGlyphDefElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGAltGlyphElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGTextPositioningElement"
+--     * "Language.Javascript.JSaddle.DOM.SVGTextContentElement"
+--     * "Language.Javascript.JSaddle.DOM.SVGGraphicsElement"
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAltGlyphElement Mozilla SVGAltGlyphElement documentation>
+newtype SVGAltGlyphElement = SVGAltGlyphElement { unSVGAltGlyphElement :: JSVal }
+
+instance PToJSVal SVGAltGlyphElement where
+  pToJSVal = unSVGAltGlyphElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGAltGlyphElement where
+  pFromJSVal = SVGAltGlyphElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGAltGlyphElement where
+  toJSVal = return . unSVGAltGlyphElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGAltGlyphElement where
+  fromJSVal v = fmap SVGAltGlyphElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGAltGlyphElement where
+  makeObject = makeObject . unSVGAltGlyphElement
+
+instance IsSVGTextPositioningElement SVGAltGlyphElement
+instance IsSVGTextContentElement SVGAltGlyphElement
+instance IsSVGGraphicsElement SVGAltGlyphElement
+instance IsSVGElement SVGAltGlyphElement
+instance IsElement SVGAltGlyphElement
+instance IsNode SVGAltGlyphElement
+instance IsEventTarget SVGAltGlyphElement
+instance IsGObject SVGAltGlyphElement where
+  toGObject = GObject . unSVGAltGlyphElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGAltGlyphElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGAltGlyphElement :: IsGObject obj => obj -> JSM SVGAltGlyphElement
+castToSVGAltGlyphElement = castTo gTypeSVGAltGlyphElement "SVGAltGlyphElement"
+
+gTypeSVGAltGlyphElement :: JSM GType
+gTypeSVGAltGlyphElement = GType . Object <$> jsg "SVGAltGlyphElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGAltGlyphItemElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAltGlyphItemElement Mozilla SVGAltGlyphItemElement documentation>
+newtype SVGAltGlyphItemElement = SVGAltGlyphItemElement { unSVGAltGlyphItemElement :: JSVal }
+
+instance PToJSVal SVGAltGlyphItemElement where
+  pToJSVal = unSVGAltGlyphItemElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGAltGlyphItemElement where
+  pFromJSVal = SVGAltGlyphItemElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGAltGlyphItemElement where
+  toJSVal = return . unSVGAltGlyphItemElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGAltGlyphItemElement where
+  fromJSVal v = fmap SVGAltGlyphItemElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGAltGlyphItemElement where
+  makeObject = makeObject . unSVGAltGlyphItemElement
+
+instance IsSVGElement SVGAltGlyphItemElement
+instance IsElement SVGAltGlyphItemElement
+instance IsNode SVGAltGlyphItemElement
+instance IsEventTarget SVGAltGlyphItemElement
+instance IsGObject SVGAltGlyphItemElement where
+  toGObject = GObject . unSVGAltGlyphItemElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGAltGlyphItemElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGAltGlyphItemElement :: IsGObject obj => obj -> JSM SVGAltGlyphItemElement
+castToSVGAltGlyphItemElement = castTo gTypeSVGAltGlyphItemElement "SVGAltGlyphItemElement"
+
+gTypeSVGAltGlyphItemElement :: JSM GType
+gTypeSVGAltGlyphItemElement = GType . Object <$> jsg "SVGAltGlyphItemElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGAngle".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAngle Mozilla SVGAngle documentation>
+newtype SVGAngle = SVGAngle { unSVGAngle :: JSVal }
+
+instance PToJSVal SVGAngle where
+  pToJSVal = unSVGAngle
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGAngle where
+  pFromJSVal = SVGAngle
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGAngle where
+  toJSVal = return . unSVGAngle
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGAngle where
+  fromJSVal v = fmap SVGAngle <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGAngle where
+  makeObject = makeObject . unSVGAngle
+
+instance IsGObject SVGAngle where
+  toGObject = GObject . unSVGAngle
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGAngle . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGAngle :: IsGObject obj => obj -> JSM SVGAngle
+castToSVGAngle = castTo gTypeSVGAngle "SVGAngle"
+
+gTypeSVGAngle :: JSM GType
+gTypeSVGAngle = GType . Object <$> jsg "SVGAngle"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGAnimateColorElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGAnimationElement"
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimateColorElement Mozilla SVGAnimateColorElement documentation>
+newtype SVGAnimateColorElement = SVGAnimateColorElement { unSVGAnimateColorElement :: JSVal }
+
+instance PToJSVal SVGAnimateColorElement where
+  pToJSVal = unSVGAnimateColorElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGAnimateColorElement where
+  pFromJSVal = SVGAnimateColorElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGAnimateColorElement where
+  toJSVal = return . unSVGAnimateColorElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGAnimateColorElement where
+  fromJSVal v = fmap SVGAnimateColorElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGAnimateColorElement where
+  makeObject = makeObject . unSVGAnimateColorElement
+
+instance IsSVGAnimationElement SVGAnimateColorElement
+instance IsSVGElement SVGAnimateColorElement
+instance IsElement SVGAnimateColorElement
+instance IsNode SVGAnimateColorElement
+instance IsEventTarget SVGAnimateColorElement
+instance IsGObject SVGAnimateColorElement where
+  toGObject = GObject . unSVGAnimateColorElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGAnimateColorElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGAnimateColorElement :: IsGObject obj => obj -> JSM SVGAnimateColorElement
+castToSVGAnimateColorElement = castTo gTypeSVGAnimateColorElement "SVGAnimateColorElement"
+
+gTypeSVGAnimateColorElement :: JSM GType
+gTypeSVGAnimateColorElement = GType . Object <$> jsg "SVGAnimateColorElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGAnimateElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGAnimationElement"
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimateElement Mozilla SVGAnimateElement documentation>
+newtype SVGAnimateElement = SVGAnimateElement { unSVGAnimateElement :: JSVal }
+
+instance PToJSVal SVGAnimateElement where
+  pToJSVal = unSVGAnimateElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGAnimateElement where
+  pFromJSVal = SVGAnimateElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGAnimateElement where
+  toJSVal = return . unSVGAnimateElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGAnimateElement where
+  fromJSVal v = fmap SVGAnimateElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGAnimateElement where
+  makeObject = makeObject . unSVGAnimateElement
+
+instance IsSVGAnimationElement SVGAnimateElement
+instance IsSVGElement SVGAnimateElement
+instance IsElement SVGAnimateElement
+instance IsNode SVGAnimateElement
+instance IsEventTarget SVGAnimateElement
+instance IsGObject SVGAnimateElement where
+  toGObject = GObject . unSVGAnimateElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGAnimateElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGAnimateElement :: IsGObject obj => obj -> JSM SVGAnimateElement
+castToSVGAnimateElement = castTo gTypeSVGAnimateElement "SVGAnimateElement"
+
+gTypeSVGAnimateElement :: JSM GType
+gTypeSVGAnimateElement = GType . Object <$> jsg "SVGAnimateElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGAnimateMotionElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGAnimationElement"
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimateMotionElement Mozilla SVGAnimateMotionElement documentation>
+newtype SVGAnimateMotionElement = SVGAnimateMotionElement { unSVGAnimateMotionElement :: JSVal }
+
+instance PToJSVal SVGAnimateMotionElement where
+  pToJSVal = unSVGAnimateMotionElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGAnimateMotionElement where
+  pFromJSVal = SVGAnimateMotionElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGAnimateMotionElement where
+  toJSVal = return . unSVGAnimateMotionElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGAnimateMotionElement where
+  fromJSVal v = fmap SVGAnimateMotionElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGAnimateMotionElement where
+  makeObject = makeObject . unSVGAnimateMotionElement
+
+instance IsSVGAnimationElement SVGAnimateMotionElement
+instance IsSVGElement SVGAnimateMotionElement
+instance IsElement SVGAnimateMotionElement
+instance IsNode SVGAnimateMotionElement
+instance IsEventTarget SVGAnimateMotionElement
+instance IsGObject SVGAnimateMotionElement where
+  toGObject = GObject . unSVGAnimateMotionElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGAnimateMotionElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGAnimateMotionElement :: IsGObject obj => obj -> JSM SVGAnimateMotionElement
+castToSVGAnimateMotionElement = castTo gTypeSVGAnimateMotionElement "SVGAnimateMotionElement"
+
+gTypeSVGAnimateMotionElement :: JSM GType
+gTypeSVGAnimateMotionElement = GType . Object <$> jsg "SVGAnimateMotionElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGAnimateTransformElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGAnimationElement"
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimateTransformElement Mozilla SVGAnimateTransformElement documentation>
+newtype SVGAnimateTransformElement = SVGAnimateTransformElement { unSVGAnimateTransformElement :: JSVal }
+
+instance PToJSVal SVGAnimateTransformElement where
+  pToJSVal = unSVGAnimateTransformElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGAnimateTransformElement where
+  pFromJSVal = SVGAnimateTransformElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGAnimateTransformElement where
+  toJSVal = return . unSVGAnimateTransformElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGAnimateTransformElement where
+  fromJSVal v = fmap SVGAnimateTransformElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGAnimateTransformElement where
+  makeObject = makeObject . unSVGAnimateTransformElement
+
+instance IsSVGAnimationElement SVGAnimateTransformElement
+instance IsSVGElement SVGAnimateTransformElement
+instance IsElement SVGAnimateTransformElement
+instance IsNode SVGAnimateTransformElement
+instance IsEventTarget SVGAnimateTransformElement
+instance IsGObject SVGAnimateTransformElement where
+  toGObject = GObject . unSVGAnimateTransformElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGAnimateTransformElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGAnimateTransformElement :: IsGObject obj => obj -> JSM SVGAnimateTransformElement
+castToSVGAnimateTransformElement = castTo gTypeSVGAnimateTransformElement "SVGAnimateTransformElement"
+
+gTypeSVGAnimateTransformElement :: JSM GType
+gTypeSVGAnimateTransformElement = GType . Object <$> jsg "SVGAnimateTransformElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGAnimatedAngle".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedAngle Mozilla SVGAnimatedAngle documentation>
+newtype SVGAnimatedAngle = SVGAnimatedAngle { unSVGAnimatedAngle :: JSVal }
+
+instance PToJSVal SVGAnimatedAngle where
+  pToJSVal = unSVGAnimatedAngle
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGAnimatedAngle where
+  pFromJSVal = SVGAnimatedAngle
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGAnimatedAngle where
+  toJSVal = return . unSVGAnimatedAngle
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGAnimatedAngle where
+  fromJSVal v = fmap SVGAnimatedAngle <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGAnimatedAngle where
+  makeObject = makeObject . unSVGAnimatedAngle
+
+instance IsGObject SVGAnimatedAngle where
+  toGObject = GObject . unSVGAnimatedAngle
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGAnimatedAngle . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGAnimatedAngle :: IsGObject obj => obj -> JSM SVGAnimatedAngle
+castToSVGAnimatedAngle = castTo gTypeSVGAnimatedAngle "SVGAnimatedAngle"
+
+gTypeSVGAnimatedAngle :: JSM GType
+gTypeSVGAnimatedAngle = GType . Object <$> jsg "SVGAnimatedAngle"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGAnimatedBoolean".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedBoolean Mozilla SVGAnimatedBoolean documentation>
+newtype SVGAnimatedBoolean = SVGAnimatedBoolean { unSVGAnimatedBoolean :: JSVal }
+
+instance PToJSVal SVGAnimatedBoolean where
+  pToJSVal = unSVGAnimatedBoolean
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGAnimatedBoolean where
+  pFromJSVal = SVGAnimatedBoolean
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGAnimatedBoolean where
+  toJSVal = return . unSVGAnimatedBoolean
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGAnimatedBoolean where
+  fromJSVal v = fmap SVGAnimatedBoolean <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGAnimatedBoolean where
+  makeObject = makeObject . unSVGAnimatedBoolean
+
+instance IsGObject SVGAnimatedBoolean where
+  toGObject = GObject . unSVGAnimatedBoolean
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGAnimatedBoolean . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGAnimatedBoolean :: IsGObject obj => obj -> JSM SVGAnimatedBoolean
+castToSVGAnimatedBoolean = castTo gTypeSVGAnimatedBoolean "SVGAnimatedBoolean"
+
+gTypeSVGAnimatedBoolean :: JSM GType
+gTypeSVGAnimatedBoolean = GType . Object <$> jsg "SVGAnimatedBoolean"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGAnimatedEnumeration".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedEnumeration Mozilla SVGAnimatedEnumeration documentation>
+newtype SVGAnimatedEnumeration = SVGAnimatedEnumeration { unSVGAnimatedEnumeration :: JSVal }
+
+instance PToJSVal SVGAnimatedEnumeration where
+  pToJSVal = unSVGAnimatedEnumeration
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGAnimatedEnumeration where
+  pFromJSVal = SVGAnimatedEnumeration
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGAnimatedEnumeration where
+  toJSVal = return . unSVGAnimatedEnumeration
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGAnimatedEnumeration where
+  fromJSVal v = fmap SVGAnimatedEnumeration <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGAnimatedEnumeration where
+  makeObject = makeObject . unSVGAnimatedEnumeration
+
+instance IsGObject SVGAnimatedEnumeration where
+  toGObject = GObject . unSVGAnimatedEnumeration
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGAnimatedEnumeration . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGAnimatedEnumeration :: IsGObject obj => obj -> JSM SVGAnimatedEnumeration
+castToSVGAnimatedEnumeration = castTo gTypeSVGAnimatedEnumeration "SVGAnimatedEnumeration"
+
+gTypeSVGAnimatedEnumeration :: JSM GType
+gTypeSVGAnimatedEnumeration = GType . Object <$> jsg "SVGAnimatedEnumeration"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGAnimatedInteger".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedInteger Mozilla SVGAnimatedInteger documentation>
+newtype SVGAnimatedInteger = SVGAnimatedInteger { unSVGAnimatedInteger :: JSVal }
+
+instance PToJSVal SVGAnimatedInteger where
+  pToJSVal = unSVGAnimatedInteger
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGAnimatedInteger where
+  pFromJSVal = SVGAnimatedInteger
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGAnimatedInteger where
+  toJSVal = return . unSVGAnimatedInteger
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGAnimatedInteger where
+  fromJSVal v = fmap SVGAnimatedInteger <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGAnimatedInteger where
+  makeObject = makeObject . unSVGAnimatedInteger
+
+instance IsGObject SVGAnimatedInteger where
+  toGObject = GObject . unSVGAnimatedInteger
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGAnimatedInteger . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGAnimatedInteger :: IsGObject obj => obj -> JSM SVGAnimatedInteger
+castToSVGAnimatedInteger = castTo gTypeSVGAnimatedInteger "SVGAnimatedInteger"
+
+gTypeSVGAnimatedInteger :: JSM GType
+gTypeSVGAnimatedInteger = GType . Object <$> jsg "SVGAnimatedInteger"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGAnimatedLength".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedLength Mozilla SVGAnimatedLength documentation>
+newtype SVGAnimatedLength = SVGAnimatedLength { unSVGAnimatedLength :: JSVal }
+
+instance PToJSVal SVGAnimatedLength where
+  pToJSVal = unSVGAnimatedLength
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGAnimatedLength where
+  pFromJSVal = SVGAnimatedLength
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGAnimatedLength where
+  toJSVal = return . unSVGAnimatedLength
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGAnimatedLength where
+  fromJSVal v = fmap SVGAnimatedLength <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGAnimatedLength where
+  makeObject = makeObject . unSVGAnimatedLength
+
+instance IsGObject SVGAnimatedLength where
+  toGObject = GObject . unSVGAnimatedLength
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGAnimatedLength . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGAnimatedLength :: IsGObject obj => obj -> JSM SVGAnimatedLength
+castToSVGAnimatedLength = castTo gTypeSVGAnimatedLength "SVGAnimatedLength"
+
+gTypeSVGAnimatedLength :: JSM GType
+gTypeSVGAnimatedLength = GType . Object <$> jsg "SVGAnimatedLength"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGAnimatedLengthList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedLengthList Mozilla SVGAnimatedLengthList documentation>
+newtype SVGAnimatedLengthList = SVGAnimatedLengthList { unSVGAnimatedLengthList :: JSVal }
+
+instance PToJSVal SVGAnimatedLengthList where
+  pToJSVal = unSVGAnimatedLengthList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGAnimatedLengthList where
+  pFromJSVal = SVGAnimatedLengthList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGAnimatedLengthList where
+  toJSVal = return . unSVGAnimatedLengthList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGAnimatedLengthList where
+  fromJSVal v = fmap SVGAnimatedLengthList <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGAnimatedLengthList where
+  makeObject = makeObject . unSVGAnimatedLengthList
+
+instance IsGObject SVGAnimatedLengthList where
+  toGObject = GObject . unSVGAnimatedLengthList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGAnimatedLengthList . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGAnimatedLengthList :: IsGObject obj => obj -> JSM SVGAnimatedLengthList
+castToSVGAnimatedLengthList = castTo gTypeSVGAnimatedLengthList "SVGAnimatedLengthList"
+
+gTypeSVGAnimatedLengthList :: JSM GType
+gTypeSVGAnimatedLengthList = GType . Object <$> jsg "SVGAnimatedLengthList"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGAnimatedNumber".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedNumber Mozilla SVGAnimatedNumber documentation>
+newtype SVGAnimatedNumber = SVGAnimatedNumber { unSVGAnimatedNumber :: JSVal }
+
+instance PToJSVal SVGAnimatedNumber where
+  pToJSVal = unSVGAnimatedNumber
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGAnimatedNumber where
+  pFromJSVal = SVGAnimatedNumber
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGAnimatedNumber where
+  toJSVal = return . unSVGAnimatedNumber
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGAnimatedNumber where
+  fromJSVal v = fmap SVGAnimatedNumber <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGAnimatedNumber where
+  makeObject = makeObject . unSVGAnimatedNumber
+
+instance IsGObject SVGAnimatedNumber where
+  toGObject = GObject . unSVGAnimatedNumber
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGAnimatedNumber . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGAnimatedNumber :: IsGObject obj => obj -> JSM SVGAnimatedNumber
+castToSVGAnimatedNumber = castTo gTypeSVGAnimatedNumber "SVGAnimatedNumber"
+
+gTypeSVGAnimatedNumber :: JSM GType
+gTypeSVGAnimatedNumber = GType . Object <$> jsg "SVGAnimatedNumber"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGAnimatedNumberList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedNumberList Mozilla SVGAnimatedNumberList documentation>
+newtype SVGAnimatedNumberList = SVGAnimatedNumberList { unSVGAnimatedNumberList :: JSVal }
+
+instance PToJSVal SVGAnimatedNumberList where
+  pToJSVal = unSVGAnimatedNumberList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGAnimatedNumberList where
+  pFromJSVal = SVGAnimatedNumberList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGAnimatedNumberList where
+  toJSVal = return . unSVGAnimatedNumberList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGAnimatedNumberList where
+  fromJSVal v = fmap SVGAnimatedNumberList <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGAnimatedNumberList where
+  makeObject = makeObject . unSVGAnimatedNumberList
+
+instance IsGObject SVGAnimatedNumberList where
+  toGObject = GObject . unSVGAnimatedNumberList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGAnimatedNumberList . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGAnimatedNumberList :: IsGObject obj => obj -> JSM SVGAnimatedNumberList
+castToSVGAnimatedNumberList = castTo gTypeSVGAnimatedNumberList "SVGAnimatedNumberList"
+
+gTypeSVGAnimatedNumberList :: JSM GType
+gTypeSVGAnimatedNumberList = GType . Object <$> jsg "SVGAnimatedNumberList"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGAnimatedPreserveAspectRatio".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedPreserveAspectRatio Mozilla SVGAnimatedPreserveAspectRatio documentation>
+newtype SVGAnimatedPreserveAspectRatio = SVGAnimatedPreserveAspectRatio { unSVGAnimatedPreserveAspectRatio :: JSVal }
+
+instance PToJSVal SVGAnimatedPreserveAspectRatio where
+  pToJSVal = unSVGAnimatedPreserveAspectRatio
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGAnimatedPreserveAspectRatio where
+  pFromJSVal = SVGAnimatedPreserveAspectRatio
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGAnimatedPreserveAspectRatio where
+  toJSVal = return . unSVGAnimatedPreserveAspectRatio
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGAnimatedPreserveAspectRatio where
+  fromJSVal v = fmap SVGAnimatedPreserveAspectRatio <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGAnimatedPreserveAspectRatio where
+  makeObject = makeObject . unSVGAnimatedPreserveAspectRatio
+
+instance IsGObject SVGAnimatedPreserveAspectRatio where
+  toGObject = GObject . unSVGAnimatedPreserveAspectRatio
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGAnimatedPreserveAspectRatio . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGAnimatedPreserveAspectRatio :: IsGObject obj => obj -> JSM SVGAnimatedPreserveAspectRatio
+castToSVGAnimatedPreserveAspectRatio = castTo gTypeSVGAnimatedPreserveAspectRatio "SVGAnimatedPreserveAspectRatio"
+
+gTypeSVGAnimatedPreserveAspectRatio :: JSM GType
+gTypeSVGAnimatedPreserveAspectRatio = GType . Object <$> jsg "SVGAnimatedPreserveAspectRatio"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGAnimatedRect".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedRect Mozilla SVGAnimatedRect documentation>
+newtype SVGAnimatedRect = SVGAnimatedRect { unSVGAnimatedRect :: JSVal }
+
+instance PToJSVal SVGAnimatedRect where
+  pToJSVal = unSVGAnimatedRect
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGAnimatedRect where
+  pFromJSVal = SVGAnimatedRect
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGAnimatedRect where
+  toJSVal = return . unSVGAnimatedRect
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGAnimatedRect where
+  fromJSVal v = fmap SVGAnimatedRect <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGAnimatedRect where
+  makeObject = makeObject . unSVGAnimatedRect
+
+instance IsGObject SVGAnimatedRect where
+  toGObject = GObject . unSVGAnimatedRect
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGAnimatedRect . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGAnimatedRect :: IsGObject obj => obj -> JSM SVGAnimatedRect
+castToSVGAnimatedRect = castTo gTypeSVGAnimatedRect "SVGAnimatedRect"
+
+gTypeSVGAnimatedRect :: JSM GType
+gTypeSVGAnimatedRect = GType . Object <$> jsg "SVGAnimatedRect"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGAnimatedString".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedString Mozilla SVGAnimatedString documentation>
+newtype SVGAnimatedString = SVGAnimatedString { unSVGAnimatedString :: JSVal }
+
+instance PToJSVal SVGAnimatedString where
+  pToJSVal = unSVGAnimatedString
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGAnimatedString where
+  pFromJSVal = SVGAnimatedString
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGAnimatedString where
+  toJSVal = return . unSVGAnimatedString
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGAnimatedString where
+  fromJSVal v = fmap SVGAnimatedString <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGAnimatedString where
+  makeObject = makeObject . unSVGAnimatedString
+
+instance IsGObject SVGAnimatedString where
+  toGObject = GObject . unSVGAnimatedString
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGAnimatedString . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGAnimatedString :: IsGObject obj => obj -> JSM SVGAnimatedString
+castToSVGAnimatedString = castTo gTypeSVGAnimatedString "SVGAnimatedString"
+
+gTypeSVGAnimatedString :: JSM GType
+gTypeSVGAnimatedString = GType . Object <$> jsg "SVGAnimatedString"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGAnimatedTransformList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedTransformList Mozilla SVGAnimatedTransformList documentation>
+newtype SVGAnimatedTransformList = SVGAnimatedTransformList { unSVGAnimatedTransformList :: JSVal }
+
+instance PToJSVal SVGAnimatedTransformList where
+  pToJSVal = unSVGAnimatedTransformList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGAnimatedTransformList where
+  pFromJSVal = SVGAnimatedTransformList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGAnimatedTransformList where
+  toJSVal = return . unSVGAnimatedTransformList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGAnimatedTransformList where
+  fromJSVal v = fmap SVGAnimatedTransformList <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGAnimatedTransformList where
+  makeObject = makeObject . unSVGAnimatedTransformList
+
+instance IsGObject SVGAnimatedTransformList where
+  toGObject = GObject . unSVGAnimatedTransformList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGAnimatedTransformList . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGAnimatedTransformList :: IsGObject obj => obj -> JSM SVGAnimatedTransformList
+castToSVGAnimatedTransformList = castTo gTypeSVGAnimatedTransformList "SVGAnimatedTransformList"
+
+gTypeSVGAnimatedTransformList :: JSM GType
+gTypeSVGAnimatedTransformList = GType . Object <$> jsg "SVGAnimatedTransformList"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGAnimationElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimationElement Mozilla SVGAnimationElement documentation>
+newtype SVGAnimationElement = SVGAnimationElement { unSVGAnimationElement :: JSVal }
+
+instance PToJSVal SVGAnimationElement where
+  pToJSVal = unSVGAnimationElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGAnimationElement where
+  pFromJSVal = SVGAnimationElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGAnimationElement where
+  toJSVal = return . unSVGAnimationElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGAnimationElement where
+  fromJSVal v = fmap SVGAnimationElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGAnimationElement where
+  makeObject = makeObject . unSVGAnimationElement
+
+class IsSVGElement o => IsSVGAnimationElement o
+toSVGAnimationElement :: IsSVGAnimationElement o => o -> SVGAnimationElement
+toSVGAnimationElement = unsafeCastGObject . toGObject
+
+instance IsSVGAnimationElement SVGAnimationElement
+instance IsSVGElement SVGAnimationElement
+instance IsElement SVGAnimationElement
+instance IsNode SVGAnimationElement
+instance IsEventTarget SVGAnimationElement
+instance IsGObject SVGAnimationElement where
+  toGObject = GObject . unSVGAnimationElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGAnimationElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGAnimationElement :: IsGObject obj => obj -> JSM SVGAnimationElement
+castToSVGAnimationElement = castTo gTypeSVGAnimationElement "SVGAnimationElement"
+
+gTypeSVGAnimationElement :: JSM GType
+gTypeSVGAnimationElement = GType . Object <$> jsg "SVGAnimationElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGCircleElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGGraphicsElement"
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGCircleElement Mozilla SVGCircleElement documentation>
+newtype SVGCircleElement = SVGCircleElement { unSVGCircleElement :: JSVal }
+
+instance PToJSVal SVGCircleElement where
+  pToJSVal = unSVGCircleElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGCircleElement where
+  pFromJSVal = SVGCircleElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGCircleElement where
+  toJSVal = return . unSVGCircleElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGCircleElement where
+  fromJSVal v = fmap SVGCircleElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGCircleElement where
+  makeObject = makeObject . unSVGCircleElement
+
+instance IsSVGGraphicsElement SVGCircleElement
+instance IsSVGElement SVGCircleElement
+instance IsElement SVGCircleElement
+instance IsNode SVGCircleElement
+instance IsEventTarget SVGCircleElement
+instance IsGObject SVGCircleElement where
+  toGObject = GObject . unSVGCircleElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGCircleElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGCircleElement :: IsGObject obj => obj -> JSM SVGCircleElement
+castToSVGCircleElement = castTo gTypeSVGCircleElement "SVGCircleElement"
+
+gTypeSVGCircleElement :: JSM GType
+gTypeSVGCircleElement = GType . Object <$> jsg "SVGCircleElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGClipPathElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGGraphicsElement"
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGClipPathElement Mozilla SVGClipPathElement documentation>
+newtype SVGClipPathElement = SVGClipPathElement { unSVGClipPathElement :: JSVal }
+
+instance PToJSVal SVGClipPathElement where
+  pToJSVal = unSVGClipPathElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGClipPathElement where
+  pFromJSVal = SVGClipPathElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGClipPathElement where
+  toJSVal = return . unSVGClipPathElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGClipPathElement where
+  fromJSVal v = fmap SVGClipPathElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGClipPathElement where
+  makeObject = makeObject . unSVGClipPathElement
+
+instance IsSVGGraphicsElement SVGClipPathElement
+instance IsSVGElement SVGClipPathElement
+instance IsElement SVGClipPathElement
+instance IsNode SVGClipPathElement
+instance IsEventTarget SVGClipPathElement
+instance IsGObject SVGClipPathElement where
+  toGObject = GObject . unSVGClipPathElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGClipPathElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGClipPathElement :: IsGObject obj => obj -> JSM SVGClipPathElement
+castToSVGClipPathElement = castTo gTypeSVGClipPathElement "SVGClipPathElement"
+
+gTypeSVGClipPathElement :: JSM GType
+gTypeSVGClipPathElement = GType . Object <$> jsg "SVGClipPathElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGColor".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.CSSValue"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGColor Mozilla SVGColor documentation>
+newtype SVGColor = SVGColor { unSVGColor :: JSVal }
+
+instance PToJSVal SVGColor where
+  pToJSVal = unSVGColor
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGColor where
+  pFromJSVal = SVGColor
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGColor where
+  toJSVal = return . unSVGColor
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGColor where
+  fromJSVal v = fmap SVGColor <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGColor where
+  makeObject = makeObject . unSVGColor
+
+class IsCSSValue o => IsSVGColor o
+toSVGColor :: IsSVGColor o => o -> SVGColor
+toSVGColor = unsafeCastGObject . toGObject
+
+instance IsSVGColor SVGColor
+instance IsCSSValue SVGColor
+instance IsGObject SVGColor where
+  toGObject = GObject . unSVGColor
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGColor . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGColor :: IsGObject obj => obj -> JSM SVGColor
+castToSVGColor = castTo gTypeSVGColor "SVGColor"
+
+gTypeSVGColor :: JSM GType
+gTypeSVGColor = GType . Object <$> jsg "SVGColor"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGComponentTransferFunctionElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGComponentTransferFunctionElement Mozilla SVGComponentTransferFunctionElement documentation>
+newtype SVGComponentTransferFunctionElement = SVGComponentTransferFunctionElement { unSVGComponentTransferFunctionElement :: JSVal }
+
+instance PToJSVal SVGComponentTransferFunctionElement where
+  pToJSVal = unSVGComponentTransferFunctionElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGComponentTransferFunctionElement where
+  pFromJSVal = SVGComponentTransferFunctionElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGComponentTransferFunctionElement where
+  toJSVal = return . unSVGComponentTransferFunctionElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGComponentTransferFunctionElement where
+  fromJSVal v = fmap SVGComponentTransferFunctionElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGComponentTransferFunctionElement where
+  makeObject = makeObject . unSVGComponentTransferFunctionElement
+
+class IsSVGElement o => IsSVGComponentTransferFunctionElement o
+toSVGComponentTransferFunctionElement :: IsSVGComponentTransferFunctionElement o => o -> SVGComponentTransferFunctionElement
+toSVGComponentTransferFunctionElement = unsafeCastGObject . toGObject
+
+instance IsSVGComponentTransferFunctionElement SVGComponentTransferFunctionElement
+instance IsSVGElement SVGComponentTransferFunctionElement
+instance IsElement SVGComponentTransferFunctionElement
+instance IsNode SVGComponentTransferFunctionElement
+instance IsEventTarget SVGComponentTransferFunctionElement
+instance IsGObject SVGComponentTransferFunctionElement where
+  toGObject = GObject . unSVGComponentTransferFunctionElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGComponentTransferFunctionElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGComponentTransferFunctionElement :: IsGObject obj => obj -> JSM SVGComponentTransferFunctionElement
+castToSVGComponentTransferFunctionElement = castTo gTypeSVGComponentTransferFunctionElement "SVGComponentTransferFunctionElement"
+
+gTypeSVGComponentTransferFunctionElement :: JSM GType
+gTypeSVGComponentTransferFunctionElement = GType . Object <$> jsg "SVGComponentTransferFunctionElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGCursorElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGCursorElement Mozilla SVGCursorElement documentation>
+newtype SVGCursorElement = SVGCursorElement { unSVGCursorElement :: JSVal }
+
+instance PToJSVal SVGCursorElement where
+  pToJSVal = unSVGCursorElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGCursorElement where
+  pFromJSVal = SVGCursorElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGCursorElement where
+  toJSVal = return . unSVGCursorElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGCursorElement where
+  fromJSVal v = fmap SVGCursorElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGCursorElement where
+  makeObject = makeObject . unSVGCursorElement
+
+instance IsSVGElement SVGCursorElement
+instance IsElement SVGCursorElement
+instance IsNode SVGCursorElement
+instance IsEventTarget SVGCursorElement
+instance IsGObject SVGCursorElement where
+  toGObject = GObject . unSVGCursorElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGCursorElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGCursorElement :: IsGObject obj => obj -> JSM SVGCursorElement
+castToSVGCursorElement = castTo gTypeSVGCursorElement "SVGCursorElement"
+
+gTypeSVGCursorElement :: JSM GType
+gTypeSVGCursorElement = GType . Object <$> jsg "SVGCursorElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGDefsElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGGraphicsElement"
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGDefsElement Mozilla SVGDefsElement documentation>
+newtype SVGDefsElement = SVGDefsElement { unSVGDefsElement :: JSVal }
+
+instance PToJSVal SVGDefsElement where
+  pToJSVal = unSVGDefsElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGDefsElement where
+  pFromJSVal = SVGDefsElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGDefsElement where
+  toJSVal = return . unSVGDefsElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGDefsElement where
+  fromJSVal v = fmap SVGDefsElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGDefsElement where
+  makeObject = makeObject . unSVGDefsElement
+
+instance IsSVGGraphicsElement SVGDefsElement
+instance IsSVGElement SVGDefsElement
+instance IsElement SVGDefsElement
+instance IsNode SVGDefsElement
+instance IsEventTarget SVGDefsElement
+instance IsGObject SVGDefsElement where
+  toGObject = GObject . unSVGDefsElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGDefsElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGDefsElement :: IsGObject obj => obj -> JSM SVGDefsElement
+castToSVGDefsElement = castTo gTypeSVGDefsElement "SVGDefsElement"
+
+gTypeSVGDefsElement :: JSM GType
+gTypeSVGDefsElement = GType . Object <$> jsg "SVGDefsElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGDescElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGDescElement Mozilla SVGDescElement documentation>
+newtype SVGDescElement = SVGDescElement { unSVGDescElement :: JSVal }
+
+instance PToJSVal SVGDescElement where
+  pToJSVal = unSVGDescElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGDescElement where
+  pFromJSVal = SVGDescElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGDescElement where
+  toJSVal = return . unSVGDescElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGDescElement where
+  fromJSVal v = fmap SVGDescElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGDescElement where
+  makeObject = makeObject . unSVGDescElement
+
+instance IsSVGElement SVGDescElement
+instance IsElement SVGDescElement
+instance IsNode SVGDescElement
+instance IsEventTarget SVGDescElement
+instance IsGObject SVGDescElement where
+  toGObject = GObject . unSVGDescElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGDescElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGDescElement :: IsGObject obj => obj -> JSM SVGDescElement
+castToSVGDescElement = castTo gTypeSVGDescElement "SVGDescElement"
+
+gTypeSVGDescElement :: JSM GType
+gTypeSVGDescElement = GType . Object <$> jsg "SVGDescElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGDocument".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.Document"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGDocument Mozilla SVGDocument documentation>
+newtype SVGDocument = SVGDocument { unSVGDocument :: JSVal }
+
+instance PToJSVal SVGDocument where
+  pToJSVal = unSVGDocument
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGDocument where
+  pFromJSVal = SVGDocument
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGDocument where
+  toJSVal = return . unSVGDocument
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGDocument where
+  fromJSVal v = fmap SVGDocument <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGDocument where
+  makeObject = makeObject . unSVGDocument
+
+instance IsDocument SVGDocument
+instance IsNode SVGDocument
+instance IsEventTarget SVGDocument
+instance IsGObject SVGDocument where
+  toGObject = GObject . unSVGDocument
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGDocument . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGDocument :: IsGObject obj => obj -> JSM SVGDocument
+castToSVGDocument = castTo gTypeSVGDocument "SVGDocument"
+
+gTypeSVGDocument :: JSM GType
+gTypeSVGDocument = GType . Object <$> jsg "SVGDocument"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement Mozilla SVGElement documentation>
+newtype SVGElement = SVGElement { unSVGElement :: JSVal }
+
+instance PToJSVal SVGElement where
+  pToJSVal = unSVGElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGElement where
+  pFromJSVal = SVGElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGElement where
+  toJSVal = return . unSVGElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGElement where
+  fromJSVal v = fmap SVGElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGElement where
+  makeObject = makeObject . unSVGElement
+
+class IsElement o => IsSVGElement o
+toSVGElement :: IsSVGElement o => o -> SVGElement
+toSVGElement = unsafeCastGObject . toGObject
+
+instance IsSVGElement SVGElement
+instance IsElement SVGElement
+instance IsNode SVGElement
+instance IsEventTarget SVGElement
+instance IsGObject SVGElement where
+  toGObject = GObject . unSVGElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGElement :: IsGObject obj => obj -> JSM SVGElement
+castToSVGElement = castTo gTypeSVGElement "SVGElement"
+
+gTypeSVGElement :: JSM GType
+gTypeSVGElement = GType . Object <$> jsg "SVGElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGEllipseElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGGraphicsElement"
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGEllipseElement Mozilla SVGEllipseElement documentation>
+newtype SVGEllipseElement = SVGEllipseElement { unSVGEllipseElement :: JSVal }
+
+instance PToJSVal SVGEllipseElement where
+  pToJSVal = unSVGEllipseElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGEllipseElement where
+  pFromJSVal = SVGEllipseElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGEllipseElement where
+  toJSVal = return . unSVGEllipseElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGEllipseElement where
+  fromJSVal v = fmap SVGEllipseElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGEllipseElement where
+  makeObject = makeObject . unSVGEllipseElement
+
+instance IsSVGGraphicsElement SVGEllipseElement
+instance IsSVGElement SVGEllipseElement
+instance IsElement SVGEllipseElement
+instance IsNode SVGEllipseElement
+instance IsEventTarget SVGEllipseElement
+instance IsGObject SVGEllipseElement where
+  toGObject = GObject . unSVGEllipseElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGEllipseElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGEllipseElement :: IsGObject obj => obj -> JSM SVGEllipseElement
+castToSVGEllipseElement = castTo gTypeSVGEllipseElement "SVGEllipseElement"
+
+gTypeSVGEllipseElement :: JSM GType
+gTypeSVGEllipseElement = GType . Object <$> jsg "SVGEllipseElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGExternalResourcesRequired".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGExternalResourcesRequired Mozilla SVGExternalResourcesRequired documentation>
+newtype SVGExternalResourcesRequired = SVGExternalResourcesRequired { unSVGExternalResourcesRequired :: JSVal }
+
+instance PToJSVal SVGExternalResourcesRequired where
+  pToJSVal = unSVGExternalResourcesRequired
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGExternalResourcesRequired where
+  pFromJSVal = SVGExternalResourcesRequired
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGExternalResourcesRequired where
+  toJSVal = return . unSVGExternalResourcesRequired
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGExternalResourcesRequired where
+  fromJSVal v = fmap SVGExternalResourcesRequired <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGExternalResourcesRequired where
+  makeObject = makeObject . unSVGExternalResourcesRequired
+
+instance IsGObject SVGExternalResourcesRequired where
+  toGObject = GObject . unSVGExternalResourcesRequired
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGExternalResourcesRequired . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGExternalResourcesRequired :: IsGObject obj => obj -> JSM SVGExternalResourcesRequired
+castToSVGExternalResourcesRequired = castTo gTypeSVGExternalResourcesRequired "SVGExternalResourcesRequired"
+
+gTypeSVGExternalResourcesRequired :: JSM GType
+gTypeSVGExternalResourcesRequired = GType . Object <$> jsg "SVGExternalResourcesRequired"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGFEBlendElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEBlendElement Mozilla SVGFEBlendElement documentation>
+newtype SVGFEBlendElement = SVGFEBlendElement { unSVGFEBlendElement :: JSVal }
+
+instance PToJSVal SVGFEBlendElement where
+  pToJSVal = unSVGFEBlendElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFEBlendElement where
+  pFromJSVal = SVGFEBlendElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFEBlendElement where
+  toJSVal = return . unSVGFEBlendElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFEBlendElement where
+  fromJSVal v = fmap SVGFEBlendElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGFEBlendElement where
+  makeObject = makeObject . unSVGFEBlendElement
+
+instance IsSVGElement SVGFEBlendElement
+instance IsElement SVGFEBlendElement
+instance IsNode SVGFEBlendElement
+instance IsEventTarget SVGFEBlendElement
+instance IsGObject SVGFEBlendElement where
+  toGObject = GObject . unSVGFEBlendElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFEBlendElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFEBlendElement :: IsGObject obj => obj -> JSM SVGFEBlendElement
+castToSVGFEBlendElement = castTo gTypeSVGFEBlendElement "SVGFEBlendElement"
+
+gTypeSVGFEBlendElement :: JSM GType
+gTypeSVGFEBlendElement = GType . Object <$> jsg "SVGFEBlendElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGFEColorMatrixElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEColorMatrixElement Mozilla SVGFEColorMatrixElement documentation>
+newtype SVGFEColorMatrixElement = SVGFEColorMatrixElement { unSVGFEColorMatrixElement :: JSVal }
+
+instance PToJSVal SVGFEColorMatrixElement where
+  pToJSVal = unSVGFEColorMatrixElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFEColorMatrixElement where
+  pFromJSVal = SVGFEColorMatrixElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFEColorMatrixElement where
+  toJSVal = return . unSVGFEColorMatrixElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFEColorMatrixElement where
+  fromJSVal v = fmap SVGFEColorMatrixElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGFEColorMatrixElement where
+  makeObject = makeObject . unSVGFEColorMatrixElement
+
+instance IsSVGElement SVGFEColorMatrixElement
+instance IsElement SVGFEColorMatrixElement
+instance IsNode SVGFEColorMatrixElement
+instance IsEventTarget SVGFEColorMatrixElement
+instance IsGObject SVGFEColorMatrixElement where
+  toGObject = GObject . unSVGFEColorMatrixElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFEColorMatrixElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFEColorMatrixElement :: IsGObject obj => obj -> JSM SVGFEColorMatrixElement
+castToSVGFEColorMatrixElement = castTo gTypeSVGFEColorMatrixElement "SVGFEColorMatrixElement"
+
+gTypeSVGFEColorMatrixElement :: JSM GType
+gTypeSVGFEColorMatrixElement = GType . Object <$> jsg "SVGFEColorMatrixElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGFEComponentTransferElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEComponentTransferElement Mozilla SVGFEComponentTransferElement documentation>
+newtype SVGFEComponentTransferElement = SVGFEComponentTransferElement { unSVGFEComponentTransferElement :: JSVal }
+
+instance PToJSVal SVGFEComponentTransferElement where
+  pToJSVal = unSVGFEComponentTransferElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFEComponentTransferElement where
+  pFromJSVal = SVGFEComponentTransferElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFEComponentTransferElement where
+  toJSVal = return . unSVGFEComponentTransferElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFEComponentTransferElement where
+  fromJSVal v = fmap SVGFEComponentTransferElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGFEComponentTransferElement where
+  makeObject = makeObject . unSVGFEComponentTransferElement
+
+instance IsSVGElement SVGFEComponentTransferElement
+instance IsElement SVGFEComponentTransferElement
+instance IsNode SVGFEComponentTransferElement
+instance IsEventTarget SVGFEComponentTransferElement
+instance IsGObject SVGFEComponentTransferElement where
+  toGObject = GObject . unSVGFEComponentTransferElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFEComponentTransferElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFEComponentTransferElement :: IsGObject obj => obj -> JSM SVGFEComponentTransferElement
+castToSVGFEComponentTransferElement = castTo gTypeSVGFEComponentTransferElement "SVGFEComponentTransferElement"
+
+gTypeSVGFEComponentTransferElement :: JSM GType
+gTypeSVGFEComponentTransferElement = GType . Object <$> jsg "SVGFEComponentTransferElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGFECompositeElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFECompositeElement Mozilla SVGFECompositeElement documentation>
+newtype SVGFECompositeElement = SVGFECompositeElement { unSVGFECompositeElement :: JSVal }
+
+instance PToJSVal SVGFECompositeElement where
+  pToJSVal = unSVGFECompositeElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFECompositeElement where
+  pFromJSVal = SVGFECompositeElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFECompositeElement where
+  toJSVal = return . unSVGFECompositeElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFECompositeElement where
+  fromJSVal v = fmap SVGFECompositeElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGFECompositeElement where
+  makeObject = makeObject . unSVGFECompositeElement
+
+instance IsSVGElement SVGFECompositeElement
+instance IsElement SVGFECompositeElement
+instance IsNode SVGFECompositeElement
+instance IsEventTarget SVGFECompositeElement
+instance IsGObject SVGFECompositeElement where
+  toGObject = GObject . unSVGFECompositeElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFECompositeElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFECompositeElement :: IsGObject obj => obj -> JSM SVGFECompositeElement
+castToSVGFECompositeElement = castTo gTypeSVGFECompositeElement "SVGFECompositeElement"
+
+gTypeSVGFECompositeElement :: JSM GType
+gTypeSVGFECompositeElement = GType . Object <$> jsg "SVGFECompositeElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGFEConvolveMatrixElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement Mozilla SVGFEConvolveMatrixElement documentation>
+newtype SVGFEConvolveMatrixElement = SVGFEConvolveMatrixElement { unSVGFEConvolveMatrixElement :: JSVal }
+
+instance PToJSVal SVGFEConvolveMatrixElement where
+  pToJSVal = unSVGFEConvolveMatrixElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFEConvolveMatrixElement where
+  pFromJSVal = SVGFEConvolveMatrixElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFEConvolveMatrixElement where
+  toJSVal = return . unSVGFEConvolveMatrixElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFEConvolveMatrixElement where
+  fromJSVal v = fmap SVGFEConvolveMatrixElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGFEConvolveMatrixElement where
+  makeObject = makeObject . unSVGFEConvolveMatrixElement
+
+instance IsSVGElement SVGFEConvolveMatrixElement
+instance IsElement SVGFEConvolveMatrixElement
+instance IsNode SVGFEConvolveMatrixElement
+instance IsEventTarget SVGFEConvolveMatrixElement
+instance IsGObject SVGFEConvolveMatrixElement where
+  toGObject = GObject . unSVGFEConvolveMatrixElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFEConvolveMatrixElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFEConvolveMatrixElement :: IsGObject obj => obj -> JSM SVGFEConvolveMatrixElement
+castToSVGFEConvolveMatrixElement = castTo gTypeSVGFEConvolveMatrixElement "SVGFEConvolveMatrixElement"
+
+gTypeSVGFEConvolveMatrixElement :: JSM GType
+gTypeSVGFEConvolveMatrixElement = GType . Object <$> jsg "SVGFEConvolveMatrixElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGFEDiffuseLightingElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDiffuseLightingElement Mozilla SVGFEDiffuseLightingElement documentation>
+newtype SVGFEDiffuseLightingElement = SVGFEDiffuseLightingElement { unSVGFEDiffuseLightingElement :: JSVal }
+
+instance PToJSVal SVGFEDiffuseLightingElement where
+  pToJSVal = unSVGFEDiffuseLightingElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFEDiffuseLightingElement where
+  pFromJSVal = SVGFEDiffuseLightingElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFEDiffuseLightingElement where
+  toJSVal = return . unSVGFEDiffuseLightingElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFEDiffuseLightingElement where
+  fromJSVal v = fmap SVGFEDiffuseLightingElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGFEDiffuseLightingElement where
+  makeObject = makeObject . unSVGFEDiffuseLightingElement
+
+instance IsSVGElement SVGFEDiffuseLightingElement
+instance IsElement SVGFEDiffuseLightingElement
+instance IsNode SVGFEDiffuseLightingElement
+instance IsEventTarget SVGFEDiffuseLightingElement
+instance IsGObject SVGFEDiffuseLightingElement where
+  toGObject = GObject . unSVGFEDiffuseLightingElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFEDiffuseLightingElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFEDiffuseLightingElement :: IsGObject obj => obj -> JSM SVGFEDiffuseLightingElement
+castToSVGFEDiffuseLightingElement = castTo gTypeSVGFEDiffuseLightingElement "SVGFEDiffuseLightingElement"
+
+gTypeSVGFEDiffuseLightingElement :: JSM GType
+gTypeSVGFEDiffuseLightingElement = GType . Object <$> jsg "SVGFEDiffuseLightingElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGFEDisplacementMapElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDisplacementMapElement Mozilla SVGFEDisplacementMapElement documentation>
+newtype SVGFEDisplacementMapElement = SVGFEDisplacementMapElement { unSVGFEDisplacementMapElement :: JSVal }
+
+instance PToJSVal SVGFEDisplacementMapElement where
+  pToJSVal = unSVGFEDisplacementMapElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFEDisplacementMapElement where
+  pFromJSVal = SVGFEDisplacementMapElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFEDisplacementMapElement where
+  toJSVal = return . unSVGFEDisplacementMapElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFEDisplacementMapElement where
+  fromJSVal v = fmap SVGFEDisplacementMapElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGFEDisplacementMapElement where
+  makeObject = makeObject . unSVGFEDisplacementMapElement
+
+instance IsSVGElement SVGFEDisplacementMapElement
+instance IsElement SVGFEDisplacementMapElement
+instance IsNode SVGFEDisplacementMapElement
+instance IsEventTarget SVGFEDisplacementMapElement
+instance IsGObject SVGFEDisplacementMapElement where
+  toGObject = GObject . unSVGFEDisplacementMapElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFEDisplacementMapElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFEDisplacementMapElement :: IsGObject obj => obj -> JSM SVGFEDisplacementMapElement
+castToSVGFEDisplacementMapElement = castTo gTypeSVGFEDisplacementMapElement "SVGFEDisplacementMapElement"
+
+gTypeSVGFEDisplacementMapElement :: JSM GType
+gTypeSVGFEDisplacementMapElement = GType . Object <$> jsg "SVGFEDisplacementMapElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGFEDistantLightElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDistantLightElement Mozilla SVGFEDistantLightElement documentation>
+newtype SVGFEDistantLightElement = SVGFEDistantLightElement { unSVGFEDistantLightElement :: JSVal }
+
+instance PToJSVal SVGFEDistantLightElement where
+  pToJSVal = unSVGFEDistantLightElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFEDistantLightElement where
+  pFromJSVal = SVGFEDistantLightElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFEDistantLightElement where
+  toJSVal = return . unSVGFEDistantLightElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFEDistantLightElement where
+  fromJSVal v = fmap SVGFEDistantLightElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGFEDistantLightElement where
+  makeObject = makeObject . unSVGFEDistantLightElement
+
+instance IsSVGElement SVGFEDistantLightElement
+instance IsElement SVGFEDistantLightElement
+instance IsNode SVGFEDistantLightElement
+instance IsEventTarget SVGFEDistantLightElement
+instance IsGObject SVGFEDistantLightElement where
+  toGObject = GObject . unSVGFEDistantLightElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFEDistantLightElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFEDistantLightElement :: IsGObject obj => obj -> JSM SVGFEDistantLightElement
+castToSVGFEDistantLightElement = castTo gTypeSVGFEDistantLightElement "SVGFEDistantLightElement"
+
+gTypeSVGFEDistantLightElement :: JSM GType
+gTypeSVGFEDistantLightElement = GType . Object <$> jsg "SVGFEDistantLightElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGFEDropShadowElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDropShadowElement Mozilla SVGFEDropShadowElement documentation>
+newtype SVGFEDropShadowElement = SVGFEDropShadowElement { unSVGFEDropShadowElement :: JSVal }
+
+instance PToJSVal SVGFEDropShadowElement where
+  pToJSVal = unSVGFEDropShadowElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFEDropShadowElement where
+  pFromJSVal = SVGFEDropShadowElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFEDropShadowElement where
+  toJSVal = return . unSVGFEDropShadowElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFEDropShadowElement where
+  fromJSVal v = fmap SVGFEDropShadowElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGFEDropShadowElement where
+  makeObject = makeObject . unSVGFEDropShadowElement
+
+instance IsSVGElement SVGFEDropShadowElement
+instance IsElement SVGFEDropShadowElement
+instance IsNode SVGFEDropShadowElement
+instance IsEventTarget SVGFEDropShadowElement
+instance IsGObject SVGFEDropShadowElement where
+  toGObject = GObject . unSVGFEDropShadowElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFEDropShadowElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFEDropShadowElement :: IsGObject obj => obj -> JSM SVGFEDropShadowElement
+castToSVGFEDropShadowElement = castTo gTypeSVGFEDropShadowElement "SVGFEDropShadowElement"
+
+gTypeSVGFEDropShadowElement :: JSM GType
+gTypeSVGFEDropShadowElement = GType . Object <$> jsg "SVGFEDropShadowElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGFEFloodElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEFloodElement Mozilla SVGFEFloodElement documentation>
+newtype SVGFEFloodElement = SVGFEFloodElement { unSVGFEFloodElement :: JSVal }
+
+instance PToJSVal SVGFEFloodElement where
+  pToJSVal = unSVGFEFloodElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFEFloodElement where
+  pFromJSVal = SVGFEFloodElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFEFloodElement where
+  toJSVal = return . unSVGFEFloodElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFEFloodElement where
+  fromJSVal v = fmap SVGFEFloodElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGFEFloodElement where
+  makeObject = makeObject . unSVGFEFloodElement
+
+instance IsSVGElement SVGFEFloodElement
+instance IsElement SVGFEFloodElement
+instance IsNode SVGFEFloodElement
+instance IsEventTarget SVGFEFloodElement
+instance IsGObject SVGFEFloodElement where
+  toGObject = GObject . unSVGFEFloodElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFEFloodElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFEFloodElement :: IsGObject obj => obj -> JSM SVGFEFloodElement
+castToSVGFEFloodElement = castTo gTypeSVGFEFloodElement "SVGFEFloodElement"
+
+gTypeSVGFEFloodElement :: JSM GType
+gTypeSVGFEFloodElement = GType . Object <$> jsg "SVGFEFloodElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGFEFuncAElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGComponentTransferFunctionElement"
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEFuncAElement Mozilla SVGFEFuncAElement documentation>
+newtype SVGFEFuncAElement = SVGFEFuncAElement { unSVGFEFuncAElement :: JSVal }
+
+instance PToJSVal SVGFEFuncAElement where
+  pToJSVal = unSVGFEFuncAElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFEFuncAElement where
+  pFromJSVal = SVGFEFuncAElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFEFuncAElement where
+  toJSVal = return . unSVGFEFuncAElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFEFuncAElement where
+  fromJSVal v = fmap SVGFEFuncAElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGFEFuncAElement where
+  makeObject = makeObject . unSVGFEFuncAElement
+
+instance IsSVGComponentTransferFunctionElement SVGFEFuncAElement
+instance IsSVGElement SVGFEFuncAElement
+instance IsElement SVGFEFuncAElement
+instance IsNode SVGFEFuncAElement
+instance IsEventTarget SVGFEFuncAElement
+instance IsGObject SVGFEFuncAElement where
+  toGObject = GObject . unSVGFEFuncAElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFEFuncAElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFEFuncAElement :: IsGObject obj => obj -> JSM SVGFEFuncAElement
+castToSVGFEFuncAElement = castTo gTypeSVGFEFuncAElement "SVGFEFuncAElement"
+
+gTypeSVGFEFuncAElement :: JSM GType
+gTypeSVGFEFuncAElement = GType . Object <$> jsg "SVGFEFuncAElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGFEFuncBElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGComponentTransferFunctionElement"
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEFuncBElement Mozilla SVGFEFuncBElement documentation>
+newtype SVGFEFuncBElement = SVGFEFuncBElement { unSVGFEFuncBElement :: JSVal }
+
+instance PToJSVal SVGFEFuncBElement where
+  pToJSVal = unSVGFEFuncBElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFEFuncBElement where
+  pFromJSVal = SVGFEFuncBElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFEFuncBElement where
+  toJSVal = return . unSVGFEFuncBElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFEFuncBElement where
+  fromJSVal v = fmap SVGFEFuncBElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGFEFuncBElement where
+  makeObject = makeObject . unSVGFEFuncBElement
+
+instance IsSVGComponentTransferFunctionElement SVGFEFuncBElement
+instance IsSVGElement SVGFEFuncBElement
+instance IsElement SVGFEFuncBElement
+instance IsNode SVGFEFuncBElement
+instance IsEventTarget SVGFEFuncBElement
+instance IsGObject SVGFEFuncBElement where
+  toGObject = GObject . unSVGFEFuncBElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFEFuncBElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFEFuncBElement :: IsGObject obj => obj -> JSM SVGFEFuncBElement
+castToSVGFEFuncBElement = castTo gTypeSVGFEFuncBElement "SVGFEFuncBElement"
+
+gTypeSVGFEFuncBElement :: JSM GType
+gTypeSVGFEFuncBElement = GType . Object <$> jsg "SVGFEFuncBElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGFEFuncGElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGComponentTransferFunctionElement"
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEFuncGElement Mozilla SVGFEFuncGElement documentation>
+newtype SVGFEFuncGElement = SVGFEFuncGElement { unSVGFEFuncGElement :: JSVal }
+
+instance PToJSVal SVGFEFuncGElement where
+  pToJSVal = unSVGFEFuncGElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFEFuncGElement where
+  pFromJSVal = SVGFEFuncGElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFEFuncGElement where
+  toJSVal = return . unSVGFEFuncGElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFEFuncGElement where
+  fromJSVal v = fmap SVGFEFuncGElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGFEFuncGElement where
+  makeObject = makeObject . unSVGFEFuncGElement
+
+instance IsSVGComponentTransferFunctionElement SVGFEFuncGElement
+instance IsSVGElement SVGFEFuncGElement
+instance IsElement SVGFEFuncGElement
+instance IsNode SVGFEFuncGElement
+instance IsEventTarget SVGFEFuncGElement
+instance IsGObject SVGFEFuncGElement where
+  toGObject = GObject . unSVGFEFuncGElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFEFuncGElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFEFuncGElement :: IsGObject obj => obj -> JSM SVGFEFuncGElement
+castToSVGFEFuncGElement = castTo gTypeSVGFEFuncGElement "SVGFEFuncGElement"
+
+gTypeSVGFEFuncGElement :: JSM GType
+gTypeSVGFEFuncGElement = GType . Object <$> jsg "SVGFEFuncGElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGFEFuncRElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGComponentTransferFunctionElement"
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEFuncRElement Mozilla SVGFEFuncRElement documentation>
+newtype SVGFEFuncRElement = SVGFEFuncRElement { unSVGFEFuncRElement :: JSVal }
+
+instance PToJSVal SVGFEFuncRElement where
+  pToJSVal = unSVGFEFuncRElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFEFuncRElement where
+  pFromJSVal = SVGFEFuncRElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFEFuncRElement where
+  toJSVal = return . unSVGFEFuncRElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFEFuncRElement where
+  fromJSVal v = fmap SVGFEFuncRElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGFEFuncRElement where
+  makeObject = makeObject . unSVGFEFuncRElement
+
+instance IsSVGComponentTransferFunctionElement SVGFEFuncRElement
+instance IsSVGElement SVGFEFuncRElement
+instance IsElement SVGFEFuncRElement
+instance IsNode SVGFEFuncRElement
+instance IsEventTarget SVGFEFuncRElement
+instance IsGObject SVGFEFuncRElement where
+  toGObject = GObject . unSVGFEFuncRElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFEFuncRElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFEFuncRElement :: IsGObject obj => obj -> JSM SVGFEFuncRElement
+castToSVGFEFuncRElement = castTo gTypeSVGFEFuncRElement "SVGFEFuncRElement"
+
+gTypeSVGFEFuncRElement :: JSM GType
+gTypeSVGFEFuncRElement = GType . Object <$> jsg "SVGFEFuncRElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGFEGaussianBlurElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEGaussianBlurElement Mozilla SVGFEGaussianBlurElement documentation>
+newtype SVGFEGaussianBlurElement = SVGFEGaussianBlurElement { unSVGFEGaussianBlurElement :: JSVal }
+
+instance PToJSVal SVGFEGaussianBlurElement where
+  pToJSVal = unSVGFEGaussianBlurElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFEGaussianBlurElement where
+  pFromJSVal = SVGFEGaussianBlurElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFEGaussianBlurElement where
+  toJSVal = return . unSVGFEGaussianBlurElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFEGaussianBlurElement where
+  fromJSVal v = fmap SVGFEGaussianBlurElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGFEGaussianBlurElement where
+  makeObject = makeObject . unSVGFEGaussianBlurElement
+
+instance IsSVGElement SVGFEGaussianBlurElement
+instance IsElement SVGFEGaussianBlurElement
+instance IsNode SVGFEGaussianBlurElement
+instance IsEventTarget SVGFEGaussianBlurElement
+instance IsGObject SVGFEGaussianBlurElement where
+  toGObject = GObject . unSVGFEGaussianBlurElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFEGaussianBlurElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFEGaussianBlurElement :: IsGObject obj => obj -> JSM SVGFEGaussianBlurElement
+castToSVGFEGaussianBlurElement = castTo gTypeSVGFEGaussianBlurElement "SVGFEGaussianBlurElement"
+
+gTypeSVGFEGaussianBlurElement :: JSM GType
+gTypeSVGFEGaussianBlurElement = GType . Object <$> jsg "SVGFEGaussianBlurElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGFEImageElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEImageElement Mozilla SVGFEImageElement documentation>
+newtype SVGFEImageElement = SVGFEImageElement { unSVGFEImageElement :: JSVal }
+
+instance PToJSVal SVGFEImageElement where
+  pToJSVal = unSVGFEImageElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFEImageElement where
+  pFromJSVal = SVGFEImageElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFEImageElement where
+  toJSVal = return . unSVGFEImageElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFEImageElement where
+  fromJSVal v = fmap SVGFEImageElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGFEImageElement where
+  makeObject = makeObject . unSVGFEImageElement
+
+instance IsSVGElement SVGFEImageElement
+instance IsElement SVGFEImageElement
+instance IsNode SVGFEImageElement
+instance IsEventTarget SVGFEImageElement
+instance IsGObject SVGFEImageElement where
+  toGObject = GObject . unSVGFEImageElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFEImageElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFEImageElement :: IsGObject obj => obj -> JSM SVGFEImageElement
+castToSVGFEImageElement = castTo gTypeSVGFEImageElement "SVGFEImageElement"
+
+gTypeSVGFEImageElement :: JSM GType
+gTypeSVGFEImageElement = GType . Object <$> jsg "SVGFEImageElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGFEMergeElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEMergeElement Mozilla SVGFEMergeElement documentation>
+newtype SVGFEMergeElement = SVGFEMergeElement { unSVGFEMergeElement :: JSVal }
+
+instance PToJSVal SVGFEMergeElement where
+  pToJSVal = unSVGFEMergeElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFEMergeElement where
+  pFromJSVal = SVGFEMergeElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFEMergeElement where
+  toJSVal = return . unSVGFEMergeElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFEMergeElement where
+  fromJSVal v = fmap SVGFEMergeElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGFEMergeElement where
+  makeObject = makeObject . unSVGFEMergeElement
+
+instance IsSVGElement SVGFEMergeElement
+instance IsElement SVGFEMergeElement
+instance IsNode SVGFEMergeElement
+instance IsEventTarget SVGFEMergeElement
+instance IsGObject SVGFEMergeElement where
+  toGObject = GObject . unSVGFEMergeElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFEMergeElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFEMergeElement :: IsGObject obj => obj -> JSM SVGFEMergeElement
+castToSVGFEMergeElement = castTo gTypeSVGFEMergeElement "SVGFEMergeElement"
+
+gTypeSVGFEMergeElement :: JSM GType
+gTypeSVGFEMergeElement = GType . Object <$> jsg "SVGFEMergeElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGFEMergeNodeElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEMergeNodeElement Mozilla SVGFEMergeNodeElement documentation>
+newtype SVGFEMergeNodeElement = SVGFEMergeNodeElement { unSVGFEMergeNodeElement :: JSVal }
+
+instance PToJSVal SVGFEMergeNodeElement where
+  pToJSVal = unSVGFEMergeNodeElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFEMergeNodeElement where
+  pFromJSVal = SVGFEMergeNodeElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFEMergeNodeElement where
+  toJSVal = return . unSVGFEMergeNodeElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFEMergeNodeElement where
+  fromJSVal v = fmap SVGFEMergeNodeElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGFEMergeNodeElement where
+  makeObject = makeObject . unSVGFEMergeNodeElement
+
+instance IsSVGElement SVGFEMergeNodeElement
+instance IsElement SVGFEMergeNodeElement
+instance IsNode SVGFEMergeNodeElement
+instance IsEventTarget SVGFEMergeNodeElement
+instance IsGObject SVGFEMergeNodeElement where
+  toGObject = GObject . unSVGFEMergeNodeElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFEMergeNodeElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFEMergeNodeElement :: IsGObject obj => obj -> JSM SVGFEMergeNodeElement
+castToSVGFEMergeNodeElement = castTo gTypeSVGFEMergeNodeElement "SVGFEMergeNodeElement"
+
+gTypeSVGFEMergeNodeElement :: JSM GType
+gTypeSVGFEMergeNodeElement = GType . Object <$> jsg "SVGFEMergeNodeElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGFEMorphologyElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEMorphologyElement Mozilla SVGFEMorphologyElement documentation>
+newtype SVGFEMorphologyElement = SVGFEMorphologyElement { unSVGFEMorphologyElement :: JSVal }
+
+instance PToJSVal SVGFEMorphologyElement where
+  pToJSVal = unSVGFEMorphologyElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFEMorphologyElement where
+  pFromJSVal = SVGFEMorphologyElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFEMorphologyElement where
+  toJSVal = return . unSVGFEMorphologyElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFEMorphologyElement where
+  fromJSVal v = fmap SVGFEMorphologyElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGFEMorphologyElement where
+  makeObject = makeObject . unSVGFEMorphologyElement
+
+instance IsSVGElement SVGFEMorphologyElement
+instance IsElement SVGFEMorphologyElement
+instance IsNode SVGFEMorphologyElement
+instance IsEventTarget SVGFEMorphologyElement
+instance IsGObject SVGFEMorphologyElement where
+  toGObject = GObject . unSVGFEMorphologyElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFEMorphologyElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFEMorphologyElement :: IsGObject obj => obj -> JSM SVGFEMorphologyElement
+castToSVGFEMorphologyElement = castTo gTypeSVGFEMorphologyElement "SVGFEMorphologyElement"
+
+gTypeSVGFEMorphologyElement :: JSM GType
+gTypeSVGFEMorphologyElement = GType . Object <$> jsg "SVGFEMorphologyElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGFEOffsetElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEOffsetElement Mozilla SVGFEOffsetElement documentation>
+newtype SVGFEOffsetElement = SVGFEOffsetElement { unSVGFEOffsetElement :: JSVal }
+
+instance PToJSVal SVGFEOffsetElement where
+  pToJSVal = unSVGFEOffsetElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFEOffsetElement where
+  pFromJSVal = SVGFEOffsetElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFEOffsetElement where
+  toJSVal = return . unSVGFEOffsetElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFEOffsetElement where
+  fromJSVal v = fmap SVGFEOffsetElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGFEOffsetElement where
+  makeObject = makeObject . unSVGFEOffsetElement
+
+instance IsSVGElement SVGFEOffsetElement
+instance IsElement SVGFEOffsetElement
+instance IsNode SVGFEOffsetElement
+instance IsEventTarget SVGFEOffsetElement
+instance IsGObject SVGFEOffsetElement where
+  toGObject = GObject . unSVGFEOffsetElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFEOffsetElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFEOffsetElement :: IsGObject obj => obj -> JSM SVGFEOffsetElement
+castToSVGFEOffsetElement = castTo gTypeSVGFEOffsetElement "SVGFEOffsetElement"
+
+gTypeSVGFEOffsetElement :: JSM GType
+gTypeSVGFEOffsetElement = GType . Object <$> jsg "SVGFEOffsetElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGFEPointLightElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEPointLightElement Mozilla SVGFEPointLightElement documentation>
+newtype SVGFEPointLightElement = SVGFEPointLightElement { unSVGFEPointLightElement :: JSVal }
+
+instance PToJSVal SVGFEPointLightElement where
+  pToJSVal = unSVGFEPointLightElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFEPointLightElement where
+  pFromJSVal = SVGFEPointLightElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFEPointLightElement where
+  toJSVal = return . unSVGFEPointLightElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFEPointLightElement where
+  fromJSVal v = fmap SVGFEPointLightElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGFEPointLightElement where
+  makeObject = makeObject . unSVGFEPointLightElement
+
+instance IsSVGElement SVGFEPointLightElement
+instance IsElement SVGFEPointLightElement
+instance IsNode SVGFEPointLightElement
+instance IsEventTarget SVGFEPointLightElement
+instance IsGObject SVGFEPointLightElement where
+  toGObject = GObject . unSVGFEPointLightElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFEPointLightElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFEPointLightElement :: IsGObject obj => obj -> JSM SVGFEPointLightElement
+castToSVGFEPointLightElement = castTo gTypeSVGFEPointLightElement "SVGFEPointLightElement"
+
+gTypeSVGFEPointLightElement :: JSM GType
+gTypeSVGFEPointLightElement = GType . Object <$> jsg "SVGFEPointLightElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGFESpecularLightingElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpecularLightingElement Mozilla SVGFESpecularLightingElement documentation>
+newtype SVGFESpecularLightingElement = SVGFESpecularLightingElement { unSVGFESpecularLightingElement :: JSVal }
+
+instance PToJSVal SVGFESpecularLightingElement where
+  pToJSVal = unSVGFESpecularLightingElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFESpecularLightingElement where
+  pFromJSVal = SVGFESpecularLightingElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFESpecularLightingElement where
+  toJSVal = return . unSVGFESpecularLightingElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFESpecularLightingElement where
+  fromJSVal v = fmap SVGFESpecularLightingElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGFESpecularLightingElement where
+  makeObject = makeObject . unSVGFESpecularLightingElement
+
+instance IsSVGElement SVGFESpecularLightingElement
+instance IsElement SVGFESpecularLightingElement
+instance IsNode SVGFESpecularLightingElement
+instance IsEventTarget SVGFESpecularLightingElement
+instance IsGObject SVGFESpecularLightingElement where
+  toGObject = GObject . unSVGFESpecularLightingElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFESpecularLightingElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFESpecularLightingElement :: IsGObject obj => obj -> JSM SVGFESpecularLightingElement
+castToSVGFESpecularLightingElement = castTo gTypeSVGFESpecularLightingElement "SVGFESpecularLightingElement"
+
+gTypeSVGFESpecularLightingElement :: JSM GType
+gTypeSVGFESpecularLightingElement = GType . Object <$> jsg "SVGFESpecularLightingElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGFESpotLightElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpotLightElement Mozilla SVGFESpotLightElement documentation>
+newtype SVGFESpotLightElement = SVGFESpotLightElement { unSVGFESpotLightElement :: JSVal }
+
+instance PToJSVal SVGFESpotLightElement where
+  pToJSVal = unSVGFESpotLightElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFESpotLightElement where
+  pFromJSVal = SVGFESpotLightElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFESpotLightElement where
+  toJSVal = return . unSVGFESpotLightElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFESpotLightElement where
+  fromJSVal v = fmap SVGFESpotLightElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGFESpotLightElement where
+  makeObject = makeObject . unSVGFESpotLightElement
+
+instance IsSVGElement SVGFESpotLightElement
+instance IsElement SVGFESpotLightElement
+instance IsNode SVGFESpotLightElement
+instance IsEventTarget SVGFESpotLightElement
+instance IsGObject SVGFESpotLightElement where
+  toGObject = GObject . unSVGFESpotLightElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFESpotLightElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFESpotLightElement :: IsGObject obj => obj -> JSM SVGFESpotLightElement
+castToSVGFESpotLightElement = castTo gTypeSVGFESpotLightElement "SVGFESpotLightElement"
+
+gTypeSVGFESpotLightElement :: JSM GType
+gTypeSVGFESpotLightElement = GType . Object <$> jsg "SVGFESpotLightElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGFETileElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFETileElement Mozilla SVGFETileElement documentation>
+newtype SVGFETileElement = SVGFETileElement { unSVGFETileElement :: JSVal }
+
+instance PToJSVal SVGFETileElement where
+  pToJSVal = unSVGFETileElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFETileElement where
+  pFromJSVal = SVGFETileElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFETileElement where
+  toJSVal = return . unSVGFETileElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFETileElement where
+  fromJSVal v = fmap SVGFETileElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGFETileElement where
+  makeObject = makeObject . unSVGFETileElement
+
+instance IsSVGElement SVGFETileElement
+instance IsElement SVGFETileElement
+instance IsNode SVGFETileElement
+instance IsEventTarget SVGFETileElement
+instance IsGObject SVGFETileElement where
+  toGObject = GObject . unSVGFETileElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFETileElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFETileElement :: IsGObject obj => obj -> JSM SVGFETileElement
+castToSVGFETileElement = castTo gTypeSVGFETileElement "SVGFETileElement"
+
+gTypeSVGFETileElement :: JSM GType
+gTypeSVGFETileElement = GType . Object <$> jsg "SVGFETileElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGFETurbulenceElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFETurbulenceElement Mozilla SVGFETurbulenceElement documentation>
+newtype SVGFETurbulenceElement = SVGFETurbulenceElement { unSVGFETurbulenceElement :: JSVal }
+
+instance PToJSVal SVGFETurbulenceElement where
+  pToJSVal = unSVGFETurbulenceElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFETurbulenceElement where
+  pFromJSVal = SVGFETurbulenceElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFETurbulenceElement where
+  toJSVal = return . unSVGFETurbulenceElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFETurbulenceElement where
+  fromJSVal v = fmap SVGFETurbulenceElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGFETurbulenceElement where
+  makeObject = makeObject . unSVGFETurbulenceElement
+
+instance IsSVGElement SVGFETurbulenceElement
+instance IsElement SVGFETurbulenceElement
+instance IsNode SVGFETurbulenceElement
+instance IsEventTarget SVGFETurbulenceElement
+instance IsGObject SVGFETurbulenceElement where
+  toGObject = GObject . unSVGFETurbulenceElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFETurbulenceElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFETurbulenceElement :: IsGObject obj => obj -> JSM SVGFETurbulenceElement
+castToSVGFETurbulenceElement = castTo gTypeSVGFETurbulenceElement "SVGFETurbulenceElement"
+
+gTypeSVGFETurbulenceElement :: JSM GType
+gTypeSVGFETurbulenceElement = GType . Object <$> jsg "SVGFETurbulenceElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGFilterElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterElement Mozilla SVGFilterElement documentation>
+newtype SVGFilterElement = SVGFilterElement { unSVGFilterElement :: JSVal }
+
+instance PToJSVal SVGFilterElement where
+  pToJSVal = unSVGFilterElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFilterElement where
+  pFromJSVal = SVGFilterElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFilterElement where
+  toJSVal = return . unSVGFilterElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFilterElement where
+  fromJSVal v = fmap SVGFilterElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGFilterElement where
+  makeObject = makeObject . unSVGFilterElement
+
+instance IsSVGElement SVGFilterElement
+instance IsElement SVGFilterElement
+instance IsNode SVGFilterElement
+instance IsEventTarget SVGFilterElement
+instance IsGObject SVGFilterElement where
+  toGObject = GObject . unSVGFilterElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFilterElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFilterElement :: IsGObject obj => obj -> JSM SVGFilterElement
+castToSVGFilterElement = castTo gTypeSVGFilterElement "SVGFilterElement"
+
+gTypeSVGFilterElement :: JSM GType
+gTypeSVGFilterElement = GType . Object <$> jsg "SVGFilterElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGFilterPrimitiveStandardAttributes".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterPrimitiveStandardAttributes Mozilla SVGFilterPrimitiveStandardAttributes documentation>
+newtype SVGFilterPrimitiveStandardAttributes = SVGFilterPrimitiveStandardAttributes { unSVGFilterPrimitiveStandardAttributes :: JSVal }
+
+instance PToJSVal SVGFilterPrimitiveStandardAttributes where
+  pToJSVal = unSVGFilterPrimitiveStandardAttributes
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFilterPrimitiveStandardAttributes where
+  pFromJSVal = SVGFilterPrimitiveStandardAttributes
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFilterPrimitiveStandardAttributes where
+  toJSVal = return . unSVGFilterPrimitiveStandardAttributes
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFilterPrimitiveStandardAttributes where
+  fromJSVal v = fmap SVGFilterPrimitiveStandardAttributes <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGFilterPrimitiveStandardAttributes where
+  makeObject = makeObject . unSVGFilterPrimitiveStandardAttributes
+
+instance IsGObject SVGFilterPrimitiveStandardAttributes where
+  toGObject = GObject . unSVGFilterPrimitiveStandardAttributes
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFilterPrimitiveStandardAttributes . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFilterPrimitiveStandardAttributes :: IsGObject obj => obj -> JSM SVGFilterPrimitiveStandardAttributes
+castToSVGFilterPrimitiveStandardAttributes = castTo gTypeSVGFilterPrimitiveStandardAttributes "SVGFilterPrimitiveStandardAttributes"
+
+gTypeSVGFilterPrimitiveStandardAttributes :: JSM GType
+gTypeSVGFilterPrimitiveStandardAttributes = GType . Object <$> jsg "SVGFilterPrimitiveStandardAttributes"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGFitToViewBox".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFitToViewBox Mozilla SVGFitToViewBox documentation>
+newtype SVGFitToViewBox = SVGFitToViewBox { unSVGFitToViewBox :: JSVal }
+
+instance PToJSVal SVGFitToViewBox where
+  pToJSVal = unSVGFitToViewBox
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFitToViewBox where
+  pFromJSVal = SVGFitToViewBox
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFitToViewBox where
+  toJSVal = return . unSVGFitToViewBox
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFitToViewBox where
+  fromJSVal v = fmap SVGFitToViewBox <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGFitToViewBox where
+  makeObject = makeObject . unSVGFitToViewBox
+
+instance IsGObject SVGFitToViewBox where
+  toGObject = GObject . unSVGFitToViewBox
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFitToViewBox . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFitToViewBox :: IsGObject obj => obj -> JSM SVGFitToViewBox
+castToSVGFitToViewBox = castTo gTypeSVGFitToViewBox "SVGFitToViewBox"
+
+gTypeSVGFitToViewBox :: JSM GType
+gTypeSVGFitToViewBox = GType . Object <$> jsg "SVGFitToViewBox"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGFontElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFontElement Mozilla SVGFontElement documentation>
+newtype SVGFontElement = SVGFontElement { unSVGFontElement :: JSVal }
+
+instance PToJSVal SVGFontElement where
+  pToJSVal = unSVGFontElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFontElement where
+  pFromJSVal = SVGFontElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFontElement where
+  toJSVal = return . unSVGFontElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFontElement where
+  fromJSVal v = fmap SVGFontElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGFontElement where
+  makeObject = makeObject . unSVGFontElement
+
+instance IsSVGElement SVGFontElement
+instance IsElement SVGFontElement
+instance IsNode SVGFontElement
+instance IsEventTarget SVGFontElement
+instance IsGObject SVGFontElement where
+  toGObject = GObject . unSVGFontElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFontElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFontElement :: IsGObject obj => obj -> JSM SVGFontElement
+castToSVGFontElement = castTo gTypeSVGFontElement "SVGFontElement"
+
+gTypeSVGFontElement :: JSM GType
+gTypeSVGFontElement = GType . Object <$> jsg "SVGFontElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGFontFaceElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFontFaceElement Mozilla SVGFontFaceElement documentation>
+newtype SVGFontFaceElement = SVGFontFaceElement { unSVGFontFaceElement :: JSVal }
+
+instance PToJSVal SVGFontFaceElement where
+  pToJSVal = unSVGFontFaceElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFontFaceElement where
+  pFromJSVal = SVGFontFaceElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFontFaceElement where
+  toJSVal = return . unSVGFontFaceElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFontFaceElement where
+  fromJSVal v = fmap SVGFontFaceElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGFontFaceElement where
+  makeObject = makeObject . unSVGFontFaceElement
+
+instance IsSVGElement SVGFontFaceElement
+instance IsElement SVGFontFaceElement
+instance IsNode SVGFontFaceElement
+instance IsEventTarget SVGFontFaceElement
+instance IsGObject SVGFontFaceElement where
+  toGObject = GObject . unSVGFontFaceElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFontFaceElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFontFaceElement :: IsGObject obj => obj -> JSM SVGFontFaceElement
+castToSVGFontFaceElement = castTo gTypeSVGFontFaceElement "SVGFontFaceElement"
+
+gTypeSVGFontFaceElement :: JSM GType
+gTypeSVGFontFaceElement = GType . Object <$> jsg "SVGFontFaceElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGFontFaceFormatElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFontFaceFormatElement Mozilla SVGFontFaceFormatElement documentation>
+newtype SVGFontFaceFormatElement = SVGFontFaceFormatElement { unSVGFontFaceFormatElement :: JSVal }
+
+instance PToJSVal SVGFontFaceFormatElement where
+  pToJSVal = unSVGFontFaceFormatElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFontFaceFormatElement where
+  pFromJSVal = SVGFontFaceFormatElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFontFaceFormatElement where
+  toJSVal = return . unSVGFontFaceFormatElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFontFaceFormatElement where
+  fromJSVal v = fmap SVGFontFaceFormatElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGFontFaceFormatElement where
+  makeObject = makeObject . unSVGFontFaceFormatElement
+
+instance IsSVGElement SVGFontFaceFormatElement
+instance IsElement SVGFontFaceFormatElement
+instance IsNode SVGFontFaceFormatElement
+instance IsEventTarget SVGFontFaceFormatElement
+instance IsGObject SVGFontFaceFormatElement where
+  toGObject = GObject . unSVGFontFaceFormatElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFontFaceFormatElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFontFaceFormatElement :: IsGObject obj => obj -> JSM SVGFontFaceFormatElement
+castToSVGFontFaceFormatElement = castTo gTypeSVGFontFaceFormatElement "SVGFontFaceFormatElement"
+
+gTypeSVGFontFaceFormatElement :: JSM GType
+gTypeSVGFontFaceFormatElement = GType . Object <$> jsg "SVGFontFaceFormatElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGFontFaceNameElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFontFaceNameElement Mozilla SVGFontFaceNameElement documentation>
+newtype SVGFontFaceNameElement = SVGFontFaceNameElement { unSVGFontFaceNameElement :: JSVal }
+
+instance PToJSVal SVGFontFaceNameElement where
+  pToJSVal = unSVGFontFaceNameElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFontFaceNameElement where
+  pFromJSVal = SVGFontFaceNameElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFontFaceNameElement where
+  toJSVal = return . unSVGFontFaceNameElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFontFaceNameElement where
+  fromJSVal v = fmap SVGFontFaceNameElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGFontFaceNameElement where
+  makeObject = makeObject . unSVGFontFaceNameElement
+
+instance IsSVGElement SVGFontFaceNameElement
+instance IsElement SVGFontFaceNameElement
+instance IsNode SVGFontFaceNameElement
+instance IsEventTarget SVGFontFaceNameElement
+instance IsGObject SVGFontFaceNameElement where
+  toGObject = GObject . unSVGFontFaceNameElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFontFaceNameElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFontFaceNameElement :: IsGObject obj => obj -> JSM SVGFontFaceNameElement
+castToSVGFontFaceNameElement = castTo gTypeSVGFontFaceNameElement "SVGFontFaceNameElement"
+
+gTypeSVGFontFaceNameElement :: JSM GType
+gTypeSVGFontFaceNameElement = GType . Object <$> jsg "SVGFontFaceNameElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGFontFaceSrcElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFontFaceSrcElement Mozilla SVGFontFaceSrcElement documentation>
+newtype SVGFontFaceSrcElement = SVGFontFaceSrcElement { unSVGFontFaceSrcElement :: JSVal }
+
+instance PToJSVal SVGFontFaceSrcElement where
+  pToJSVal = unSVGFontFaceSrcElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFontFaceSrcElement where
+  pFromJSVal = SVGFontFaceSrcElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFontFaceSrcElement where
+  toJSVal = return . unSVGFontFaceSrcElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFontFaceSrcElement where
+  fromJSVal v = fmap SVGFontFaceSrcElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGFontFaceSrcElement where
+  makeObject = makeObject . unSVGFontFaceSrcElement
+
+instance IsSVGElement SVGFontFaceSrcElement
+instance IsElement SVGFontFaceSrcElement
+instance IsNode SVGFontFaceSrcElement
+instance IsEventTarget SVGFontFaceSrcElement
+instance IsGObject SVGFontFaceSrcElement where
+  toGObject = GObject . unSVGFontFaceSrcElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFontFaceSrcElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFontFaceSrcElement :: IsGObject obj => obj -> JSM SVGFontFaceSrcElement
+castToSVGFontFaceSrcElement = castTo gTypeSVGFontFaceSrcElement "SVGFontFaceSrcElement"
+
+gTypeSVGFontFaceSrcElement :: JSM GType
+gTypeSVGFontFaceSrcElement = GType . Object <$> jsg "SVGFontFaceSrcElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGFontFaceUriElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFontFaceUriElement Mozilla SVGFontFaceUriElement documentation>
+newtype SVGFontFaceUriElement = SVGFontFaceUriElement { unSVGFontFaceUriElement :: JSVal }
+
+instance PToJSVal SVGFontFaceUriElement where
+  pToJSVal = unSVGFontFaceUriElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFontFaceUriElement where
+  pFromJSVal = SVGFontFaceUriElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFontFaceUriElement where
+  toJSVal = return . unSVGFontFaceUriElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFontFaceUriElement where
+  fromJSVal v = fmap SVGFontFaceUriElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGFontFaceUriElement where
+  makeObject = makeObject . unSVGFontFaceUriElement
+
+instance IsSVGElement SVGFontFaceUriElement
+instance IsElement SVGFontFaceUriElement
+instance IsNode SVGFontFaceUriElement
+instance IsEventTarget SVGFontFaceUriElement
+instance IsGObject SVGFontFaceUriElement where
+  toGObject = GObject . unSVGFontFaceUriElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFontFaceUriElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFontFaceUriElement :: IsGObject obj => obj -> JSM SVGFontFaceUriElement
+castToSVGFontFaceUriElement = castTo gTypeSVGFontFaceUriElement "SVGFontFaceUriElement"
+
+gTypeSVGFontFaceUriElement :: JSM GType
+gTypeSVGFontFaceUriElement = GType . Object <$> jsg "SVGFontFaceUriElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGForeignObjectElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGGraphicsElement"
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGForeignObjectElement Mozilla SVGForeignObjectElement documentation>
+newtype SVGForeignObjectElement = SVGForeignObjectElement { unSVGForeignObjectElement :: JSVal }
+
+instance PToJSVal SVGForeignObjectElement where
+  pToJSVal = unSVGForeignObjectElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGForeignObjectElement where
+  pFromJSVal = SVGForeignObjectElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGForeignObjectElement where
+  toJSVal = return . unSVGForeignObjectElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGForeignObjectElement where
+  fromJSVal v = fmap SVGForeignObjectElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGForeignObjectElement where
+  makeObject = makeObject . unSVGForeignObjectElement
+
+instance IsSVGGraphicsElement SVGForeignObjectElement
+instance IsSVGElement SVGForeignObjectElement
+instance IsElement SVGForeignObjectElement
+instance IsNode SVGForeignObjectElement
+instance IsEventTarget SVGForeignObjectElement
+instance IsGObject SVGForeignObjectElement where
+  toGObject = GObject . unSVGForeignObjectElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGForeignObjectElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGForeignObjectElement :: IsGObject obj => obj -> JSM SVGForeignObjectElement
+castToSVGForeignObjectElement = castTo gTypeSVGForeignObjectElement "SVGForeignObjectElement"
+
+gTypeSVGForeignObjectElement :: JSM GType
+gTypeSVGForeignObjectElement = GType . Object <$> jsg "SVGForeignObjectElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGGElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGGraphicsElement"
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGGElement Mozilla SVGGElement documentation>
+newtype SVGGElement = SVGGElement { unSVGGElement :: JSVal }
+
+instance PToJSVal SVGGElement where
+  pToJSVal = unSVGGElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGGElement where
+  pFromJSVal = SVGGElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGGElement where
+  toJSVal = return . unSVGGElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGGElement where
+  fromJSVal v = fmap SVGGElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGGElement where
+  makeObject = makeObject . unSVGGElement
+
+instance IsSVGGraphicsElement SVGGElement
+instance IsSVGElement SVGGElement
+instance IsElement SVGGElement
+instance IsNode SVGGElement
+instance IsEventTarget SVGGElement
+instance IsGObject SVGGElement where
+  toGObject = GObject . unSVGGElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGGElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGGElement :: IsGObject obj => obj -> JSM SVGGElement
+castToSVGGElement = castTo gTypeSVGGElement "SVGGElement"
+
+gTypeSVGGElement :: JSM GType
+gTypeSVGGElement = GType . Object <$> jsg "SVGGElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGGlyphElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGGlyphElement Mozilla SVGGlyphElement documentation>
+newtype SVGGlyphElement = SVGGlyphElement { unSVGGlyphElement :: JSVal }
+
+instance PToJSVal SVGGlyphElement where
+  pToJSVal = unSVGGlyphElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGGlyphElement where
+  pFromJSVal = SVGGlyphElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGGlyphElement where
+  toJSVal = return . unSVGGlyphElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGGlyphElement where
+  fromJSVal v = fmap SVGGlyphElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGGlyphElement where
+  makeObject = makeObject . unSVGGlyphElement
+
+instance IsSVGElement SVGGlyphElement
+instance IsElement SVGGlyphElement
+instance IsNode SVGGlyphElement
+instance IsEventTarget SVGGlyphElement
+instance IsGObject SVGGlyphElement where
+  toGObject = GObject . unSVGGlyphElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGGlyphElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGGlyphElement :: IsGObject obj => obj -> JSM SVGGlyphElement
+castToSVGGlyphElement = castTo gTypeSVGGlyphElement "SVGGlyphElement"
+
+gTypeSVGGlyphElement :: JSM GType
+gTypeSVGGlyphElement = GType . Object <$> jsg "SVGGlyphElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGGlyphRefElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGGlyphRefElement Mozilla SVGGlyphRefElement documentation>
+newtype SVGGlyphRefElement = SVGGlyphRefElement { unSVGGlyphRefElement :: JSVal }
+
+instance PToJSVal SVGGlyphRefElement where
+  pToJSVal = unSVGGlyphRefElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGGlyphRefElement where
+  pFromJSVal = SVGGlyphRefElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGGlyphRefElement where
+  toJSVal = return . unSVGGlyphRefElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGGlyphRefElement where
+  fromJSVal v = fmap SVGGlyphRefElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGGlyphRefElement where
+  makeObject = makeObject . unSVGGlyphRefElement
+
+instance IsSVGElement SVGGlyphRefElement
+instance IsElement SVGGlyphRefElement
+instance IsNode SVGGlyphRefElement
+instance IsEventTarget SVGGlyphRefElement
+instance IsGObject SVGGlyphRefElement where
+  toGObject = GObject . unSVGGlyphRefElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGGlyphRefElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGGlyphRefElement :: IsGObject obj => obj -> JSM SVGGlyphRefElement
+castToSVGGlyphRefElement = castTo gTypeSVGGlyphRefElement "SVGGlyphRefElement"
+
+gTypeSVGGlyphRefElement :: JSM GType
+gTypeSVGGlyphRefElement = GType . Object <$> jsg "SVGGlyphRefElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGGradientElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGGradientElement Mozilla SVGGradientElement documentation>
+newtype SVGGradientElement = SVGGradientElement { unSVGGradientElement :: JSVal }
+
+instance PToJSVal SVGGradientElement where
+  pToJSVal = unSVGGradientElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGGradientElement where
+  pFromJSVal = SVGGradientElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGGradientElement where
+  toJSVal = return . unSVGGradientElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGGradientElement where
+  fromJSVal v = fmap SVGGradientElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGGradientElement where
+  makeObject = makeObject . unSVGGradientElement
+
+class IsSVGElement o => IsSVGGradientElement o
+toSVGGradientElement :: IsSVGGradientElement o => o -> SVGGradientElement
+toSVGGradientElement = unsafeCastGObject . toGObject
+
+instance IsSVGGradientElement SVGGradientElement
+instance IsSVGElement SVGGradientElement
+instance IsElement SVGGradientElement
+instance IsNode SVGGradientElement
+instance IsEventTarget SVGGradientElement
+instance IsGObject SVGGradientElement where
+  toGObject = GObject . unSVGGradientElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGGradientElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGGradientElement :: IsGObject obj => obj -> JSM SVGGradientElement
+castToSVGGradientElement = castTo gTypeSVGGradientElement "SVGGradientElement"
+
+gTypeSVGGradientElement :: JSM GType
+gTypeSVGGradientElement = GType . Object <$> jsg "SVGGradientElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGGraphicsElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGGraphicsElement Mozilla SVGGraphicsElement documentation>
+newtype SVGGraphicsElement = SVGGraphicsElement { unSVGGraphicsElement :: JSVal }
+
+instance PToJSVal SVGGraphicsElement where
+  pToJSVal = unSVGGraphicsElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGGraphicsElement where
+  pFromJSVal = SVGGraphicsElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGGraphicsElement where
+  toJSVal = return . unSVGGraphicsElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGGraphicsElement where
+  fromJSVal v = fmap SVGGraphicsElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGGraphicsElement where
+  makeObject = makeObject . unSVGGraphicsElement
+
+class IsSVGElement o => IsSVGGraphicsElement o
+toSVGGraphicsElement :: IsSVGGraphicsElement o => o -> SVGGraphicsElement
+toSVGGraphicsElement = unsafeCastGObject . toGObject
+
+instance IsSVGGraphicsElement SVGGraphicsElement
+instance IsSVGElement SVGGraphicsElement
+instance IsElement SVGGraphicsElement
+instance IsNode SVGGraphicsElement
+instance IsEventTarget SVGGraphicsElement
+instance IsGObject SVGGraphicsElement where
+  toGObject = GObject . unSVGGraphicsElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGGraphicsElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGGraphicsElement :: IsGObject obj => obj -> JSM SVGGraphicsElement
+castToSVGGraphicsElement = castTo gTypeSVGGraphicsElement "SVGGraphicsElement"
+
+gTypeSVGGraphicsElement :: JSM GType
+gTypeSVGGraphicsElement = GType . Object <$> jsg "SVGGraphicsElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGHKernElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGHKernElement Mozilla SVGHKernElement documentation>
+newtype SVGHKernElement = SVGHKernElement { unSVGHKernElement :: JSVal }
+
+instance PToJSVal SVGHKernElement where
+  pToJSVal = unSVGHKernElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGHKernElement where
+  pFromJSVal = SVGHKernElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGHKernElement where
+  toJSVal = return . unSVGHKernElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGHKernElement where
+  fromJSVal v = fmap SVGHKernElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGHKernElement where
+  makeObject = makeObject . unSVGHKernElement
+
+instance IsSVGElement SVGHKernElement
+instance IsElement SVGHKernElement
+instance IsNode SVGHKernElement
+instance IsEventTarget SVGHKernElement
+instance IsGObject SVGHKernElement where
+  toGObject = GObject . unSVGHKernElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGHKernElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGHKernElement :: IsGObject obj => obj -> JSM SVGHKernElement
+castToSVGHKernElement = castTo gTypeSVGHKernElement "SVGHKernElement"
+
+gTypeSVGHKernElement :: JSM GType
+gTypeSVGHKernElement = GType . Object <$> jsg "SVGHKernElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGImageElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGGraphicsElement"
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGImageElement Mozilla SVGImageElement documentation>
+newtype SVGImageElement = SVGImageElement { unSVGImageElement :: JSVal }
+
+instance PToJSVal SVGImageElement where
+  pToJSVal = unSVGImageElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGImageElement where
+  pFromJSVal = SVGImageElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGImageElement where
+  toJSVal = return . unSVGImageElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGImageElement where
+  fromJSVal v = fmap SVGImageElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGImageElement where
+  makeObject = makeObject . unSVGImageElement
+
+instance IsSVGGraphicsElement SVGImageElement
+instance IsSVGElement SVGImageElement
+instance IsElement SVGImageElement
+instance IsNode SVGImageElement
+instance IsEventTarget SVGImageElement
+instance IsGObject SVGImageElement where
+  toGObject = GObject . unSVGImageElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGImageElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGImageElement :: IsGObject obj => obj -> JSM SVGImageElement
+castToSVGImageElement = castTo gTypeSVGImageElement "SVGImageElement"
+
+gTypeSVGImageElement :: JSM GType
+gTypeSVGImageElement = GType . Object <$> jsg "SVGImageElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGLength".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGLength Mozilla SVGLength documentation>
+newtype SVGLength = SVGLength { unSVGLength :: JSVal }
+
+instance PToJSVal SVGLength where
+  pToJSVal = unSVGLength
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGLength where
+  pFromJSVal = SVGLength
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGLength where
+  toJSVal = return . unSVGLength
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGLength where
+  fromJSVal v = fmap SVGLength <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGLength where
+  makeObject = makeObject . unSVGLength
+
+instance IsGObject SVGLength where
+  toGObject = GObject . unSVGLength
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGLength . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGLength :: IsGObject obj => obj -> JSM SVGLength
+castToSVGLength = castTo gTypeSVGLength "SVGLength"
+
+gTypeSVGLength :: JSM GType
+gTypeSVGLength = GType . Object <$> jsg "SVGLength"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGLengthList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList Mozilla SVGLengthList documentation>
+newtype SVGLengthList = SVGLengthList { unSVGLengthList :: JSVal }
+
+instance PToJSVal SVGLengthList where
+  pToJSVal = unSVGLengthList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGLengthList where
+  pFromJSVal = SVGLengthList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGLengthList where
+  toJSVal = return . unSVGLengthList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGLengthList where
+  fromJSVal v = fmap SVGLengthList <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGLengthList where
+  makeObject = makeObject . unSVGLengthList
+
+instance IsGObject SVGLengthList where
+  toGObject = GObject . unSVGLengthList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGLengthList . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGLengthList :: IsGObject obj => obj -> JSM SVGLengthList
+castToSVGLengthList = castTo gTypeSVGLengthList "SVGLengthList"
+
+gTypeSVGLengthList :: JSM GType
+gTypeSVGLengthList = GType . Object <$> jsg "SVGLengthList"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGLineElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGGraphicsElement"
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGLineElement Mozilla SVGLineElement documentation>
+newtype SVGLineElement = SVGLineElement { unSVGLineElement :: JSVal }
+
+instance PToJSVal SVGLineElement where
+  pToJSVal = unSVGLineElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGLineElement where
+  pFromJSVal = SVGLineElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGLineElement where
+  toJSVal = return . unSVGLineElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGLineElement where
+  fromJSVal v = fmap SVGLineElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGLineElement where
+  makeObject = makeObject . unSVGLineElement
+
+instance IsSVGGraphicsElement SVGLineElement
+instance IsSVGElement SVGLineElement
+instance IsElement SVGLineElement
+instance IsNode SVGLineElement
+instance IsEventTarget SVGLineElement
+instance IsGObject SVGLineElement where
+  toGObject = GObject . unSVGLineElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGLineElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGLineElement :: IsGObject obj => obj -> JSM SVGLineElement
+castToSVGLineElement = castTo gTypeSVGLineElement "SVGLineElement"
+
+gTypeSVGLineElement :: JSM GType
+gTypeSVGLineElement = GType . Object <$> jsg "SVGLineElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGLinearGradientElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGGradientElement"
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGLinearGradientElement Mozilla SVGLinearGradientElement documentation>
+newtype SVGLinearGradientElement = SVGLinearGradientElement { unSVGLinearGradientElement :: JSVal }
+
+instance PToJSVal SVGLinearGradientElement where
+  pToJSVal = unSVGLinearGradientElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGLinearGradientElement where
+  pFromJSVal = SVGLinearGradientElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGLinearGradientElement where
+  toJSVal = return . unSVGLinearGradientElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGLinearGradientElement where
+  fromJSVal v = fmap SVGLinearGradientElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGLinearGradientElement where
+  makeObject = makeObject . unSVGLinearGradientElement
+
+instance IsSVGGradientElement SVGLinearGradientElement
+instance IsSVGElement SVGLinearGradientElement
+instance IsElement SVGLinearGradientElement
+instance IsNode SVGLinearGradientElement
+instance IsEventTarget SVGLinearGradientElement
+instance IsGObject SVGLinearGradientElement where
+  toGObject = GObject . unSVGLinearGradientElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGLinearGradientElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGLinearGradientElement :: IsGObject obj => obj -> JSM SVGLinearGradientElement
+castToSVGLinearGradientElement = castTo gTypeSVGLinearGradientElement "SVGLinearGradientElement"
+
+gTypeSVGLinearGradientElement :: JSM GType
+gTypeSVGLinearGradientElement = GType . Object <$> jsg "SVGLinearGradientElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGMPathElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGMPathElement Mozilla SVGMPathElement documentation>
+newtype SVGMPathElement = SVGMPathElement { unSVGMPathElement :: JSVal }
+
+instance PToJSVal SVGMPathElement where
+  pToJSVal = unSVGMPathElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGMPathElement where
+  pFromJSVal = SVGMPathElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGMPathElement where
+  toJSVal = return . unSVGMPathElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGMPathElement where
+  fromJSVal v = fmap SVGMPathElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGMPathElement where
+  makeObject = makeObject . unSVGMPathElement
+
+instance IsSVGElement SVGMPathElement
+instance IsElement SVGMPathElement
+instance IsNode SVGMPathElement
+instance IsEventTarget SVGMPathElement
+instance IsGObject SVGMPathElement where
+  toGObject = GObject . unSVGMPathElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGMPathElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGMPathElement :: IsGObject obj => obj -> JSM SVGMPathElement
+castToSVGMPathElement = castTo gTypeSVGMPathElement "SVGMPathElement"
+
+gTypeSVGMPathElement :: JSM GType
+gTypeSVGMPathElement = GType . Object <$> jsg "SVGMPathElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGMarkerElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGMarkerElement Mozilla SVGMarkerElement documentation>
+newtype SVGMarkerElement = SVGMarkerElement { unSVGMarkerElement :: JSVal }
+
+instance PToJSVal SVGMarkerElement where
+  pToJSVal = unSVGMarkerElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGMarkerElement where
+  pFromJSVal = SVGMarkerElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGMarkerElement where
+  toJSVal = return . unSVGMarkerElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGMarkerElement where
+  fromJSVal v = fmap SVGMarkerElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGMarkerElement where
+  makeObject = makeObject . unSVGMarkerElement
+
+instance IsSVGElement SVGMarkerElement
+instance IsElement SVGMarkerElement
+instance IsNode SVGMarkerElement
+instance IsEventTarget SVGMarkerElement
+instance IsGObject SVGMarkerElement where
+  toGObject = GObject . unSVGMarkerElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGMarkerElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGMarkerElement :: IsGObject obj => obj -> JSM SVGMarkerElement
+castToSVGMarkerElement = castTo gTypeSVGMarkerElement "SVGMarkerElement"
+
+gTypeSVGMarkerElement :: JSM GType
+gTypeSVGMarkerElement = GType . Object <$> jsg "SVGMarkerElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGMaskElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGMaskElement Mozilla SVGMaskElement documentation>
+newtype SVGMaskElement = SVGMaskElement { unSVGMaskElement :: JSVal }
+
+instance PToJSVal SVGMaskElement where
+  pToJSVal = unSVGMaskElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGMaskElement where
+  pFromJSVal = SVGMaskElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGMaskElement where
+  toJSVal = return . unSVGMaskElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGMaskElement where
+  fromJSVal v = fmap SVGMaskElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGMaskElement where
+  makeObject = makeObject . unSVGMaskElement
+
+instance IsSVGElement SVGMaskElement
+instance IsElement SVGMaskElement
+instance IsNode SVGMaskElement
+instance IsEventTarget SVGMaskElement
+instance IsGObject SVGMaskElement where
+  toGObject = GObject . unSVGMaskElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGMaskElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGMaskElement :: IsGObject obj => obj -> JSM SVGMaskElement
+castToSVGMaskElement = castTo gTypeSVGMaskElement "SVGMaskElement"
+
+gTypeSVGMaskElement :: JSM GType
+gTypeSVGMaskElement = GType . Object <$> jsg "SVGMaskElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGMatrix".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix Mozilla SVGMatrix documentation>
+newtype SVGMatrix = SVGMatrix { unSVGMatrix :: JSVal }
+
+instance PToJSVal SVGMatrix where
+  pToJSVal = unSVGMatrix
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGMatrix where
+  pFromJSVal = SVGMatrix
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGMatrix where
+  toJSVal = return . unSVGMatrix
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGMatrix where
+  fromJSVal v = fmap SVGMatrix <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGMatrix where
+  makeObject = makeObject . unSVGMatrix
+
+instance IsGObject SVGMatrix where
+  toGObject = GObject . unSVGMatrix
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGMatrix . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGMatrix :: IsGObject obj => obj -> JSM SVGMatrix
+castToSVGMatrix = castTo gTypeSVGMatrix "SVGMatrix"
+
+gTypeSVGMatrix :: JSM GType
+gTypeSVGMatrix = GType . Object <$> jsg "SVGMatrix"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGMetadataElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGMetadataElement Mozilla SVGMetadataElement documentation>
+newtype SVGMetadataElement = SVGMetadataElement { unSVGMetadataElement :: JSVal }
+
+instance PToJSVal SVGMetadataElement where
+  pToJSVal = unSVGMetadataElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGMetadataElement where
+  pFromJSVal = SVGMetadataElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGMetadataElement where
+  toJSVal = return . unSVGMetadataElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGMetadataElement where
+  fromJSVal v = fmap SVGMetadataElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGMetadataElement where
+  makeObject = makeObject . unSVGMetadataElement
+
+instance IsSVGElement SVGMetadataElement
+instance IsElement SVGMetadataElement
+instance IsNode SVGMetadataElement
+instance IsEventTarget SVGMetadataElement
+instance IsGObject SVGMetadataElement where
+  toGObject = GObject . unSVGMetadataElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGMetadataElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGMetadataElement :: IsGObject obj => obj -> JSM SVGMetadataElement
+castToSVGMetadataElement = castTo gTypeSVGMetadataElement "SVGMetadataElement"
+
+gTypeSVGMetadataElement :: JSM GType
+gTypeSVGMetadataElement = GType . Object <$> jsg "SVGMetadataElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGMissingGlyphElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGMissingGlyphElement Mozilla SVGMissingGlyphElement documentation>
+newtype SVGMissingGlyphElement = SVGMissingGlyphElement { unSVGMissingGlyphElement :: JSVal }
+
+instance PToJSVal SVGMissingGlyphElement where
+  pToJSVal = unSVGMissingGlyphElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGMissingGlyphElement where
+  pFromJSVal = SVGMissingGlyphElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGMissingGlyphElement where
+  toJSVal = return . unSVGMissingGlyphElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGMissingGlyphElement where
+  fromJSVal v = fmap SVGMissingGlyphElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGMissingGlyphElement where
+  makeObject = makeObject . unSVGMissingGlyphElement
+
+instance IsSVGElement SVGMissingGlyphElement
+instance IsElement SVGMissingGlyphElement
+instance IsNode SVGMissingGlyphElement
+instance IsEventTarget SVGMissingGlyphElement
+instance IsGObject SVGMissingGlyphElement where
+  toGObject = GObject . unSVGMissingGlyphElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGMissingGlyphElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGMissingGlyphElement :: IsGObject obj => obj -> JSM SVGMissingGlyphElement
+castToSVGMissingGlyphElement = castTo gTypeSVGMissingGlyphElement "SVGMissingGlyphElement"
+
+gTypeSVGMissingGlyphElement :: JSM GType
+gTypeSVGMissingGlyphElement = GType . Object <$> jsg "SVGMissingGlyphElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGNumber".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumber Mozilla SVGNumber documentation>
+newtype SVGNumber = SVGNumber { unSVGNumber :: JSVal }
+
+instance PToJSVal SVGNumber where
+  pToJSVal = unSVGNumber
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGNumber where
+  pFromJSVal = SVGNumber
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGNumber where
+  toJSVal = return . unSVGNumber
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGNumber where
+  fromJSVal v = fmap SVGNumber <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGNumber where
+  makeObject = makeObject . unSVGNumber
+
+instance IsGObject SVGNumber where
+  toGObject = GObject . unSVGNumber
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGNumber . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGNumber :: IsGObject obj => obj -> JSM SVGNumber
+castToSVGNumber = castTo gTypeSVGNumber "SVGNumber"
+
+gTypeSVGNumber :: JSM GType
+gTypeSVGNumber = GType . Object <$> jsg "SVGNumber"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGNumberList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList Mozilla SVGNumberList documentation>
+newtype SVGNumberList = SVGNumberList { unSVGNumberList :: JSVal }
+
+instance PToJSVal SVGNumberList where
+  pToJSVal = unSVGNumberList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGNumberList where
+  pFromJSVal = SVGNumberList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGNumberList where
+  toJSVal = return . unSVGNumberList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGNumberList where
+  fromJSVal v = fmap SVGNumberList <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGNumberList where
+  makeObject = makeObject . unSVGNumberList
+
+instance IsGObject SVGNumberList where
+  toGObject = GObject . unSVGNumberList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGNumberList . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGNumberList :: IsGObject obj => obj -> JSM SVGNumberList
+castToSVGNumberList = castTo gTypeSVGNumberList "SVGNumberList"
+
+gTypeSVGNumberList :: JSM GType
+gTypeSVGNumberList = GType . Object <$> jsg "SVGNumberList"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGPaint".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGColor"
+--     * "Language.Javascript.JSaddle.DOM.CSSValue"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPaint Mozilla SVGPaint documentation>
+newtype SVGPaint = SVGPaint { unSVGPaint :: JSVal }
+
+instance PToJSVal SVGPaint where
+  pToJSVal = unSVGPaint
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPaint where
+  pFromJSVal = SVGPaint
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPaint where
+  toJSVal = return . unSVGPaint
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPaint where
+  fromJSVal v = fmap SVGPaint <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGPaint where
+  makeObject = makeObject . unSVGPaint
+
+instance IsSVGColor SVGPaint
+instance IsCSSValue SVGPaint
+instance IsGObject SVGPaint where
+  toGObject = GObject . unSVGPaint
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPaint . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPaint :: IsGObject obj => obj -> JSM SVGPaint
+castToSVGPaint = castTo gTypeSVGPaint "SVGPaint"
+
+gTypeSVGPaint :: JSM GType
+gTypeSVGPaint = GType . Object <$> jsg "SVGPaint"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGPathElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGGraphicsElement"
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement Mozilla SVGPathElement documentation>
+newtype SVGPathElement = SVGPathElement { unSVGPathElement :: JSVal }
+
+instance PToJSVal SVGPathElement where
+  pToJSVal = unSVGPathElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPathElement where
+  pFromJSVal = SVGPathElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPathElement where
+  toJSVal = return . unSVGPathElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPathElement where
+  fromJSVal v = fmap SVGPathElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGPathElement where
+  makeObject = makeObject . unSVGPathElement
+
+instance IsSVGGraphicsElement SVGPathElement
+instance IsSVGElement SVGPathElement
+instance IsElement SVGPathElement
+instance IsNode SVGPathElement
+instance IsEventTarget SVGPathElement
+instance IsGObject SVGPathElement where
+  toGObject = GObject . unSVGPathElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPathElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPathElement :: IsGObject obj => obj -> JSM SVGPathElement
+castToSVGPathElement = castTo gTypeSVGPathElement "SVGPathElement"
+
+gTypeSVGPathElement :: JSM GType
+gTypeSVGPathElement = GType . Object <$> jsg "SVGPathElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGPathSeg".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSeg Mozilla SVGPathSeg documentation>
+newtype SVGPathSeg = SVGPathSeg { unSVGPathSeg :: JSVal }
+
+instance PToJSVal SVGPathSeg where
+  pToJSVal = unSVGPathSeg
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPathSeg where
+  pFromJSVal = SVGPathSeg
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPathSeg where
+  toJSVal = return . unSVGPathSeg
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPathSeg where
+  fromJSVal v = fmap SVGPathSeg <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGPathSeg where
+  makeObject = makeObject . unSVGPathSeg
+
+class IsGObject o => IsSVGPathSeg o
+toSVGPathSeg :: IsSVGPathSeg o => o -> SVGPathSeg
+toSVGPathSeg = unsafeCastGObject . toGObject
+
+instance IsSVGPathSeg SVGPathSeg
+instance IsGObject SVGPathSeg where
+  toGObject = GObject . unSVGPathSeg
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPathSeg . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPathSeg :: IsGObject obj => obj -> JSM SVGPathSeg
+castToSVGPathSeg = castTo gTypeSVGPathSeg "SVGPathSeg"
+
+gTypeSVGPathSeg :: JSM GType
+gTypeSVGPathSeg = GType . Object <$> jsg "SVGPathSeg"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGPathSegArcAbs".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGPathSeg"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcAbs Mozilla SVGPathSegArcAbs documentation>
+newtype SVGPathSegArcAbs = SVGPathSegArcAbs { unSVGPathSegArcAbs :: JSVal }
+
+instance PToJSVal SVGPathSegArcAbs where
+  pToJSVal = unSVGPathSegArcAbs
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPathSegArcAbs where
+  pFromJSVal = SVGPathSegArcAbs
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPathSegArcAbs where
+  toJSVal = return . unSVGPathSegArcAbs
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPathSegArcAbs where
+  fromJSVal v = fmap SVGPathSegArcAbs <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGPathSegArcAbs where
+  makeObject = makeObject . unSVGPathSegArcAbs
+
+instance IsSVGPathSeg SVGPathSegArcAbs
+instance IsGObject SVGPathSegArcAbs where
+  toGObject = GObject . unSVGPathSegArcAbs
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPathSegArcAbs . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPathSegArcAbs :: IsGObject obj => obj -> JSM SVGPathSegArcAbs
+castToSVGPathSegArcAbs = castTo gTypeSVGPathSegArcAbs "SVGPathSegArcAbs"
+
+gTypeSVGPathSegArcAbs :: JSM GType
+gTypeSVGPathSegArcAbs = GType . Object <$> jsg "SVGPathSegArcAbs"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGPathSegArcRel".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGPathSeg"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcRel Mozilla SVGPathSegArcRel documentation>
+newtype SVGPathSegArcRel = SVGPathSegArcRel { unSVGPathSegArcRel :: JSVal }
+
+instance PToJSVal SVGPathSegArcRel where
+  pToJSVal = unSVGPathSegArcRel
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPathSegArcRel where
+  pFromJSVal = SVGPathSegArcRel
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPathSegArcRel where
+  toJSVal = return . unSVGPathSegArcRel
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPathSegArcRel where
+  fromJSVal v = fmap SVGPathSegArcRel <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGPathSegArcRel where
+  makeObject = makeObject . unSVGPathSegArcRel
+
+instance IsSVGPathSeg SVGPathSegArcRel
+instance IsGObject SVGPathSegArcRel where
+  toGObject = GObject . unSVGPathSegArcRel
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPathSegArcRel . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPathSegArcRel :: IsGObject obj => obj -> JSM SVGPathSegArcRel
+castToSVGPathSegArcRel = castTo gTypeSVGPathSegArcRel "SVGPathSegArcRel"
+
+gTypeSVGPathSegArcRel :: JSM GType
+gTypeSVGPathSegArcRel = GType . Object <$> jsg "SVGPathSegArcRel"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGPathSegClosePath".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGPathSeg"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegClosePath Mozilla SVGPathSegClosePath documentation>
+newtype SVGPathSegClosePath = SVGPathSegClosePath { unSVGPathSegClosePath :: JSVal }
+
+instance PToJSVal SVGPathSegClosePath where
+  pToJSVal = unSVGPathSegClosePath
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPathSegClosePath where
+  pFromJSVal = SVGPathSegClosePath
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPathSegClosePath where
+  toJSVal = return . unSVGPathSegClosePath
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPathSegClosePath where
+  fromJSVal v = fmap SVGPathSegClosePath <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGPathSegClosePath where
+  makeObject = makeObject . unSVGPathSegClosePath
+
+instance IsSVGPathSeg SVGPathSegClosePath
+instance IsGObject SVGPathSegClosePath where
+  toGObject = GObject . unSVGPathSegClosePath
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPathSegClosePath . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPathSegClosePath :: IsGObject obj => obj -> JSM SVGPathSegClosePath
+castToSVGPathSegClosePath = castTo gTypeSVGPathSegClosePath "SVGPathSegClosePath"
+
+gTypeSVGPathSegClosePath :: JSM GType
+gTypeSVGPathSegClosePath = GType . Object <$> jsg "SVGPathSegClosePath"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGPathSegCurvetoCubicAbs".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGPathSeg"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicAbs Mozilla SVGPathSegCurvetoCubicAbs documentation>
+newtype SVGPathSegCurvetoCubicAbs = SVGPathSegCurvetoCubicAbs { unSVGPathSegCurvetoCubicAbs :: JSVal }
+
+instance PToJSVal SVGPathSegCurvetoCubicAbs where
+  pToJSVal = unSVGPathSegCurvetoCubicAbs
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPathSegCurvetoCubicAbs where
+  pFromJSVal = SVGPathSegCurvetoCubicAbs
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPathSegCurvetoCubicAbs where
+  toJSVal = return . unSVGPathSegCurvetoCubicAbs
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPathSegCurvetoCubicAbs where
+  fromJSVal v = fmap SVGPathSegCurvetoCubicAbs <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGPathSegCurvetoCubicAbs where
+  makeObject = makeObject . unSVGPathSegCurvetoCubicAbs
+
+instance IsSVGPathSeg SVGPathSegCurvetoCubicAbs
+instance IsGObject SVGPathSegCurvetoCubicAbs where
+  toGObject = GObject . unSVGPathSegCurvetoCubicAbs
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPathSegCurvetoCubicAbs . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPathSegCurvetoCubicAbs :: IsGObject obj => obj -> JSM SVGPathSegCurvetoCubicAbs
+castToSVGPathSegCurvetoCubicAbs = castTo gTypeSVGPathSegCurvetoCubicAbs "SVGPathSegCurvetoCubicAbs"
+
+gTypeSVGPathSegCurvetoCubicAbs :: JSM GType
+gTypeSVGPathSegCurvetoCubicAbs = GType . Object <$> jsg "SVGPathSegCurvetoCubicAbs"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGPathSegCurvetoCubicRel".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGPathSeg"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicRel Mozilla SVGPathSegCurvetoCubicRel documentation>
+newtype SVGPathSegCurvetoCubicRel = SVGPathSegCurvetoCubicRel { unSVGPathSegCurvetoCubicRel :: JSVal }
+
+instance PToJSVal SVGPathSegCurvetoCubicRel where
+  pToJSVal = unSVGPathSegCurvetoCubicRel
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPathSegCurvetoCubicRel where
+  pFromJSVal = SVGPathSegCurvetoCubicRel
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPathSegCurvetoCubicRel where
+  toJSVal = return . unSVGPathSegCurvetoCubicRel
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPathSegCurvetoCubicRel where
+  fromJSVal v = fmap SVGPathSegCurvetoCubicRel <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGPathSegCurvetoCubicRel where
+  makeObject = makeObject . unSVGPathSegCurvetoCubicRel
+
+instance IsSVGPathSeg SVGPathSegCurvetoCubicRel
+instance IsGObject SVGPathSegCurvetoCubicRel where
+  toGObject = GObject . unSVGPathSegCurvetoCubicRel
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPathSegCurvetoCubicRel . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPathSegCurvetoCubicRel :: IsGObject obj => obj -> JSM SVGPathSegCurvetoCubicRel
+castToSVGPathSegCurvetoCubicRel = castTo gTypeSVGPathSegCurvetoCubicRel "SVGPathSegCurvetoCubicRel"
+
+gTypeSVGPathSegCurvetoCubicRel :: JSM GType
+gTypeSVGPathSegCurvetoCubicRel = GType . Object <$> jsg "SVGPathSegCurvetoCubicRel"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGPathSegCurvetoCubicSmoothAbs".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGPathSeg"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothAbs Mozilla SVGPathSegCurvetoCubicSmoothAbs documentation>
+newtype SVGPathSegCurvetoCubicSmoothAbs = SVGPathSegCurvetoCubicSmoothAbs { unSVGPathSegCurvetoCubicSmoothAbs :: JSVal }
+
+instance PToJSVal SVGPathSegCurvetoCubicSmoothAbs where
+  pToJSVal = unSVGPathSegCurvetoCubicSmoothAbs
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPathSegCurvetoCubicSmoothAbs where
+  pFromJSVal = SVGPathSegCurvetoCubicSmoothAbs
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPathSegCurvetoCubicSmoothAbs where
+  toJSVal = return . unSVGPathSegCurvetoCubicSmoothAbs
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPathSegCurvetoCubicSmoothAbs where
+  fromJSVal v = fmap SVGPathSegCurvetoCubicSmoothAbs <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGPathSegCurvetoCubicSmoothAbs where
+  makeObject = makeObject . unSVGPathSegCurvetoCubicSmoothAbs
+
+instance IsSVGPathSeg SVGPathSegCurvetoCubicSmoothAbs
+instance IsGObject SVGPathSegCurvetoCubicSmoothAbs where
+  toGObject = GObject . unSVGPathSegCurvetoCubicSmoothAbs
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPathSegCurvetoCubicSmoothAbs . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPathSegCurvetoCubicSmoothAbs :: IsGObject obj => obj -> JSM SVGPathSegCurvetoCubicSmoothAbs
+castToSVGPathSegCurvetoCubicSmoothAbs = castTo gTypeSVGPathSegCurvetoCubicSmoothAbs "SVGPathSegCurvetoCubicSmoothAbs"
+
+gTypeSVGPathSegCurvetoCubicSmoothAbs :: JSM GType
+gTypeSVGPathSegCurvetoCubicSmoothAbs = GType . Object <$> jsg "SVGPathSegCurvetoCubicSmoothAbs"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGPathSegCurvetoCubicSmoothRel".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGPathSeg"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothRel Mozilla SVGPathSegCurvetoCubicSmoothRel documentation>
+newtype SVGPathSegCurvetoCubicSmoothRel = SVGPathSegCurvetoCubicSmoothRel { unSVGPathSegCurvetoCubicSmoothRel :: JSVal }
+
+instance PToJSVal SVGPathSegCurvetoCubicSmoothRel where
+  pToJSVal = unSVGPathSegCurvetoCubicSmoothRel
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPathSegCurvetoCubicSmoothRel where
+  pFromJSVal = SVGPathSegCurvetoCubicSmoothRel
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPathSegCurvetoCubicSmoothRel where
+  toJSVal = return . unSVGPathSegCurvetoCubicSmoothRel
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPathSegCurvetoCubicSmoothRel where
+  fromJSVal v = fmap SVGPathSegCurvetoCubicSmoothRel <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGPathSegCurvetoCubicSmoothRel where
+  makeObject = makeObject . unSVGPathSegCurvetoCubicSmoothRel
+
+instance IsSVGPathSeg SVGPathSegCurvetoCubicSmoothRel
+instance IsGObject SVGPathSegCurvetoCubicSmoothRel where
+  toGObject = GObject . unSVGPathSegCurvetoCubicSmoothRel
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPathSegCurvetoCubicSmoothRel . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPathSegCurvetoCubicSmoothRel :: IsGObject obj => obj -> JSM SVGPathSegCurvetoCubicSmoothRel
+castToSVGPathSegCurvetoCubicSmoothRel = castTo gTypeSVGPathSegCurvetoCubicSmoothRel "SVGPathSegCurvetoCubicSmoothRel"
+
+gTypeSVGPathSegCurvetoCubicSmoothRel :: JSM GType
+gTypeSVGPathSegCurvetoCubicSmoothRel = GType . Object <$> jsg "SVGPathSegCurvetoCubicSmoothRel"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGPathSegCurvetoQuadraticAbs".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGPathSeg"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticAbs Mozilla SVGPathSegCurvetoQuadraticAbs documentation>
+newtype SVGPathSegCurvetoQuadraticAbs = SVGPathSegCurvetoQuadraticAbs { unSVGPathSegCurvetoQuadraticAbs :: JSVal }
+
+instance PToJSVal SVGPathSegCurvetoQuadraticAbs where
+  pToJSVal = unSVGPathSegCurvetoQuadraticAbs
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPathSegCurvetoQuadraticAbs where
+  pFromJSVal = SVGPathSegCurvetoQuadraticAbs
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPathSegCurvetoQuadraticAbs where
+  toJSVal = return . unSVGPathSegCurvetoQuadraticAbs
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPathSegCurvetoQuadraticAbs where
+  fromJSVal v = fmap SVGPathSegCurvetoQuadraticAbs <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGPathSegCurvetoQuadraticAbs where
+  makeObject = makeObject . unSVGPathSegCurvetoQuadraticAbs
+
+instance IsSVGPathSeg SVGPathSegCurvetoQuadraticAbs
+instance IsGObject SVGPathSegCurvetoQuadraticAbs where
+  toGObject = GObject . unSVGPathSegCurvetoQuadraticAbs
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPathSegCurvetoQuadraticAbs . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPathSegCurvetoQuadraticAbs :: IsGObject obj => obj -> JSM SVGPathSegCurvetoQuadraticAbs
+castToSVGPathSegCurvetoQuadraticAbs = castTo gTypeSVGPathSegCurvetoQuadraticAbs "SVGPathSegCurvetoQuadraticAbs"
+
+gTypeSVGPathSegCurvetoQuadraticAbs :: JSM GType
+gTypeSVGPathSegCurvetoQuadraticAbs = GType . Object <$> jsg "SVGPathSegCurvetoQuadraticAbs"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGPathSegCurvetoQuadraticRel".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGPathSeg"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticRel Mozilla SVGPathSegCurvetoQuadraticRel documentation>
+newtype SVGPathSegCurvetoQuadraticRel = SVGPathSegCurvetoQuadraticRel { unSVGPathSegCurvetoQuadraticRel :: JSVal }
+
+instance PToJSVal SVGPathSegCurvetoQuadraticRel where
+  pToJSVal = unSVGPathSegCurvetoQuadraticRel
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPathSegCurvetoQuadraticRel where
+  pFromJSVal = SVGPathSegCurvetoQuadraticRel
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPathSegCurvetoQuadraticRel where
+  toJSVal = return . unSVGPathSegCurvetoQuadraticRel
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPathSegCurvetoQuadraticRel where
+  fromJSVal v = fmap SVGPathSegCurvetoQuadraticRel <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGPathSegCurvetoQuadraticRel where
+  makeObject = makeObject . unSVGPathSegCurvetoQuadraticRel
+
+instance IsSVGPathSeg SVGPathSegCurvetoQuadraticRel
+instance IsGObject SVGPathSegCurvetoQuadraticRel where
+  toGObject = GObject . unSVGPathSegCurvetoQuadraticRel
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPathSegCurvetoQuadraticRel . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPathSegCurvetoQuadraticRel :: IsGObject obj => obj -> JSM SVGPathSegCurvetoQuadraticRel
+castToSVGPathSegCurvetoQuadraticRel = castTo gTypeSVGPathSegCurvetoQuadraticRel "SVGPathSegCurvetoQuadraticRel"
+
+gTypeSVGPathSegCurvetoQuadraticRel :: JSM GType
+gTypeSVGPathSegCurvetoQuadraticRel = GType . Object <$> jsg "SVGPathSegCurvetoQuadraticRel"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGPathSegCurvetoQuadraticSmoothAbs".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGPathSeg"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticSmoothAbs Mozilla SVGPathSegCurvetoQuadraticSmoothAbs documentation>
+newtype SVGPathSegCurvetoQuadraticSmoothAbs = SVGPathSegCurvetoQuadraticSmoothAbs { unSVGPathSegCurvetoQuadraticSmoothAbs :: JSVal }
+
+instance PToJSVal SVGPathSegCurvetoQuadraticSmoothAbs where
+  pToJSVal = unSVGPathSegCurvetoQuadraticSmoothAbs
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPathSegCurvetoQuadraticSmoothAbs where
+  pFromJSVal = SVGPathSegCurvetoQuadraticSmoothAbs
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPathSegCurvetoQuadraticSmoothAbs where
+  toJSVal = return . unSVGPathSegCurvetoQuadraticSmoothAbs
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPathSegCurvetoQuadraticSmoothAbs where
+  fromJSVal v = fmap SVGPathSegCurvetoQuadraticSmoothAbs <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGPathSegCurvetoQuadraticSmoothAbs where
+  makeObject = makeObject . unSVGPathSegCurvetoQuadraticSmoothAbs
+
+instance IsSVGPathSeg SVGPathSegCurvetoQuadraticSmoothAbs
+instance IsGObject SVGPathSegCurvetoQuadraticSmoothAbs where
+  toGObject = GObject . unSVGPathSegCurvetoQuadraticSmoothAbs
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPathSegCurvetoQuadraticSmoothAbs . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPathSegCurvetoQuadraticSmoothAbs :: IsGObject obj => obj -> JSM SVGPathSegCurvetoQuadraticSmoothAbs
+castToSVGPathSegCurvetoQuadraticSmoothAbs = castTo gTypeSVGPathSegCurvetoQuadraticSmoothAbs "SVGPathSegCurvetoQuadraticSmoothAbs"
+
+gTypeSVGPathSegCurvetoQuadraticSmoothAbs :: JSM GType
+gTypeSVGPathSegCurvetoQuadraticSmoothAbs = GType . Object <$> jsg "SVGPathSegCurvetoQuadraticSmoothAbs"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGPathSegCurvetoQuadraticSmoothRel".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGPathSeg"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticSmoothRel Mozilla SVGPathSegCurvetoQuadraticSmoothRel documentation>
+newtype SVGPathSegCurvetoQuadraticSmoothRel = SVGPathSegCurvetoQuadraticSmoothRel { unSVGPathSegCurvetoQuadraticSmoothRel :: JSVal }
+
+instance PToJSVal SVGPathSegCurvetoQuadraticSmoothRel where
+  pToJSVal = unSVGPathSegCurvetoQuadraticSmoothRel
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPathSegCurvetoQuadraticSmoothRel where
+  pFromJSVal = SVGPathSegCurvetoQuadraticSmoothRel
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPathSegCurvetoQuadraticSmoothRel where
+  toJSVal = return . unSVGPathSegCurvetoQuadraticSmoothRel
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPathSegCurvetoQuadraticSmoothRel where
+  fromJSVal v = fmap SVGPathSegCurvetoQuadraticSmoothRel <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGPathSegCurvetoQuadraticSmoothRel where
+  makeObject = makeObject . unSVGPathSegCurvetoQuadraticSmoothRel
+
+instance IsSVGPathSeg SVGPathSegCurvetoQuadraticSmoothRel
+instance IsGObject SVGPathSegCurvetoQuadraticSmoothRel where
+  toGObject = GObject . unSVGPathSegCurvetoQuadraticSmoothRel
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPathSegCurvetoQuadraticSmoothRel . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPathSegCurvetoQuadraticSmoothRel :: IsGObject obj => obj -> JSM SVGPathSegCurvetoQuadraticSmoothRel
+castToSVGPathSegCurvetoQuadraticSmoothRel = castTo gTypeSVGPathSegCurvetoQuadraticSmoothRel "SVGPathSegCurvetoQuadraticSmoothRel"
+
+gTypeSVGPathSegCurvetoQuadraticSmoothRel :: JSM GType
+gTypeSVGPathSegCurvetoQuadraticSmoothRel = GType . Object <$> jsg "SVGPathSegCurvetoQuadraticSmoothRel"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGPathSegLinetoAbs".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGPathSeg"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoAbs Mozilla SVGPathSegLinetoAbs documentation>
+newtype SVGPathSegLinetoAbs = SVGPathSegLinetoAbs { unSVGPathSegLinetoAbs :: JSVal }
+
+instance PToJSVal SVGPathSegLinetoAbs where
+  pToJSVal = unSVGPathSegLinetoAbs
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPathSegLinetoAbs where
+  pFromJSVal = SVGPathSegLinetoAbs
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPathSegLinetoAbs where
+  toJSVal = return . unSVGPathSegLinetoAbs
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPathSegLinetoAbs where
+  fromJSVal v = fmap SVGPathSegLinetoAbs <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGPathSegLinetoAbs where
+  makeObject = makeObject . unSVGPathSegLinetoAbs
+
+instance IsSVGPathSeg SVGPathSegLinetoAbs
+instance IsGObject SVGPathSegLinetoAbs where
+  toGObject = GObject . unSVGPathSegLinetoAbs
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPathSegLinetoAbs . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPathSegLinetoAbs :: IsGObject obj => obj -> JSM SVGPathSegLinetoAbs
+castToSVGPathSegLinetoAbs = castTo gTypeSVGPathSegLinetoAbs "SVGPathSegLinetoAbs"
+
+gTypeSVGPathSegLinetoAbs :: JSM GType
+gTypeSVGPathSegLinetoAbs = GType . Object <$> jsg "SVGPathSegLinetoAbs"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGPathSegLinetoHorizontalAbs".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGPathSeg"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoHorizontalAbs Mozilla SVGPathSegLinetoHorizontalAbs documentation>
+newtype SVGPathSegLinetoHorizontalAbs = SVGPathSegLinetoHorizontalAbs { unSVGPathSegLinetoHorizontalAbs :: JSVal }
+
+instance PToJSVal SVGPathSegLinetoHorizontalAbs where
+  pToJSVal = unSVGPathSegLinetoHorizontalAbs
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPathSegLinetoHorizontalAbs where
+  pFromJSVal = SVGPathSegLinetoHorizontalAbs
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPathSegLinetoHorizontalAbs where
+  toJSVal = return . unSVGPathSegLinetoHorizontalAbs
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPathSegLinetoHorizontalAbs where
+  fromJSVal v = fmap SVGPathSegLinetoHorizontalAbs <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGPathSegLinetoHorizontalAbs where
+  makeObject = makeObject . unSVGPathSegLinetoHorizontalAbs
+
+instance IsSVGPathSeg SVGPathSegLinetoHorizontalAbs
+instance IsGObject SVGPathSegLinetoHorizontalAbs where
+  toGObject = GObject . unSVGPathSegLinetoHorizontalAbs
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPathSegLinetoHorizontalAbs . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPathSegLinetoHorizontalAbs :: IsGObject obj => obj -> JSM SVGPathSegLinetoHorizontalAbs
+castToSVGPathSegLinetoHorizontalAbs = castTo gTypeSVGPathSegLinetoHorizontalAbs "SVGPathSegLinetoHorizontalAbs"
+
+gTypeSVGPathSegLinetoHorizontalAbs :: JSM GType
+gTypeSVGPathSegLinetoHorizontalAbs = GType . Object <$> jsg "SVGPathSegLinetoHorizontalAbs"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGPathSegLinetoHorizontalRel".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGPathSeg"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoHorizontalRel Mozilla SVGPathSegLinetoHorizontalRel documentation>
+newtype SVGPathSegLinetoHorizontalRel = SVGPathSegLinetoHorizontalRel { unSVGPathSegLinetoHorizontalRel :: JSVal }
+
+instance PToJSVal SVGPathSegLinetoHorizontalRel where
+  pToJSVal = unSVGPathSegLinetoHorizontalRel
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPathSegLinetoHorizontalRel where
+  pFromJSVal = SVGPathSegLinetoHorizontalRel
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPathSegLinetoHorizontalRel where
+  toJSVal = return . unSVGPathSegLinetoHorizontalRel
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPathSegLinetoHorizontalRel where
+  fromJSVal v = fmap SVGPathSegLinetoHorizontalRel <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGPathSegLinetoHorizontalRel where
+  makeObject = makeObject . unSVGPathSegLinetoHorizontalRel
+
+instance IsSVGPathSeg SVGPathSegLinetoHorizontalRel
+instance IsGObject SVGPathSegLinetoHorizontalRel where
+  toGObject = GObject . unSVGPathSegLinetoHorizontalRel
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPathSegLinetoHorizontalRel . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPathSegLinetoHorizontalRel :: IsGObject obj => obj -> JSM SVGPathSegLinetoHorizontalRel
+castToSVGPathSegLinetoHorizontalRel = castTo gTypeSVGPathSegLinetoHorizontalRel "SVGPathSegLinetoHorizontalRel"
+
+gTypeSVGPathSegLinetoHorizontalRel :: JSM GType
+gTypeSVGPathSegLinetoHorizontalRel = GType . Object <$> jsg "SVGPathSegLinetoHorizontalRel"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGPathSegLinetoRel".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGPathSeg"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoRel Mozilla SVGPathSegLinetoRel documentation>
+newtype SVGPathSegLinetoRel = SVGPathSegLinetoRel { unSVGPathSegLinetoRel :: JSVal }
+
+instance PToJSVal SVGPathSegLinetoRel where
+  pToJSVal = unSVGPathSegLinetoRel
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPathSegLinetoRel where
+  pFromJSVal = SVGPathSegLinetoRel
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPathSegLinetoRel where
+  toJSVal = return . unSVGPathSegLinetoRel
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPathSegLinetoRel where
+  fromJSVal v = fmap SVGPathSegLinetoRel <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGPathSegLinetoRel where
+  makeObject = makeObject . unSVGPathSegLinetoRel
+
+instance IsSVGPathSeg SVGPathSegLinetoRel
+instance IsGObject SVGPathSegLinetoRel where
+  toGObject = GObject . unSVGPathSegLinetoRel
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPathSegLinetoRel . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPathSegLinetoRel :: IsGObject obj => obj -> JSM SVGPathSegLinetoRel
+castToSVGPathSegLinetoRel = castTo gTypeSVGPathSegLinetoRel "SVGPathSegLinetoRel"
+
+gTypeSVGPathSegLinetoRel :: JSM GType
+gTypeSVGPathSegLinetoRel = GType . Object <$> jsg "SVGPathSegLinetoRel"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGPathSegLinetoVerticalAbs".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGPathSeg"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoVerticalAbs Mozilla SVGPathSegLinetoVerticalAbs documentation>
+newtype SVGPathSegLinetoVerticalAbs = SVGPathSegLinetoVerticalAbs { unSVGPathSegLinetoVerticalAbs :: JSVal }
+
+instance PToJSVal SVGPathSegLinetoVerticalAbs where
+  pToJSVal = unSVGPathSegLinetoVerticalAbs
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPathSegLinetoVerticalAbs where
+  pFromJSVal = SVGPathSegLinetoVerticalAbs
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPathSegLinetoVerticalAbs where
+  toJSVal = return . unSVGPathSegLinetoVerticalAbs
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPathSegLinetoVerticalAbs where
+  fromJSVal v = fmap SVGPathSegLinetoVerticalAbs <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGPathSegLinetoVerticalAbs where
+  makeObject = makeObject . unSVGPathSegLinetoVerticalAbs
+
+instance IsSVGPathSeg SVGPathSegLinetoVerticalAbs
+instance IsGObject SVGPathSegLinetoVerticalAbs where
+  toGObject = GObject . unSVGPathSegLinetoVerticalAbs
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPathSegLinetoVerticalAbs . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPathSegLinetoVerticalAbs :: IsGObject obj => obj -> JSM SVGPathSegLinetoVerticalAbs
+castToSVGPathSegLinetoVerticalAbs = castTo gTypeSVGPathSegLinetoVerticalAbs "SVGPathSegLinetoVerticalAbs"
+
+gTypeSVGPathSegLinetoVerticalAbs :: JSM GType
+gTypeSVGPathSegLinetoVerticalAbs = GType . Object <$> jsg "SVGPathSegLinetoVerticalAbs"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGPathSegLinetoVerticalRel".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGPathSeg"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoVerticalRel Mozilla SVGPathSegLinetoVerticalRel documentation>
+newtype SVGPathSegLinetoVerticalRel = SVGPathSegLinetoVerticalRel { unSVGPathSegLinetoVerticalRel :: JSVal }
+
+instance PToJSVal SVGPathSegLinetoVerticalRel where
+  pToJSVal = unSVGPathSegLinetoVerticalRel
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPathSegLinetoVerticalRel where
+  pFromJSVal = SVGPathSegLinetoVerticalRel
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPathSegLinetoVerticalRel where
+  toJSVal = return . unSVGPathSegLinetoVerticalRel
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPathSegLinetoVerticalRel where
+  fromJSVal v = fmap SVGPathSegLinetoVerticalRel <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGPathSegLinetoVerticalRel where
+  makeObject = makeObject . unSVGPathSegLinetoVerticalRel
+
+instance IsSVGPathSeg SVGPathSegLinetoVerticalRel
+instance IsGObject SVGPathSegLinetoVerticalRel where
+  toGObject = GObject . unSVGPathSegLinetoVerticalRel
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPathSegLinetoVerticalRel . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPathSegLinetoVerticalRel :: IsGObject obj => obj -> JSM SVGPathSegLinetoVerticalRel
+castToSVGPathSegLinetoVerticalRel = castTo gTypeSVGPathSegLinetoVerticalRel "SVGPathSegLinetoVerticalRel"
+
+gTypeSVGPathSegLinetoVerticalRel :: JSM GType
+gTypeSVGPathSegLinetoVerticalRel = GType . Object <$> jsg "SVGPathSegLinetoVerticalRel"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGPathSegList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList Mozilla SVGPathSegList documentation>
+newtype SVGPathSegList = SVGPathSegList { unSVGPathSegList :: JSVal }
+
+instance PToJSVal SVGPathSegList where
+  pToJSVal = unSVGPathSegList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPathSegList where
+  pFromJSVal = SVGPathSegList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPathSegList where
+  toJSVal = return . unSVGPathSegList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPathSegList where
+  fromJSVal v = fmap SVGPathSegList <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGPathSegList where
+  makeObject = makeObject . unSVGPathSegList
+
+instance IsGObject SVGPathSegList where
+  toGObject = GObject . unSVGPathSegList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPathSegList . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPathSegList :: IsGObject obj => obj -> JSM SVGPathSegList
+castToSVGPathSegList = castTo gTypeSVGPathSegList "SVGPathSegList"
+
+gTypeSVGPathSegList :: JSM GType
+gTypeSVGPathSegList = GType . Object <$> jsg "SVGPathSegList"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGPathSegMovetoAbs".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGPathSeg"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegMovetoAbs Mozilla SVGPathSegMovetoAbs documentation>
+newtype SVGPathSegMovetoAbs = SVGPathSegMovetoAbs { unSVGPathSegMovetoAbs :: JSVal }
+
+instance PToJSVal SVGPathSegMovetoAbs where
+  pToJSVal = unSVGPathSegMovetoAbs
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPathSegMovetoAbs where
+  pFromJSVal = SVGPathSegMovetoAbs
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPathSegMovetoAbs where
+  toJSVal = return . unSVGPathSegMovetoAbs
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPathSegMovetoAbs where
+  fromJSVal v = fmap SVGPathSegMovetoAbs <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGPathSegMovetoAbs where
+  makeObject = makeObject . unSVGPathSegMovetoAbs
+
+instance IsSVGPathSeg SVGPathSegMovetoAbs
+instance IsGObject SVGPathSegMovetoAbs where
+  toGObject = GObject . unSVGPathSegMovetoAbs
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPathSegMovetoAbs . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPathSegMovetoAbs :: IsGObject obj => obj -> JSM SVGPathSegMovetoAbs
+castToSVGPathSegMovetoAbs = castTo gTypeSVGPathSegMovetoAbs "SVGPathSegMovetoAbs"
+
+gTypeSVGPathSegMovetoAbs :: JSM GType
+gTypeSVGPathSegMovetoAbs = GType . Object <$> jsg "SVGPathSegMovetoAbs"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGPathSegMovetoRel".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGPathSeg"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegMovetoRel Mozilla SVGPathSegMovetoRel documentation>
+newtype SVGPathSegMovetoRel = SVGPathSegMovetoRel { unSVGPathSegMovetoRel :: JSVal }
+
+instance PToJSVal SVGPathSegMovetoRel where
+  pToJSVal = unSVGPathSegMovetoRel
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPathSegMovetoRel where
+  pFromJSVal = SVGPathSegMovetoRel
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPathSegMovetoRel where
+  toJSVal = return . unSVGPathSegMovetoRel
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPathSegMovetoRel where
+  fromJSVal v = fmap SVGPathSegMovetoRel <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGPathSegMovetoRel where
+  makeObject = makeObject . unSVGPathSegMovetoRel
+
+instance IsSVGPathSeg SVGPathSegMovetoRel
+instance IsGObject SVGPathSegMovetoRel where
+  toGObject = GObject . unSVGPathSegMovetoRel
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPathSegMovetoRel . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPathSegMovetoRel :: IsGObject obj => obj -> JSM SVGPathSegMovetoRel
+castToSVGPathSegMovetoRel = castTo gTypeSVGPathSegMovetoRel "SVGPathSegMovetoRel"
+
+gTypeSVGPathSegMovetoRel :: JSM GType
+gTypeSVGPathSegMovetoRel = GType . Object <$> jsg "SVGPathSegMovetoRel"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGPatternElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPatternElement Mozilla SVGPatternElement documentation>
+newtype SVGPatternElement = SVGPatternElement { unSVGPatternElement :: JSVal }
+
+instance PToJSVal SVGPatternElement where
+  pToJSVal = unSVGPatternElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPatternElement where
+  pFromJSVal = SVGPatternElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPatternElement where
+  toJSVal = return . unSVGPatternElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPatternElement where
+  fromJSVal v = fmap SVGPatternElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGPatternElement where
+  makeObject = makeObject . unSVGPatternElement
+
+instance IsSVGElement SVGPatternElement
+instance IsElement SVGPatternElement
+instance IsNode SVGPatternElement
+instance IsEventTarget SVGPatternElement
+instance IsGObject SVGPatternElement where
+  toGObject = GObject . unSVGPatternElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPatternElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPatternElement :: IsGObject obj => obj -> JSM SVGPatternElement
+castToSVGPatternElement = castTo gTypeSVGPatternElement "SVGPatternElement"
+
+gTypeSVGPatternElement :: JSM GType
+gTypeSVGPatternElement = GType . Object <$> jsg "SVGPatternElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGPoint".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPoint Mozilla SVGPoint documentation>
+newtype SVGPoint = SVGPoint { unSVGPoint :: JSVal }
+
+instance PToJSVal SVGPoint where
+  pToJSVal = unSVGPoint
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPoint where
+  pFromJSVal = SVGPoint
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPoint where
+  toJSVal = return . unSVGPoint
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPoint where
+  fromJSVal v = fmap SVGPoint <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGPoint where
+  makeObject = makeObject . unSVGPoint
+
+instance IsGObject SVGPoint where
+  toGObject = GObject . unSVGPoint
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPoint . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPoint :: IsGObject obj => obj -> JSM SVGPoint
+castToSVGPoint = castTo gTypeSVGPoint "SVGPoint"
+
+gTypeSVGPoint :: JSM GType
+gTypeSVGPoint = GType . Object <$> jsg "SVGPoint"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGPointList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList Mozilla SVGPointList documentation>
+newtype SVGPointList = SVGPointList { unSVGPointList :: JSVal }
+
+instance PToJSVal SVGPointList where
+  pToJSVal = unSVGPointList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPointList where
+  pFromJSVal = SVGPointList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPointList where
+  toJSVal = return . unSVGPointList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPointList where
+  fromJSVal v = fmap SVGPointList <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGPointList where
+  makeObject = makeObject . unSVGPointList
+
+instance IsGObject SVGPointList where
+  toGObject = GObject . unSVGPointList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPointList . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPointList :: IsGObject obj => obj -> JSM SVGPointList
+castToSVGPointList = castTo gTypeSVGPointList "SVGPointList"
+
+gTypeSVGPointList :: JSM GType
+gTypeSVGPointList = GType . Object <$> jsg "SVGPointList"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGPolygonElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGGraphicsElement"
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPolygonElement Mozilla SVGPolygonElement documentation>
+newtype SVGPolygonElement = SVGPolygonElement { unSVGPolygonElement :: JSVal }
+
+instance PToJSVal SVGPolygonElement where
+  pToJSVal = unSVGPolygonElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPolygonElement where
+  pFromJSVal = SVGPolygonElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPolygonElement where
+  toJSVal = return . unSVGPolygonElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPolygonElement where
+  fromJSVal v = fmap SVGPolygonElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGPolygonElement where
+  makeObject = makeObject . unSVGPolygonElement
+
+instance IsSVGGraphicsElement SVGPolygonElement
+instance IsSVGElement SVGPolygonElement
+instance IsElement SVGPolygonElement
+instance IsNode SVGPolygonElement
+instance IsEventTarget SVGPolygonElement
+instance IsGObject SVGPolygonElement where
+  toGObject = GObject . unSVGPolygonElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPolygonElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPolygonElement :: IsGObject obj => obj -> JSM SVGPolygonElement
+castToSVGPolygonElement = castTo gTypeSVGPolygonElement "SVGPolygonElement"
+
+gTypeSVGPolygonElement :: JSM GType
+gTypeSVGPolygonElement = GType . Object <$> jsg "SVGPolygonElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGPolylineElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGGraphicsElement"
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPolylineElement Mozilla SVGPolylineElement documentation>
+newtype SVGPolylineElement = SVGPolylineElement { unSVGPolylineElement :: JSVal }
+
+instance PToJSVal SVGPolylineElement where
+  pToJSVal = unSVGPolylineElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPolylineElement where
+  pFromJSVal = SVGPolylineElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPolylineElement where
+  toJSVal = return . unSVGPolylineElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPolylineElement where
+  fromJSVal v = fmap SVGPolylineElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGPolylineElement where
+  makeObject = makeObject . unSVGPolylineElement
+
+instance IsSVGGraphicsElement SVGPolylineElement
+instance IsSVGElement SVGPolylineElement
+instance IsElement SVGPolylineElement
+instance IsNode SVGPolylineElement
+instance IsEventTarget SVGPolylineElement
+instance IsGObject SVGPolylineElement where
+  toGObject = GObject . unSVGPolylineElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPolylineElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPolylineElement :: IsGObject obj => obj -> JSM SVGPolylineElement
+castToSVGPolylineElement = castTo gTypeSVGPolylineElement "SVGPolylineElement"
+
+gTypeSVGPolylineElement :: JSM GType
+gTypeSVGPolylineElement = GType . Object <$> jsg "SVGPolylineElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGPreserveAspectRatio".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPreserveAspectRatio Mozilla SVGPreserveAspectRatio documentation>
+newtype SVGPreserveAspectRatio = SVGPreserveAspectRatio { unSVGPreserveAspectRatio :: JSVal }
+
+instance PToJSVal SVGPreserveAspectRatio where
+  pToJSVal = unSVGPreserveAspectRatio
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPreserveAspectRatio where
+  pFromJSVal = SVGPreserveAspectRatio
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPreserveAspectRatio where
+  toJSVal = return . unSVGPreserveAspectRatio
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPreserveAspectRatio where
+  fromJSVal v = fmap SVGPreserveAspectRatio <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGPreserveAspectRatio where
+  makeObject = makeObject . unSVGPreserveAspectRatio
+
+instance IsGObject SVGPreserveAspectRatio where
+  toGObject = GObject . unSVGPreserveAspectRatio
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPreserveAspectRatio . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPreserveAspectRatio :: IsGObject obj => obj -> JSM SVGPreserveAspectRatio
+castToSVGPreserveAspectRatio = castTo gTypeSVGPreserveAspectRatio "SVGPreserveAspectRatio"
+
+gTypeSVGPreserveAspectRatio :: JSM GType
+gTypeSVGPreserveAspectRatio = GType . Object <$> jsg "SVGPreserveAspectRatio"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGRadialGradientElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGGradientElement"
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGRadialGradientElement Mozilla SVGRadialGradientElement documentation>
+newtype SVGRadialGradientElement = SVGRadialGradientElement { unSVGRadialGradientElement :: JSVal }
+
+instance PToJSVal SVGRadialGradientElement where
+  pToJSVal = unSVGRadialGradientElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGRadialGradientElement where
+  pFromJSVal = SVGRadialGradientElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGRadialGradientElement where
+  toJSVal = return . unSVGRadialGradientElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGRadialGradientElement where
+  fromJSVal v = fmap SVGRadialGradientElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGRadialGradientElement where
+  makeObject = makeObject . unSVGRadialGradientElement
+
+instance IsSVGGradientElement SVGRadialGradientElement
+instance IsSVGElement SVGRadialGradientElement
+instance IsElement SVGRadialGradientElement
+instance IsNode SVGRadialGradientElement
+instance IsEventTarget SVGRadialGradientElement
+instance IsGObject SVGRadialGradientElement where
+  toGObject = GObject . unSVGRadialGradientElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGRadialGradientElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGRadialGradientElement :: IsGObject obj => obj -> JSM SVGRadialGradientElement
+castToSVGRadialGradientElement = castTo gTypeSVGRadialGradientElement "SVGRadialGradientElement"
+
+gTypeSVGRadialGradientElement :: JSM GType
+gTypeSVGRadialGradientElement = GType . Object <$> jsg "SVGRadialGradientElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGRect".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGRect Mozilla SVGRect documentation>
+newtype SVGRect = SVGRect { unSVGRect :: JSVal }
+
+instance PToJSVal SVGRect where
+  pToJSVal = unSVGRect
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGRect where
+  pFromJSVal = SVGRect
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGRect where
+  toJSVal = return . unSVGRect
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGRect where
+  fromJSVal v = fmap SVGRect <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGRect where
+  makeObject = makeObject . unSVGRect
+
+instance IsGObject SVGRect where
+  toGObject = GObject . unSVGRect
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGRect . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGRect :: IsGObject obj => obj -> JSM SVGRect
+castToSVGRect = castTo gTypeSVGRect "SVGRect"
+
+gTypeSVGRect :: JSM GType
+gTypeSVGRect = GType . Object <$> jsg "SVGRect"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGRectElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGGraphicsElement"
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGRectElement Mozilla SVGRectElement documentation>
+newtype SVGRectElement = SVGRectElement { unSVGRectElement :: JSVal }
+
+instance PToJSVal SVGRectElement where
+  pToJSVal = unSVGRectElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGRectElement where
+  pFromJSVal = SVGRectElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGRectElement where
+  toJSVal = return . unSVGRectElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGRectElement where
+  fromJSVal v = fmap SVGRectElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGRectElement where
+  makeObject = makeObject . unSVGRectElement
+
+instance IsSVGGraphicsElement SVGRectElement
+instance IsSVGElement SVGRectElement
+instance IsElement SVGRectElement
+instance IsNode SVGRectElement
+instance IsEventTarget SVGRectElement
+instance IsGObject SVGRectElement where
+  toGObject = GObject . unSVGRectElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGRectElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGRectElement :: IsGObject obj => obj -> JSM SVGRectElement
+castToSVGRectElement = castTo gTypeSVGRectElement "SVGRectElement"
+
+gTypeSVGRectElement :: JSM GType
+gTypeSVGRectElement = GType . Object <$> jsg "SVGRectElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGRenderingIntent".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGRenderingIntent Mozilla SVGRenderingIntent documentation>
+newtype SVGRenderingIntent = SVGRenderingIntent { unSVGRenderingIntent :: JSVal }
+
+instance PToJSVal SVGRenderingIntent where
+  pToJSVal = unSVGRenderingIntent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGRenderingIntent where
+  pFromJSVal = SVGRenderingIntent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGRenderingIntent where
+  toJSVal = return . unSVGRenderingIntent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGRenderingIntent where
+  fromJSVal v = fmap SVGRenderingIntent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGRenderingIntent where
+  makeObject = makeObject . unSVGRenderingIntent
+
+instance IsGObject SVGRenderingIntent where
+  toGObject = GObject . unSVGRenderingIntent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGRenderingIntent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGRenderingIntent :: IsGObject obj => obj -> JSM SVGRenderingIntent
+castToSVGRenderingIntent = castTo gTypeSVGRenderingIntent "SVGRenderingIntent"
+
+gTypeSVGRenderingIntent :: JSM GType
+gTypeSVGRenderingIntent = GType . Object <$> jsg "SVGRenderingIntent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGSVGElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGGraphicsElement"
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement Mozilla SVGSVGElement documentation>
+newtype SVGSVGElement = SVGSVGElement { unSVGSVGElement :: JSVal }
+
+instance PToJSVal SVGSVGElement where
+  pToJSVal = unSVGSVGElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGSVGElement where
+  pFromJSVal = SVGSVGElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGSVGElement where
+  toJSVal = return . unSVGSVGElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGSVGElement where
+  fromJSVal v = fmap SVGSVGElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGSVGElement where
+  makeObject = makeObject . unSVGSVGElement
+
+instance IsSVGGraphicsElement SVGSVGElement
+instance IsSVGElement SVGSVGElement
+instance IsElement SVGSVGElement
+instance IsNode SVGSVGElement
+instance IsEventTarget SVGSVGElement
+instance IsGObject SVGSVGElement where
+  toGObject = GObject . unSVGSVGElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGSVGElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGSVGElement :: IsGObject obj => obj -> JSM SVGSVGElement
+castToSVGSVGElement = castTo gTypeSVGSVGElement "SVGSVGElement"
+
+gTypeSVGSVGElement :: JSM GType
+gTypeSVGSVGElement = GType . Object <$> jsg "SVGSVGElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGScriptElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGScriptElement Mozilla SVGScriptElement documentation>
+newtype SVGScriptElement = SVGScriptElement { unSVGScriptElement :: JSVal }
+
+instance PToJSVal SVGScriptElement where
+  pToJSVal = unSVGScriptElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGScriptElement where
+  pFromJSVal = SVGScriptElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGScriptElement where
+  toJSVal = return . unSVGScriptElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGScriptElement where
+  fromJSVal v = fmap SVGScriptElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGScriptElement where
+  makeObject = makeObject . unSVGScriptElement
+
+instance IsSVGElement SVGScriptElement
+instance IsElement SVGScriptElement
+instance IsNode SVGScriptElement
+instance IsEventTarget SVGScriptElement
+instance IsGObject SVGScriptElement where
+  toGObject = GObject . unSVGScriptElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGScriptElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGScriptElement :: IsGObject obj => obj -> JSM SVGScriptElement
+castToSVGScriptElement = castTo gTypeSVGScriptElement "SVGScriptElement"
+
+gTypeSVGScriptElement :: JSM GType
+gTypeSVGScriptElement = GType . Object <$> jsg "SVGScriptElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGSetElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGAnimationElement"
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGSetElement Mozilla SVGSetElement documentation>
+newtype SVGSetElement = SVGSetElement { unSVGSetElement :: JSVal }
+
+instance PToJSVal SVGSetElement where
+  pToJSVal = unSVGSetElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGSetElement where
+  pFromJSVal = SVGSetElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGSetElement where
+  toJSVal = return . unSVGSetElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGSetElement where
+  fromJSVal v = fmap SVGSetElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGSetElement where
+  makeObject = makeObject . unSVGSetElement
+
+instance IsSVGAnimationElement SVGSetElement
+instance IsSVGElement SVGSetElement
+instance IsElement SVGSetElement
+instance IsNode SVGSetElement
+instance IsEventTarget SVGSetElement
+instance IsGObject SVGSetElement where
+  toGObject = GObject . unSVGSetElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGSetElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGSetElement :: IsGObject obj => obj -> JSM SVGSetElement
+castToSVGSetElement = castTo gTypeSVGSetElement "SVGSetElement"
+
+gTypeSVGSetElement :: JSM GType
+gTypeSVGSetElement = GType . Object <$> jsg "SVGSetElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGStopElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGStopElement Mozilla SVGStopElement documentation>
+newtype SVGStopElement = SVGStopElement { unSVGStopElement :: JSVal }
+
+instance PToJSVal SVGStopElement where
+  pToJSVal = unSVGStopElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGStopElement where
+  pFromJSVal = SVGStopElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGStopElement where
+  toJSVal = return . unSVGStopElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGStopElement where
+  fromJSVal v = fmap SVGStopElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGStopElement where
+  makeObject = makeObject . unSVGStopElement
+
+instance IsSVGElement SVGStopElement
+instance IsElement SVGStopElement
+instance IsNode SVGStopElement
+instance IsEventTarget SVGStopElement
+instance IsGObject SVGStopElement where
+  toGObject = GObject . unSVGStopElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGStopElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGStopElement :: IsGObject obj => obj -> JSM SVGStopElement
+castToSVGStopElement = castTo gTypeSVGStopElement "SVGStopElement"
+
+gTypeSVGStopElement :: JSM GType
+gTypeSVGStopElement = GType . Object <$> jsg "SVGStopElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGStringList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGStringList Mozilla SVGStringList documentation>
+newtype SVGStringList = SVGStringList { unSVGStringList :: JSVal }
+
+instance PToJSVal SVGStringList where
+  pToJSVal = unSVGStringList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGStringList where
+  pFromJSVal = SVGStringList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGStringList where
+  toJSVal = return . unSVGStringList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGStringList where
+  fromJSVal v = fmap SVGStringList <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGStringList where
+  makeObject = makeObject . unSVGStringList
+
+instance IsGObject SVGStringList where
+  toGObject = GObject . unSVGStringList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGStringList . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGStringList :: IsGObject obj => obj -> JSM SVGStringList
+castToSVGStringList = castTo gTypeSVGStringList "SVGStringList"
+
+gTypeSVGStringList :: JSM GType
+gTypeSVGStringList = GType . Object <$> jsg "SVGStringList"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGStyleElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGStyleElement Mozilla SVGStyleElement documentation>
+newtype SVGStyleElement = SVGStyleElement { unSVGStyleElement :: JSVal }
+
+instance PToJSVal SVGStyleElement where
+  pToJSVal = unSVGStyleElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGStyleElement where
+  pFromJSVal = SVGStyleElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGStyleElement where
+  toJSVal = return . unSVGStyleElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGStyleElement where
+  fromJSVal v = fmap SVGStyleElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGStyleElement where
+  makeObject = makeObject . unSVGStyleElement
+
+instance IsSVGElement SVGStyleElement
+instance IsElement SVGStyleElement
+instance IsNode SVGStyleElement
+instance IsEventTarget SVGStyleElement
+instance IsGObject SVGStyleElement where
+  toGObject = GObject . unSVGStyleElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGStyleElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGStyleElement :: IsGObject obj => obj -> JSM SVGStyleElement
+castToSVGStyleElement = castTo gTypeSVGStyleElement "SVGStyleElement"
+
+gTypeSVGStyleElement :: JSM GType
+gTypeSVGStyleElement = GType . Object <$> jsg "SVGStyleElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGSwitchElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGGraphicsElement"
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGSwitchElement Mozilla SVGSwitchElement documentation>
+newtype SVGSwitchElement = SVGSwitchElement { unSVGSwitchElement :: JSVal }
+
+instance PToJSVal SVGSwitchElement where
+  pToJSVal = unSVGSwitchElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGSwitchElement where
+  pFromJSVal = SVGSwitchElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGSwitchElement where
+  toJSVal = return . unSVGSwitchElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGSwitchElement where
+  fromJSVal v = fmap SVGSwitchElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGSwitchElement where
+  makeObject = makeObject . unSVGSwitchElement
+
+instance IsSVGGraphicsElement SVGSwitchElement
+instance IsSVGElement SVGSwitchElement
+instance IsElement SVGSwitchElement
+instance IsNode SVGSwitchElement
+instance IsEventTarget SVGSwitchElement
+instance IsGObject SVGSwitchElement where
+  toGObject = GObject . unSVGSwitchElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGSwitchElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGSwitchElement :: IsGObject obj => obj -> JSM SVGSwitchElement
+castToSVGSwitchElement = castTo gTypeSVGSwitchElement "SVGSwitchElement"
+
+gTypeSVGSwitchElement :: JSM GType
+gTypeSVGSwitchElement = GType . Object <$> jsg "SVGSwitchElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGSymbolElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGSymbolElement Mozilla SVGSymbolElement documentation>
+newtype SVGSymbolElement = SVGSymbolElement { unSVGSymbolElement :: JSVal }
+
+instance PToJSVal SVGSymbolElement where
+  pToJSVal = unSVGSymbolElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGSymbolElement where
+  pFromJSVal = SVGSymbolElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGSymbolElement where
+  toJSVal = return . unSVGSymbolElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGSymbolElement where
+  fromJSVal v = fmap SVGSymbolElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGSymbolElement where
+  makeObject = makeObject . unSVGSymbolElement
+
+instance IsSVGElement SVGSymbolElement
+instance IsElement SVGSymbolElement
+instance IsNode SVGSymbolElement
+instance IsEventTarget SVGSymbolElement
+instance IsGObject SVGSymbolElement where
+  toGObject = GObject . unSVGSymbolElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGSymbolElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGSymbolElement :: IsGObject obj => obj -> JSM SVGSymbolElement
+castToSVGSymbolElement = castTo gTypeSVGSymbolElement "SVGSymbolElement"
+
+gTypeSVGSymbolElement :: JSM GType
+gTypeSVGSymbolElement = GType . Object <$> jsg "SVGSymbolElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGTRefElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGTextPositioningElement"
+--     * "Language.Javascript.JSaddle.DOM.SVGTextContentElement"
+--     * "Language.Javascript.JSaddle.DOM.SVGGraphicsElement"
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGTRefElement Mozilla SVGTRefElement documentation>
+newtype SVGTRefElement = SVGTRefElement { unSVGTRefElement :: JSVal }
+
+instance PToJSVal SVGTRefElement where
+  pToJSVal = unSVGTRefElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGTRefElement where
+  pFromJSVal = SVGTRefElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGTRefElement where
+  toJSVal = return . unSVGTRefElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGTRefElement where
+  fromJSVal v = fmap SVGTRefElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGTRefElement where
+  makeObject = makeObject . unSVGTRefElement
+
+instance IsSVGTextPositioningElement SVGTRefElement
+instance IsSVGTextContentElement SVGTRefElement
+instance IsSVGGraphicsElement SVGTRefElement
+instance IsSVGElement SVGTRefElement
+instance IsElement SVGTRefElement
+instance IsNode SVGTRefElement
+instance IsEventTarget SVGTRefElement
+instance IsGObject SVGTRefElement where
+  toGObject = GObject . unSVGTRefElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGTRefElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGTRefElement :: IsGObject obj => obj -> JSM SVGTRefElement
+castToSVGTRefElement = castTo gTypeSVGTRefElement "SVGTRefElement"
+
+gTypeSVGTRefElement :: JSM GType
+gTypeSVGTRefElement = GType . Object <$> jsg "SVGTRefElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGTSpanElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGTextPositioningElement"
+--     * "Language.Javascript.JSaddle.DOM.SVGTextContentElement"
+--     * "Language.Javascript.JSaddle.DOM.SVGGraphicsElement"
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGTSpanElement Mozilla SVGTSpanElement documentation>
+newtype SVGTSpanElement = SVGTSpanElement { unSVGTSpanElement :: JSVal }
+
+instance PToJSVal SVGTSpanElement where
+  pToJSVal = unSVGTSpanElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGTSpanElement where
+  pFromJSVal = SVGTSpanElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGTSpanElement where
+  toJSVal = return . unSVGTSpanElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGTSpanElement where
+  fromJSVal v = fmap SVGTSpanElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGTSpanElement where
+  makeObject = makeObject . unSVGTSpanElement
+
+instance IsSVGTextPositioningElement SVGTSpanElement
+instance IsSVGTextContentElement SVGTSpanElement
+instance IsSVGGraphicsElement SVGTSpanElement
+instance IsSVGElement SVGTSpanElement
+instance IsElement SVGTSpanElement
+instance IsNode SVGTSpanElement
+instance IsEventTarget SVGTSpanElement
+instance IsGObject SVGTSpanElement where
+  toGObject = GObject . unSVGTSpanElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGTSpanElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGTSpanElement :: IsGObject obj => obj -> JSM SVGTSpanElement
+castToSVGTSpanElement = castTo gTypeSVGTSpanElement "SVGTSpanElement"
+
+gTypeSVGTSpanElement :: JSM GType
+gTypeSVGTSpanElement = GType . Object <$> jsg "SVGTSpanElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGTests".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGTests Mozilla SVGTests documentation>
+newtype SVGTests = SVGTests { unSVGTests :: JSVal }
+
+instance PToJSVal SVGTests where
+  pToJSVal = unSVGTests
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGTests where
+  pFromJSVal = SVGTests
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGTests where
+  toJSVal = return . unSVGTests
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGTests where
+  fromJSVal v = fmap SVGTests <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGTests where
+  makeObject = makeObject . unSVGTests
+
+instance IsGObject SVGTests where
+  toGObject = GObject . unSVGTests
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGTests . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGTests :: IsGObject obj => obj -> JSM SVGTests
+castToSVGTests = castTo gTypeSVGTests "SVGTests"
+
+gTypeSVGTests :: JSM GType
+gTypeSVGTests = GType . Object <$> jsg "SVGTests"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGTextContentElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGGraphicsElement"
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement Mozilla SVGTextContentElement documentation>
+newtype SVGTextContentElement = SVGTextContentElement { unSVGTextContentElement :: JSVal }
+
+instance PToJSVal SVGTextContentElement where
+  pToJSVal = unSVGTextContentElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGTextContentElement where
+  pFromJSVal = SVGTextContentElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGTextContentElement where
+  toJSVal = return . unSVGTextContentElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGTextContentElement where
+  fromJSVal v = fmap SVGTextContentElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGTextContentElement where
+  makeObject = makeObject . unSVGTextContentElement
+
+class IsSVGGraphicsElement o => IsSVGTextContentElement o
+toSVGTextContentElement :: IsSVGTextContentElement o => o -> SVGTextContentElement
+toSVGTextContentElement = unsafeCastGObject . toGObject
+
+instance IsSVGTextContentElement SVGTextContentElement
+instance IsSVGGraphicsElement SVGTextContentElement
+instance IsSVGElement SVGTextContentElement
+instance IsElement SVGTextContentElement
+instance IsNode SVGTextContentElement
+instance IsEventTarget SVGTextContentElement
+instance IsGObject SVGTextContentElement where
+  toGObject = GObject . unSVGTextContentElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGTextContentElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGTextContentElement :: IsGObject obj => obj -> JSM SVGTextContentElement
+castToSVGTextContentElement = castTo gTypeSVGTextContentElement "SVGTextContentElement"
+
+gTypeSVGTextContentElement :: JSM GType
+gTypeSVGTextContentElement = GType . Object <$> jsg "SVGTextContentElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGTextElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGTextPositioningElement"
+--     * "Language.Javascript.JSaddle.DOM.SVGTextContentElement"
+--     * "Language.Javascript.JSaddle.DOM.SVGGraphicsElement"
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextElement Mozilla SVGTextElement documentation>
+newtype SVGTextElement = SVGTextElement { unSVGTextElement :: JSVal }
+
+instance PToJSVal SVGTextElement where
+  pToJSVal = unSVGTextElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGTextElement where
+  pFromJSVal = SVGTextElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGTextElement where
+  toJSVal = return . unSVGTextElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGTextElement where
+  fromJSVal v = fmap SVGTextElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGTextElement where
+  makeObject = makeObject . unSVGTextElement
+
+instance IsSVGTextPositioningElement SVGTextElement
+instance IsSVGTextContentElement SVGTextElement
+instance IsSVGGraphicsElement SVGTextElement
+instance IsSVGElement SVGTextElement
+instance IsElement SVGTextElement
+instance IsNode SVGTextElement
+instance IsEventTarget SVGTextElement
+instance IsGObject SVGTextElement where
+  toGObject = GObject . unSVGTextElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGTextElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGTextElement :: IsGObject obj => obj -> JSM SVGTextElement
+castToSVGTextElement = castTo gTypeSVGTextElement "SVGTextElement"
+
+gTypeSVGTextElement :: JSM GType
+gTypeSVGTextElement = GType . Object <$> jsg "SVGTextElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGTextPathElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGTextContentElement"
+--     * "Language.Javascript.JSaddle.DOM.SVGGraphicsElement"
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextPathElement Mozilla SVGTextPathElement documentation>
+newtype SVGTextPathElement = SVGTextPathElement { unSVGTextPathElement :: JSVal }
+
+instance PToJSVal SVGTextPathElement where
+  pToJSVal = unSVGTextPathElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGTextPathElement where
+  pFromJSVal = SVGTextPathElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGTextPathElement where
+  toJSVal = return . unSVGTextPathElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGTextPathElement where
+  fromJSVal v = fmap SVGTextPathElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGTextPathElement where
+  makeObject = makeObject . unSVGTextPathElement
+
+instance IsSVGTextContentElement SVGTextPathElement
+instance IsSVGGraphicsElement SVGTextPathElement
+instance IsSVGElement SVGTextPathElement
+instance IsElement SVGTextPathElement
+instance IsNode SVGTextPathElement
+instance IsEventTarget SVGTextPathElement
+instance IsGObject SVGTextPathElement where
+  toGObject = GObject . unSVGTextPathElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGTextPathElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGTextPathElement :: IsGObject obj => obj -> JSM SVGTextPathElement
+castToSVGTextPathElement = castTo gTypeSVGTextPathElement "SVGTextPathElement"
+
+gTypeSVGTextPathElement :: JSM GType
+gTypeSVGTextPathElement = GType . Object <$> jsg "SVGTextPathElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGTextPositioningElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGTextContentElement"
+--     * "Language.Javascript.JSaddle.DOM.SVGGraphicsElement"
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextPositioningElement Mozilla SVGTextPositioningElement documentation>
+newtype SVGTextPositioningElement = SVGTextPositioningElement { unSVGTextPositioningElement :: JSVal }
+
+instance PToJSVal SVGTextPositioningElement where
+  pToJSVal = unSVGTextPositioningElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGTextPositioningElement where
+  pFromJSVal = SVGTextPositioningElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGTextPositioningElement where
+  toJSVal = return . unSVGTextPositioningElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGTextPositioningElement where
+  fromJSVal v = fmap SVGTextPositioningElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGTextPositioningElement where
+  makeObject = makeObject . unSVGTextPositioningElement
+
+class IsSVGTextContentElement o => IsSVGTextPositioningElement o
+toSVGTextPositioningElement :: IsSVGTextPositioningElement o => o -> SVGTextPositioningElement
+toSVGTextPositioningElement = unsafeCastGObject . toGObject
+
+instance IsSVGTextPositioningElement SVGTextPositioningElement
+instance IsSVGTextContentElement SVGTextPositioningElement
+instance IsSVGGraphicsElement SVGTextPositioningElement
+instance IsSVGElement SVGTextPositioningElement
+instance IsElement SVGTextPositioningElement
+instance IsNode SVGTextPositioningElement
+instance IsEventTarget SVGTextPositioningElement
+instance IsGObject SVGTextPositioningElement where
+  toGObject = GObject . unSVGTextPositioningElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGTextPositioningElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGTextPositioningElement :: IsGObject obj => obj -> JSM SVGTextPositioningElement
+castToSVGTextPositioningElement = castTo gTypeSVGTextPositioningElement "SVGTextPositioningElement"
+
+gTypeSVGTextPositioningElement :: JSM GType
+gTypeSVGTextPositioningElement = GType . Object <$> jsg "SVGTextPositioningElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGTitleElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGTitleElement Mozilla SVGTitleElement documentation>
+newtype SVGTitleElement = SVGTitleElement { unSVGTitleElement :: JSVal }
+
+instance PToJSVal SVGTitleElement where
+  pToJSVal = unSVGTitleElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGTitleElement where
+  pFromJSVal = SVGTitleElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGTitleElement where
+  toJSVal = return . unSVGTitleElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGTitleElement where
+  fromJSVal v = fmap SVGTitleElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGTitleElement where
+  makeObject = makeObject . unSVGTitleElement
+
+instance IsSVGElement SVGTitleElement
+instance IsElement SVGTitleElement
+instance IsNode SVGTitleElement
+instance IsEventTarget SVGTitleElement
+instance IsGObject SVGTitleElement where
+  toGObject = GObject . unSVGTitleElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGTitleElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGTitleElement :: IsGObject obj => obj -> JSM SVGTitleElement
+castToSVGTitleElement = castTo gTypeSVGTitleElement "SVGTitleElement"
+
+gTypeSVGTitleElement :: JSM GType
+gTypeSVGTitleElement = GType . Object <$> jsg "SVGTitleElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGTransform".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransform Mozilla SVGTransform documentation>
+newtype SVGTransform = SVGTransform { unSVGTransform :: JSVal }
+
+instance PToJSVal SVGTransform where
+  pToJSVal = unSVGTransform
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGTransform where
+  pFromJSVal = SVGTransform
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGTransform where
+  toJSVal = return . unSVGTransform
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGTransform where
+  fromJSVal v = fmap SVGTransform <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGTransform where
+  makeObject = makeObject . unSVGTransform
+
+instance IsGObject SVGTransform where
+  toGObject = GObject . unSVGTransform
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGTransform . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGTransform :: IsGObject obj => obj -> JSM SVGTransform
+castToSVGTransform = castTo gTypeSVGTransform "SVGTransform"
+
+gTypeSVGTransform :: JSM GType
+gTypeSVGTransform = GType . Object <$> jsg "SVGTransform"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGTransformList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList Mozilla SVGTransformList documentation>
+newtype SVGTransformList = SVGTransformList { unSVGTransformList :: JSVal }
+
+instance PToJSVal SVGTransformList where
+  pToJSVal = unSVGTransformList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGTransformList where
+  pFromJSVal = SVGTransformList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGTransformList where
+  toJSVal = return . unSVGTransformList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGTransformList where
+  fromJSVal v = fmap SVGTransformList <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGTransformList where
+  makeObject = makeObject . unSVGTransformList
+
+instance IsGObject SVGTransformList where
+  toGObject = GObject . unSVGTransformList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGTransformList . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGTransformList :: IsGObject obj => obj -> JSM SVGTransformList
+castToSVGTransformList = castTo gTypeSVGTransformList "SVGTransformList"
+
+gTypeSVGTransformList :: JSM GType
+gTypeSVGTransformList = GType . Object <$> jsg "SVGTransformList"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGURIReference".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGURIReference Mozilla SVGURIReference documentation>
+newtype SVGURIReference = SVGURIReference { unSVGURIReference :: JSVal }
+
+instance PToJSVal SVGURIReference where
+  pToJSVal = unSVGURIReference
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGURIReference where
+  pFromJSVal = SVGURIReference
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGURIReference where
+  toJSVal = return . unSVGURIReference
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGURIReference where
+  fromJSVal v = fmap SVGURIReference <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGURIReference where
+  makeObject = makeObject . unSVGURIReference
+
+instance IsGObject SVGURIReference where
+  toGObject = GObject . unSVGURIReference
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGURIReference . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGURIReference :: IsGObject obj => obj -> JSM SVGURIReference
+castToSVGURIReference = castTo gTypeSVGURIReference "SVGURIReference"
+
+gTypeSVGURIReference :: JSM GType
+gTypeSVGURIReference = GType . Object <$> jsg "SVGURIReference"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGUnitTypes".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGUnitTypes Mozilla SVGUnitTypes documentation>
+newtype SVGUnitTypes = SVGUnitTypes { unSVGUnitTypes :: JSVal }
+
+instance PToJSVal SVGUnitTypes where
+  pToJSVal = unSVGUnitTypes
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGUnitTypes where
+  pFromJSVal = SVGUnitTypes
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGUnitTypes where
+  toJSVal = return . unSVGUnitTypes
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGUnitTypes where
+  fromJSVal v = fmap SVGUnitTypes <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGUnitTypes where
+  makeObject = makeObject . unSVGUnitTypes
+
+instance IsGObject SVGUnitTypes where
+  toGObject = GObject . unSVGUnitTypes
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGUnitTypes . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGUnitTypes :: IsGObject obj => obj -> JSM SVGUnitTypes
+castToSVGUnitTypes = castTo gTypeSVGUnitTypes "SVGUnitTypes"
+
+gTypeSVGUnitTypes :: JSM GType
+gTypeSVGUnitTypes = GType . Object <$> jsg "SVGUnitTypes"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGUseElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGGraphicsElement"
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGUseElement Mozilla SVGUseElement documentation>
+newtype SVGUseElement = SVGUseElement { unSVGUseElement :: JSVal }
+
+instance PToJSVal SVGUseElement where
+  pToJSVal = unSVGUseElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGUseElement where
+  pFromJSVal = SVGUseElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGUseElement where
+  toJSVal = return . unSVGUseElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGUseElement where
+  fromJSVal v = fmap SVGUseElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGUseElement where
+  makeObject = makeObject . unSVGUseElement
+
+instance IsSVGGraphicsElement SVGUseElement
+instance IsSVGElement SVGUseElement
+instance IsElement SVGUseElement
+instance IsNode SVGUseElement
+instance IsEventTarget SVGUseElement
+instance IsGObject SVGUseElement where
+  toGObject = GObject . unSVGUseElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGUseElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGUseElement :: IsGObject obj => obj -> JSM SVGUseElement
+castToSVGUseElement = castTo gTypeSVGUseElement "SVGUseElement"
+
+gTypeSVGUseElement :: JSM GType
+gTypeSVGUseElement = GType . Object <$> jsg "SVGUseElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGVKernElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGVKernElement Mozilla SVGVKernElement documentation>
+newtype SVGVKernElement = SVGVKernElement { unSVGVKernElement :: JSVal }
+
+instance PToJSVal SVGVKernElement where
+  pToJSVal = unSVGVKernElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGVKernElement where
+  pFromJSVal = SVGVKernElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGVKernElement where
+  toJSVal = return . unSVGVKernElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGVKernElement where
+  fromJSVal v = fmap SVGVKernElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGVKernElement where
+  makeObject = makeObject . unSVGVKernElement
+
+instance IsSVGElement SVGVKernElement
+instance IsElement SVGVKernElement
+instance IsNode SVGVKernElement
+instance IsEventTarget SVGVKernElement
+instance IsGObject SVGVKernElement where
+  toGObject = GObject . unSVGVKernElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGVKernElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGVKernElement :: IsGObject obj => obj -> JSM SVGVKernElement
+castToSVGVKernElement = castTo gTypeSVGVKernElement "SVGVKernElement"
+
+gTypeSVGVKernElement :: JSM GType
+gTypeSVGVKernElement = GType . Object <$> jsg "SVGVKernElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGViewElement".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.SVGElement"
+--     * "Language.Javascript.JSaddle.DOM.Element"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGViewElement Mozilla SVGViewElement documentation>
+newtype SVGViewElement = SVGViewElement { unSVGViewElement :: JSVal }
+
+instance PToJSVal SVGViewElement where
+  pToJSVal = unSVGViewElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGViewElement where
+  pFromJSVal = SVGViewElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGViewElement where
+  toJSVal = return . unSVGViewElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGViewElement where
+  fromJSVal v = fmap SVGViewElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGViewElement where
+  makeObject = makeObject . unSVGViewElement
+
+instance IsSVGElement SVGViewElement
+instance IsElement SVGViewElement
+instance IsNode SVGViewElement
+instance IsEventTarget SVGViewElement
+instance IsGObject SVGViewElement where
+  toGObject = GObject . unSVGViewElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGViewElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGViewElement :: IsGObject obj => obj -> JSM SVGViewElement
+castToSVGViewElement = castTo gTypeSVGViewElement "SVGViewElement"
+
+gTypeSVGViewElement :: JSM GType
+gTypeSVGViewElement = GType . Object <$> jsg "SVGViewElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGViewSpec".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGViewSpec Mozilla SVGViewSpec documentation>
+newtype SVGViewSpec = SVGViewSpec { unSVGViewSpec :: JSVal }
+
+instance PToJSVal SVGViewSpec where
+  pToJSVal = unSVGViewSpec
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGViewSpec where
+  pFromJSVal = SVGViewSpec
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGViewSpec where
+  toJSVal = return . unSVGViewSpec
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGViewSpec where
+  fromJSVal v = fmap SVGViewSpec <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGViewSpec where
+  makeObject = makeObject . unSVGViewSpec
+
+instance IsGObject SVGViewSpec where
+  toGObject = GObject . unSVGViewSpec
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGViewSpec . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGViewSpec :: IsGObject obj => obj -> JSM SVGViewSpec
+castToSVGViewSpec = castTo gTypeSVGViewSpec "SVGViewSpec"
+
+gTypeSVGViewSpec :: JSM GType
+gTypeSVGViewSpec = GType . Object <$> jsg "SVGViewSpec"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGZoomAndPan".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGZoomAndPan Mozilla SVGZoomAndPan documentation>
+newtype SVGZoomAndPan = SVGZoomAndPan { unSVGZoomAndPan :: JSVal }
+
+instance PToJSVal SVGZoomAndPan where
+  pToJSVal = unSVGZoomAndPan
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGZoomAndPan where
+  pFromJSVal = SVGZoomAndPan
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGZoomAndPan where
+  toJSVal = return . unSVGZoomAndPan
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGZoomAndPan where
+  fromJSVal v = fmap SVGZoomAndPan <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGZoomAndPan where
+  makeObject = makeObject . unSVGZoomAndPan
+
+instance IsGObject SVGZoomAndPan where
+  toGObject = GObject . unSVGZoomAndPan
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGZoomAndPan . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGZoomAndPan :: IsGObject obj => obj -> JSM SVGZoomAndPan
+castToSVGZoomAndPan = castTo gTypeSVGZoomAndPan "SVGZoomAndPan"
+
+gTypeSVGZoomAndPan :: JSM GType
+gTypeSVGZoomAndPan = GType . Object <$> jsg "SVGZoomAndPan"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SVGZoomEvent".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.UIEvent"
+--     * "Language.Javascript.JSaddle.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGZoomEvent Mozilla SVGZoomEvent documentation>
+newtype SVGZoomEvent = SVGZoomEvent { unSVGZoomEvent :: JSVal }
+
+instance PToJSVal SVGZoomEvent where
+  pToJSVal = unSVGZoomEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGZoomEvent where
+  pFromJSVal = SVGZoomEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGZoomEvent where
+  toJSVal = return . unSVGZoomEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGZoomEvent where
+  fromJSVal v = fmap SVGZoomEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGZoomEvent where
+  makeObject = makeObject . unSVGZoomEvent
+
+instance IsUIEvent SVGZoomEvent
+instance IsEvent SVGZoomEvent
+instance IsGObject SVGZoomEvent where
+  toGObject = GObject . unSVGZoomEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGZoomEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGZoomEvent :: IsGObject obj => obj -> JSM SVGZoomEvent
+castToSVGZoomEvent = castTo gTypeSVGZoomEvent "SVGZoomEvent"
+
+gTypeSVGZoomEvent :: JSM GType
+gTypeSVGZoomEvent = GType . Object <$> jsg "SVGZoomEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.Screen".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Screen Mozilla Screen documentation>
+newtype Screen = Screen { unScreen :: JSVal }
+
+instance PToJSVal Screen where
+  pToJSVal = unScreen
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Screen where
+  pFromJSVal = Screen
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Screen where
+  toJSVal = return . unScreen
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Screen where
+  fromJSVal v = fmap Screen <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject Screen where
+  makeObject = makeObject . unScreen
+
+instance IsGObject Screen where
+  toGObject = GObject . unScreen
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Screen . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToScreen :: IsGObject obj => obj -> JSM Screen
+castToScreen = castTo gTypeScreen "Screen"
+
+gTypeScreen :: JSM GType
+gTypeScreen = GType . Object <$> jsg "Screen"
+#else
+type IsScreen o = ScreenClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.ScriptProcessorNode".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.AudioNode"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ScriptProcessorNode Mozilla ScriptProcessorNode documentation>
+newtype ScriptProcessorNode = ScriptProcessorNode { unScriptProcessorNode :: JSVal }
+
+instance PToJSVal ScriptProcessorNode where
+  pToJSVal = unScriptProcessorNode
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ScriptProcessorNode where
+  pFromJSVal = ScriptProcessorNode
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ScriptProcessorNode where
+  toJSVal = return . unScriptProcessorNode
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ScriptProcessorNode where
+  fromJSVal v = fmap ScriptProcessorNode <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject ScriptProcessorNode where
+  makeObject = makeObject . unScriptProcessorNode
+
+instance IsAudioNode ScriptProcessorNode
+instance IsEventTarget ScriptProcessorNode
+instance IsGObject ScriptProcessorNode where
+  toGObject = GObject . unScriptProcessorNode
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = ScriptProcessorNode . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToScriptProcessorNode :: IsGObject obj => obj -> JSM ScriptProcessorNode
+castToScriptProcessorNode = castTo gTypeScriptProcessorNode "ScriptProcessorNode"
+
+gTypeScriptProcessorNode :: JSM GType
+gTypeScriptProcessorNode = GType . Object <$> jsg "ScriptProcessorNode"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.ScriptProfile".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ScriptProfile Mozilla ScriptProfile documentation>
+newtype ScriptProfile = ScriptProfile { unScriptProfile :: JSVal }
+
+instance PToJSVal ScriptProfile where
+  pToJSVal = unScriptProfile
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ScriptProfile where
+  pFromJSVal = ScriptProfile
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ScriptProfile where
+  toJSVal = return . unScriptProfile
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ScriptProfile where
+  fromJSVal v = fmap ScriptProfile <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject ScriptProfile where
+  makeObject = makeObject . unScriptProfile
+
+instance IsGObject ScriptProfile where
+  toGObject = GObject . unScriptProfile
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = ScriptProfile . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToScriptProfile :: IsGObject obj => obj -> JSM ScriptProfile
+castToScriptProfile = castTo gTypeScriptProfile "ScriptProfile"
+
+gTypeScriptProfile :: JSM GType
+gTypeScriptProfile = GType . Object <$> jsg "ScriptProfile"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.ScriptProfileNode".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ScriptProfileNode Mozilla ScriptProfileNode documentation>
+newtype ScriptProfileNode = ScriptProfileNode { unScriptProfileNode :: JSVal }
+
+instance PToJSVal ScriptProfileNode where
+  pToJSVal = unScriptProfileNode
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ScriptProfileNode where
+  pFromJSVal = ScriptProfileNode
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ScriptProfileNode where
+  toJSVal = return . unScriptProfileNode
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ScriptProfileNode where
+  fromJSVal v = fmap ScriptProfileNode <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject ScriptProfileNode where
+  makeObject = makeObject . unScriptProfileNode
+
+instance IsGObject ScriptProfileNode where
+  toGObject = GObject . unScriptProfileNode
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = ScriptProfileNode . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToScriptProfileNode :: IsGObject obj => obj -> JSM ScriptProfileNode
+castToScriptProfileNode = castTo gTypeScriptProfileNode "ScriptProfileNode"
+
+gTypeScriptProfileNode :: JSM GType
+gTypeScriptProfileNode = GType . Object <$> jsg "ScriptProfileNode"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SecurityPolicy".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicy Mozilla SecurityPolicy documentation>
+newtype SecurityPolicy = SecurityPolicy { unSecurityPolicy :: JSVal }
+
+instance PToJSVal SecurityPolicy where
+  pToJSVal = unSecurityPolicy
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SecurityPolicy where
+  pFromJSVal = SecurityPolicy
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SecurityPolicy where
+  toJSVal = return . unSecurityPolicy
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SecurityPolicy where
+  fromJSVal v = fmap SecurityPolicy <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SecurityPolicy where
+  makeObject = makeObject . unSecurityPolicy
+
+instance IsGObject SecurityPolicy where
+  toGObject = GObject . unSecurityPolicy
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SecurityPolicy . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSecurityPolicy :: IsGObject obj => obj -> JSM SecurityPolicy
+castToSecurityPolicy = castTo gTypeSecurityPolicy "SecurityPolicy"
+
+gTypeSecurityPolicy :: JSM GType
+gTypeSecurityPolicy = GType . Object <$> jsg "SecurityPolicy"
+#else
+#ifndef USE_OLD_WEBKIT
+type IsSecurityPolicy o = SecurityPolicyClass o
+#endif
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SecurityPolicyViolationEvent".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicyViolationEvent Mozilla SecurityPolicyViolationEvent documentation>
+newtype SecurityPolicyViolationEvent = SecurityPolicyViolationEvent { unSecurityPolicyViolationEvent :: JSVal }
+
+instance PToJSVal SecurityPolicyViolationEvent where
+  pToJSVal = unSecurityPolicyViolationEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SecurityPolicyViolationEvent where
+  pFromJSVal = SecurityPolicyViolationEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SecurityPolicyViolationEvent where
+  toJSVal = return . unSecurityPolicyViolationEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SecurityPolicyViolationEvent where
+  fromJSVal v = fmap SecurityPolicyViolationEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SecurityPolicyViolationEvent where
+  makeObject = makeObject . unSecurityPolicyViolationEvent
+
+instance IsEvent SecurityPolicyViolationEvent
+instance IsGObject SecurityPolicyViolationEvent where
+  toGObject = GObject . unSecurityPolicyViolationEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SecurityPolicyViolationEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSecurityPolicyViolationEvent :: IsGObject obj => obj -> JSM SecurityPolicyViolationEvent
+castToSecurityPolicyViolationEvent = castTo gTypeSecurityPolicyViolationEvent "SecurityPolicyViolationEvent"
+
+gTypeSecurityPolicyViolationEvent :: JSM GType
+gTypeSecurityPolicyViolationEvent = GType . Object <$> jsg "SecurityPolicyViolationEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.Selection".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Selection Mozilla Selection documentation>
+newtype Selection = Selection { unSelection :: JSVal }
+
+instance PToJSVal Selection where
+  pToJSVal = unSelection
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Selection where
+  pFromJSVal = Selection
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Selection where
+  toJSVal = return . unSelection
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Selection where
+  fromJSVal v = fmap Selection <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject Selection where
+  makeObject = makeObject . unSelection
+
+instance IsGObject Selection where
+  toGObject = GObject . unSelection
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Selection . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSelection :: IsGObject obj => obj -> JSM Selection
+castToSelection = castTo gTypeSelection "Selection"
+
+gTypeSelection :: JSM GType
+gTypeSelection = GType . Object <$> jsg "Selection"
+#else
+type IsSelection o = SelectionClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SourceBuffer".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer Mozilla SourceBuffer documentation>
+newtype SourceBuffer = SourceBuffer { unSourceBuffer :: JSVal }
+
+instance PToJSVal SourceBuffer where
+  pToJSVal = unSourceBuffer
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SourceBuffer where
+  pFromJSVal = SourceBuffer
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SourceBuffer where
+  toJSVal = return . unSourceBuffer
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SourceBuffer where
+  fromJSVal v = fmap SourceBuffer <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SourceBuffer where
+  makeObject = makeObject . unSourceBuffer
+
+instance IsEventTarget SourceBuffer
+instance IsGObject SourceBuffer where
+  toGObject = GObject . unSourceBuffer
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SourceBuffer . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSourceBuffer :: IsGObject obj => obj -> JSM SourceBuffer
+castToSourceBuffer = castTo gTypeSourceBuffer "SourceBuffer"
+
+gTypeSourceBuffer :: JSM GType
+gTypeSourceBuffer = GType . Object <$> jsg "SourceBuffer"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SourceBufferList".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SourceBufferList Mozilla SourceBufferList documentation>
+newtype SourceBufferList = SourceBufferList { unSourceBufferList :: JSVal }
+
+instance PToJSVal SourceBufferList where
+  pToJSVal = unSourceBufferList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SourceBufferList where
+  pFromJSVal = SourceBufferList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SourceBufferList where
+  toJSVal = return . unSourceBufferList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SourceBufferList where
+  fromJSVal v = fmap SourceBufferList <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SourceBufferList where
+  makeObject = makeObject . unSourceBufferList
+
+instance IsEventTarget SourceBufferList
+instance IsGObject SourceBufferList where
+  toGObject = GObject . unSourceBufferList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SourceBufferList . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSourceBufferList :: IsGObject obj => obj -> JSM SourceBufferList
+castToSourceBufferList = castTo gTypeSourceBufferList "SourceBufferList"
+
+gTypeSourceBufferList :: JSM GType
+gTypeSourceBufferList = GType . Object <$> jsg "SourceBufferList"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SourceInfo".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SourceInfo Mozilla SourceInfo documentation>
+newtype SourceInfo = SourceInfo { unSourceInfo :: JSVal }
+
+instance PToJSVal SourceInfo where
+  pToJSVal = unSourceInfo
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SourceInfo where
+  pFromJSVal = SourceInfo
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SourceInfo where
+  toJSVal = return . unSourceInfo
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SourceInfo where
+  fromJSVal v = fmap SourceInfo <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SourceInfo where
+  makeObject = makeObject . unSourceInfo
+
+instance IsGObject SourceInfo where
+  toGObject = GObject . unSourceInfo
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SourceInfo . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSourceInfo :: IsGObject obj => obj -> JSM SourceInfo
+castToSourceInfo = castTo gTypeSourceInfo "SourceInfo"
+
+gTypeSourceInfo :: JSM GType
+gTypeSourceInfo = GType . Object <$> jsg "SourceInfo"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SpeechSynthesis".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesis Mozilla SpeechSynthesis documentation>
+newtype SpeechSynthesis = SpeechSynthesis { unSpeechSynthesis :: JSVal }
+
+instance PToJSVal SpeechSynthesis where
+  pToJSVal = unSpeechSynthesis
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SpeechSynthesis where
+  pFromJSVal = SpeechSynthesis
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SpeechSynthesis where
+  toJSVal = return . unSpeechSynthesis
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SpeechSynthesis where
+  fromJSVal v = fmap SpeechSynthesis <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SpeechSynthesis where
+  makeObject = makeObject . unSpeechSynthesis
+
+instance IsGObject SpeechSynthesis where
+  toGObject = GObject . unSpeechSynthesis
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SpeechSynthesis . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSpeechSynthesis :: IsGObject obj => obj -> JSM SpeechSynthesis
+castToSpeechSynthesis = castTo gTypeSpeechSynthesis "SpeechSynthesis"
+
+gTypeSpeechSynthesis :: JSM GType
+gTypeSpeechSynthesis = GType . Object <$> jsg "SpeechSynthesis"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SpeechSynthesisEvent".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisEvent Mozilla SpeechSynthesisEvent documentation>
+newtype SpeechSynthesisEvent = SpeechSynthesisEvent { unSpeechSynthesisEvent :: JSVal }
+
+instance PToJSVal SpeechSynthesisEvent where
+  pToJSVal = unSpeechSynthesisEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SpeechSynthesisEvent where
+  pFromJSVal = SpeechSynthesisEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SpeechSynthesisEvent where
+  toJSVal = return . unSpeechSynthesisEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SpeechSynthesisEvent where
+  fromJSVal v = fmap SpeechSynthesisEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SpeechSynthesisEvent where
+  makeObject = makeObject . unSpeechSynthesisEvent
+
+instance IsEvent SpeechSynthesisEvent
+instance IsGObject SpeechSynthesisEvent where
+  toGObject = GObject . unSpeechSynthesisEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SpeechSynthesisEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSpeechSynthesisEvent :: IsGObject obj => obj -> JSM SpeechSynthesisEvent
+castToSpeechSynthesisEvent = castTo gTypeSpeechSynthesisEvent "SpeechSynthesisEvent"
+
+gTypeSpeechSynthesisEvent :: JSM GType
+gTypeSpeechSynthesisEvent = GType . Object <$> jsg "SpeechSynthesisEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SpeechSynthesisUtterance".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance Mozilla SpeechSynthesisUtterance documentation>
+newtype SpeechSynthesisUtterance = SpeechSynthesisUtterance { unSpeechSynthesisUtterance :: JSVal }
+
+instance PToJSVal SpeechSynthesisUtterance where
+  pToJSVal = unSpeechSynthesisUtterance
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SpeechSynthesisUtterance where
+  pFromJSVal = SpeechSynthesisUtterance
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SpeechSynthesisUtterance where
+  toJSVal = return . unSpeechSynthesisUtterance
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SpeechSynthesisUtterance where
+  fromJSVal v = fmap SpeechSynthesisUtterance <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SpeechSynthesisUtterance where
+  makeObject = makeObject . unSpeechSynthesisUtterance
+
+instance IsEventTarget SpeechSynthesisUtterance
+instance IsGObject SpeechSynthesisUtterance where
+  toGObject = GObject . unSpeechSynthesisUtterance
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SpeechSynthesisUtterance . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSpeechSynthesisUtterance :: IsGObject obj => obj -> JSM SpeechSynthesisUtterance
+castToSpeechSynthesisUtterance = castTo gTypeSpeechSynthesisUtterance "SpeechSynthesisUtterance"
+
+gTypeSpeechSynthesisUtterance :: JSM GType
+gTypeSpeechSynthesisUtterance = GType . Object <$> jsg "SpeechSynthesisUtterance"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SpeechSynthesisVoice".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisVoice Mozilla SpeechSynthesisVoice documentation>
+newtype SpeechSynthesisVoice = SpeechSynthesisVoice { unSpeechSynthesisVoice :: JSVal }
+
+instance PToJSVal SpeechSynthesisVoice where
+  pToJSVal = unSpeechSynthesisVoice
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SpeechSynthesisVoice where
+  pFromJSVal = SpeechSynthesisVoice
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SpeechSynthesisVoice where
+  toJSVal = return . unSpeechSynthesisVoice
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SpeechSynthesisVoice where
+  fromJSVal v = fmap SpeechSynthesisVoice <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SpeechSynthesisVoice where
+  makeObject = makeObject . unSpeechSynthesisVoice
+
+instance IsGObject SpeechSynthesisVoice where
+  toGObject = GObject . unSpeechSynthesisVoice
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SpeechSynthesisVoice . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSpeechSynthesisVoice :: IsGObject obj => obj -> JSM SpeechSynthesisVoice
+castToSpeechSynthesisVoice = castTo gTypeSpeechSynthesisVoice "SpeechSynthesisVoice"
+
+gTypeSpeechSynthesisVoice :: JSM GType
+gTypeSpeechSynthesisVoice = GType . Object <$> jsg "SpeechSynthesisVoice"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.Storage".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Storage Mozilla Storage documentation>
+newtype Storage = Storage { unStorage :: JSVal }
+
+instance PToJSVal Storage where
+  pToJSVal = unStorage
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Storage where
+  pFromJSVal = Storage
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Storage where
+  toJSVal = return . unStorage
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Storage where
+  fromJSVal v = fmap Storage <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject Storage where
+  makeObject = makeObject . unStorage
+
+instance IsGObject Storage where
+  toGObject = GObject . unStorage
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Storage . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToStorage :: IsGObject obj => obj -> JSM Storage
+castToStorage = castTo gTypeStorage "Storage"
+
+gTypeStorage :: JSM GType
+gTypeStorage = GType . Object <$> jsg "Storage"
+#else
+type IsStorage o = StorageClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.StorageEvent".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/StorageEvent Mozilla StorageEvent documentation>
+newtype StorageEvent = StorageEvent { unStorageEvent :: JSVal }
+
+instance PToJSVal StorageEvent where
+  pToJSVal = unStorageEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal StorageEvent where
+  pFromJSVal = StorageEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal StorageEvent where
+  toJSVal = return . unStorageEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal StorageEvent where
+  fromJSVal v = fmap StorageEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject StorageEvent where
+  makeObject = makeObject . unStorageEvent
+
+instance IsEvent StorageEvent
+instance IsGObject StorageEvent where
+  toGObject = GObject . unStorageEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = StorageEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToStorageEvent :: IsGObject obj => obj -> JSM StorageEvent
+castToStorageEvent = castTo gTypeStorageEvent "StorageEvent"
+
+gTypeStorageEvent :: JSM GType
+gTypeStorageEvent = GType . Object <$> jsg "StorageEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.StorageInfo".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/StorageInfo Mozilla StorageInfo documentation>
+newtype StorageInfo = StorageInfo { unStorageInfo :: JSVal }
+
+instance PToJSVal StorageInfo where
+  pToJSVal = unStorageInfo
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal StorageInfo where
+  pFromJSVal = StorageInfo
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal StorageInfo where
+  toJSVal = return . unStorageInfo
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal StorageInfo where
+  fromJSVal v = fmap StorageInfo <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject StorageInfo where
+  makeObject = makeObject . unStorageInfo
+
+instance IsGObject StorageInfo where
+  toGObject = GObject . unStorageInfo
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = StorageInfo . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToStorageInfo :: IsGObject obj => obj -> JSM StorageInfo
+castToStorageInfo = castTo gTypeStorageInfo "StorageInfo"
+
+gTypeStorageInfo :: JSM GType
+gTypeStorageInfo = GType . Object <$> jsg "StorageInfo"
+#else
+#ifndef USE_OLD_WEBKIT
+type IsStorageInfo o = StorageInfoClass o
+#endif
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.StorageQuota".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/StorageQuota Mozilla StorageQuota documentation>
+newtype StorageQuota = StorageQuota { unStorageQuota :: JSVal }
+
+instance PToJSVal StorageQuota where
+  pToJSVal = unStorageQuota
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal StorageQuota where
+  pFromJSVal = StorageQuota
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal StorageQuota where
+  toJSVal = return . unStorageQuota
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal StorageQuota where
+  fromJSVal v = fmap StorageQuota <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject StorageQuota where
+  makeObject = makeObject . unStorageQuota
+
+instance IsGObject StorageQuota where
+  toGObject = GObject . unStorageQuota
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = StorageQuota . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToStorageQuota :: IsGObject obj => obj -> JSM StorageQuota
+castToStorageQuota = castTo gTypeStorageQuota "StorageQuota"
+
+gTypeStorageQuota :: JSM GType
+gTypeStorageQuota = GType . Object <$> jsg "StorageQuota"
+#else
+#ifndef USE_OLD_WEBKIT
+type IsStorageQuota o = StorageQuotaClass o
+#endif
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.StyleMedia".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/StyleMedia Mozilla StyleMedia documentation>
+newtype StyleMedia = StyleMedia { unStyleMedia :: JSVal }
+
+instance PToJSVal StyleMedia where
+  pToJSVal = unStyleMedia
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal StyleMedia where
+  pFromJSVal = StyleMedia
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal StyleMedia where
+  toJSVal = return . unStyleMedia
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal StyleMedia where
+  fromJSVal v = fmap StyleMedia <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject StyleMedia where
+  makeObject = makeObject . unStyleMedia
+
+instance IsGObject StyleMedia where
+  toGObject = GObject . unStyleMedia
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = StyleMedia . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToStyleMedia :: IsGObject obj => obj -> JSM StyleMedia
+castToStyleMedia = castTo gTypeStyleMedia "StyleMedia"
+
+gTypeStyleMedia :: JSM GType
+gTypeStyleMedia = GType . Object <$> jsg "StyleMedia"
+#else
+type IsStyleMedia o = StyleMediaClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.StyleSheet".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet Mozilla StyleSheet documentation>
+newtype StyleSheet = StyleSheet { unStyleSheet :: JSVal }
+
+instance PToJSVal StyleSheet where
+  pToJSVal = unStyleSheet
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal StyleSheet where
+  pFromJSVal = StyleSheet
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal StyleSheet where
+  toJSVal = return . unStyleSheet
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal StyleSheet where
+  fromJSVal v = fmap StyleSheet <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject StyleSheet where
+  makeObject = makeObject . unStyleSheet
+
+class IsGObject o => IsStyleSheet o
+toStyleSheet :: IsStyleSheet o => o -> StyleSheet
+toStyleSheet = unsafeCastGObject . toGObject
+
+instance IsStyleSheet StyleSheet
+instance IsGObject StyleSheet where
+  toGObject = GObject . unStyleSheet
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = StyleSheet . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToStyleSheet :: IsGObject obj => obj -> JSM StyleSheet
+castToStyleSheet = castTo gTypeStyleSheet "StyleSheet"
+
+gTypeStyleSheet :: JSM GType
+gTypeStyleSheet = GType . Object <$> jsg "StyleSheet"
+#else
+type IsStyleSheet o = StyleSheetClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.StyleSheetList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheetList Mozilla StyleSheetList documentation>
+newtype StyleSheetList = StyleSheetList { unStyleSheetList :: JSVal }
+
+instance PToJSVal StyleSheetList where
+  pToJSVal = unStyleSheetList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal StyleSheetList where
+  pFromJSVal = StyleSheetList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal StyleSheetList where
+  toJSVal = return . unStyleSheetList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal StyleSheetList where
+  fromJSVal v = fmap StyleSheetList <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject StyleSheetList where
+  makeObject = makeObject . unStyleSheetList
+
+instance IsGObject StyleSheetList where
+  toGObject = GObject . unStyleSheetList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = StyleSheetList . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToStyleSheetList :: IsGObject obj => obj -> JSM StyleSheetList
+castToStyleSheetList = castTo gTypeStyleSheetList "StyleSheetList"
+
+gTypeStyleSheetList :: JSM GType
+gTypeStyleSheetList = GType . Object <$> jsg "StyleSheetList"
+#else
+type IsStyleSheetList o = StyleSheetListClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.SubtleCrypto".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto Mozilla WebKitSubtleCrypto documentation>
+newtype SubtleCrypto = SubtleCrypto { unSubtleCrypto :: JSVal }
+
+instance PToJSVal SubtleCrypto where
+  pToJSVal = unSubtleCrypto
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SubtleCrypto where
+  pFromJSVal = SubtleCrypto
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SubtleCrypto where
+  toJSVal = return . unSubtleCrypto
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SubtleCrypto where
+  fromJSVal v = fmap SubtleCrypto <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SubtleCrypto where
+  makeObject = makeObject . unSubtleCrypto
+
+instance IsGObject SubtleCrypto where
+  toGObject = GObject . unSubtleCrypto
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SubtleCrypto . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSubtleCrypto :: IsGObject obj => obj -> JSM SubtleCrypto
+castToSubtleCrypto = castTo gTypeSubtleCrypto "SubtleCrypto"
+
+gTypeSubtleCrypto :: JSM GType
+gTypeSubtleCrypto = GType . Object <$> jsg "WebKitSubtleCrypto"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.Text".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.CharacterData"
+--     * "Language.Javascript.JSaddle.DOM.Node"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Text Mozilla Text documentation>
+newtype Text = Text { unText :: JSVal }
+
+instance PToJSVal Text where
+  pToJSVal = unText
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Text where
+  pFromJSVal = Text
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Text where
+  toJSVal = return . unText
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Text where
+  fromJSVal v = fmap Text <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject Text where
+  makeObject = makeObject . unText
+
+class IsCharacterData o => IsText o
+toText :: IsText o => o -> Text
+toText = unsafeCastGObject . toGObject
+
+instance IsText Text
+instance IsCharacterData Text
+instance IsNode Text
+instance IsEventTarget Text
+instance IsGObject Text where
+  toGObject = GObject . unText
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Text . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToText :: IsGObject obj => obj -> JSM Text
+castToText = castTo gTypeText "Text"
+
+gTypeText :: JSM GType
+gTypeText = GType . Object <$> jsg "Text"
+#else
+type IsText o = TextClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.TextEvent".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.UIEvent"
+--     * "Language.Javascript.JSaddle.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/TextEvent Mozilla TextEvent documentation>
+newtype TextEvent = TextEvent { unTextEvent :: JSVal }
+
+instance PToJSVal TextEvent where
+  pToJSVal = unTextEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal TextEvent where
+  pFromJSVal = TextEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal TextEvent where
+  toJSVal = return . unTextEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal TextEvent where
+  fromJSVal v = fmap TextEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject TextEvent where
+  makeObject = makeObject . unTextEvent
+
+instance IsUIEvent TextEvent
+instance IsEvent TextEvent
+instance IsGObject TextEvent where
+  toGObject = GObject . unTextEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = TextEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToTextEvent :: IsGObject obj => obj -> JSM TextEvent
+castToTextEvent = castTo gTypeTextEvent "TextEvent"
+
+gTypeTextEvent :: JSM GType
+gTypeTextEvent = GType . Object <$> jsg "TextEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.TextMetrics".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/TextMetrics Mozilla TextMetrics documentation>
+newtype TextMetrics = TextMetrics { unTextMetrics :: JSVal }
+
+instance PToJSVal TextMetrics where
+  pToJSVal = unTextMetrics
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal TextMetrics where
+  pFromJSVal = TextMetrics
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal TextMetrics where
+  toJSVal = return . unTextMetrics
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal TextMetrics where
+  fromJSVal v = fmap TextMetrics <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject TextMetrics where
+  makeObject = makeObject . unTextMetrics
+
+instance IsGObject TextMetrics where
+  toGObject = GObject . unTextMetrics
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = TextMetrics . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToTextMetrics :: IsGObject obj => obj -> JSM TextMetrics
+castToTextMetrics = castTo gTypeTextMetrics "TextMetrics"
+
+gTypeTextMetrics :: JSM GType
+gTypeTextMetrics = GType . Object <$> jsg "TextMetrics"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.TextTrack".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack Mozilla TextTrack documentation>
+newtype TextTrack = TextTrack { unTextTrack :: JSVal }
+
+instance PToJSVal TextTrack where
+  pToJSVal = unTextTrack
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal TextTrack where
+  pFromJSVal = TextTrack
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal TextTrack where
+  toJSVal = return . unTextTrack
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal TextTrack where
+  fromJSVal v = fmap TextTrack <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject TextTrack where
+  makeObject = makeObject . unTextTrack
+
+instance IsEventTarget TextTrack
+instance IsGObject TextTrack where
+  toGObject = GObject . unTextTrack
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = TextTrack . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToTextTrack :: IsGObject obj => obj -> JSM TextTrack
+castToTextTrack = castTo gTypeTextTrack "TextTrack"
+
+gTypeTextTrack :: JSM GType
+gTypeTextTrack = GType . Object <$> jsg "TextTrack"
+#else
+#ifndef USE_OLD_WEBKIT
+type IsTextTrack o = TextTrackClass o
+#endif
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.TextTrackCue".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCue Mozilla TextTrackCue documentation>
+newtype TextTrackCue = TextTrackCue { unTextTrackCue :: JSVal }
+
+instance PToJSVal TextTrackCue where
+  pToJSVal = unTextTrackCue
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal TextTrackCue where
+  pFromJSVal = TextTrackCue
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal TextTrackCue where
+  toJSVal = return . unTextTrackCue
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal TextTrackCue where
+  fromJSVal v = fmap TextTrackCue <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject TextTrackCue where
+  makeObject = makeObject . unTextTrackCue
+
+class IsEventTarget o => IsTextTrackCue o
+toTextTrackCue :: IsTextTrackCue o => o -> TextTrackCue
+toTextTrackCue = unsafeCastGObject . toGObject
+
+instance IsTextTrackCue TextTrackCue
+instance IsEventTarget TextTrackCue
+instance IsGObject TextTrackCue where
+  toGObject = GObject . unTextTrackCue
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = TextTrackCue . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToTextTrackCue :: IsGObject obj => obj -> JSM TextTrackCue
+castToTextTrackCue = castTo gTypeTextTrackCue "TextTrackCue"
+
+gTypeTextTrackCue :: JSM GType
+gTypeTextTrackCue = GType . Object <$> jsg "TextTrackCue"
+#else
+#ifndef USE_OLD_WEBKIT
+type IsTextTrackCue o = TextTrackCueClass o
+#endif
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.TextTrackCueList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCueList Mozilla TextTrackCueList documentation>
+newtype TextTrackCueList = TextTrackCueList { unTextTrackCueList :: JSVal }
+
+instance PToJSVal TextTrackCueList where
+  pToJSVal = unTextTrackCueList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal TextTrackCueList where
+  pFromJSVal = TextTrackCueList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal TextTrackCueList where
+  toJSVal = return . unTextTrackCueList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal TextTrackCueList where
+  fromJSVal v = fmap TextTrackCueList <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject TextTrackCueList where
+  makeObject = makeObject . unTextTrackCueList
+
+instance IsGObject TextTrackCueList where
+  toGObject = GObject . unTextTrackCueList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = TextTrackCueList . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToTextTrackCueList :: IsGObject obj => obj -> JSM TextTrackCueList
+castToTextTrackCueList = castTo gTypeTextTrackCueList "TextTrackCueList"
+
+gTypeTextTrackCueList :: JSM GType
+gTypeTextTrackCueList = GType . Object <$> jsg "TextTrackCueList"
+#else
+#ifndef USE_OLD_WEBKIT
+type IsTextTrackCueList o = TextTrackCueListClass o
+#endif
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.TextTrackList".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackList Mozilla TextTrackList documentation>
+newtype TextTrackList = TextTrackList { unTextTrackList :: JSVal }
+
+instance PToJSVal TextTrackList where
+  pToJSVal = unTextTrackList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal TextTrackList where
+  pFromJSVal = TextTrackList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal TextTrackList where
+  toJSVal = return . unTextTrackList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal TextTrackList where
+  fromJSVal v = fmap TextTrackList <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject TextTrackList where
+  makeObject = makeObject . unTextTrackList
+
+instance IsEventTarget TextTrackList
+instance IsGObject TextTrackList where
+  toGObject = GObject . unTextTrackList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = TextTrackList . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToTextTrackList :: IsGObject obj => obj -> JSM TextTrackList
+castToTextTrackList = castTo gTypeTextTrackList "TextTrackList"
+
+gTypeTextTrackList :: JSM GType
+gTypeTextTrackList = GType . Object <$> jsg "TextTrackList"
+#else
+#ifndef USE_OLD_WEBKIT
+type IsTextTrackList o = TextTrackListClass o
+#endif
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.TimeRanges".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/TimeRanges Mozilla TimeRanges documentation>
+newtype TimeRanges = TimeRanges { unTimeRanges :: JSVal }
+
+instance PToJSVal TimeRanges where
+  pToJSVal = unTimeRanges
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal TimeRanges where
+  pFromJSVal = TimeRanges
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal TimeRanges where
+  toJSVal = return . unTimeRanges
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal TimeRanges where
+  fromJSVal v = fmap TimeRanges <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject TimeRanges where
+  makeObject = makeObject . unTimeRanges
+
+instance IsGObject TimeRanges where
+  toGObject = GObject . unTimeRanges
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = TimeRanges . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToTimeRanges :: IsGObject obj => obj -> JSM TimeRanges
+castToTimeRanges = castTo gTypeTimeRanges "TimeRanges"
+
+gTypeTimeRanges :: JSM GType
+gTypeTimeRanges = GType . Object <$> jsg "TimeRanges"
+#else
+type IsTimeRanges o = TimeRangesClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.Touch".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Touch Mozilla Touch documentation>
+newtype Touch = Touch { unTouch :: JSVal }
+
+instance PToJSVal Touch where
+  pToJSVal = unTouch
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Touch where
+  pFromJSVal = Touch
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Touch where
+  toJSVal = return . unTouch
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Touch where
+  fromJSVal v = fmap Touch <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject Touch where
+  makeObject = makeObject . unTouch
+
+instance IsGObject Touch where
+  toGObject = GObject . unTouch
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Touch . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToTouch :: IsGObject obj => obj -> JSM Touch
+castToTouch = castTo gTypeTouch "Touch"
+
+gTypeTouch :: JSM GType
+gTypeTouch = GType . Object <$> jsg "Touch"
+#else
+#ifndef USE_OLD_WEBKIT
+type IsTouch o = TouchClass o
+#endif
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.TouchEvent".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.UIEvent"
+--     * "Language.Javascript.JSaddle.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent Mozilla TouchEvent documentation>
+newtype TouchEvent = TouchEvent { unTouchEvent :: JSVal }
+
+instance PToJSVal TouchEvent where
+  pToJSVal = unTouchEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal TouchEvent where
+  pFromJSVal = TouchEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal TouchEvent where
+  toJSVal = return . unTouchEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal TouchEvent where
+  fromJSVal v = fmap TouchEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject TouchEvent where
+  makeObject = makeObject . unTouchEvent
+
+instance IsUIEvent TouchEvent
+instance IsEvent TouchEvent
+instance IsGObject TouchEvent where
+  toGObject = GObject . unTouchEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = TouchEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToTouchEvent :: IsGObject obj => obj -> JSM TouchEvent
+castToTouchEvent = castTo gTypeTouchEvent "TouchEvent"
+
+gTypeTouchEvent :: JSM GType
+gTypeTouchEvent = GType . Object <$> jsg "TouchEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.TouchList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/TouchList Mozilla TouchList documentation>
+newtype TouchList = TouchList { unTouchList :: JSVal }
+
+instance PToJSVal TouchList where
+  pToJSVal = unTouchList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal TouchList where
+  pFromJSVal = TouchList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal TouchList where
+  toJSVal = return . unTouchList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal TouchList where
+  fromJSVal v = fmap TouchList <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject TouchList where
+  makeObject = makeObject . unTouchList
+
+instance IsGObject TouchList where
+  toGObject = GObject . unTouchList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = TouchList . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToTouchList :: IsGObject obj => obj -> JSM TouchList
+castToTouchList = castTo gTypeTouchList "TouchList"
+
+gTypeTouchList :: JSM GType
+gTypeTouchList = GType . Object <$> jsg "TouchList"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.TrackEvent".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/TrackEvent Mozilla TrackEvent documentation>
+newtype TrackEvent = TrackEvent { unTrackEvent :: JSVal }
+
+instance PToJSVal TrackEvent where
+  pToJSVal = unTrackEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal TrackEvent where
+  pFromJSVal = TrackEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal TrackEvent where
+  toJSVal = return . unTrackEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal TrackEvent where
+  fromJSVal v = fmap TrackEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject TrackEvent where
+  makeObject = makeObject . unTrackEvent
+
+instance IsEvent TrackEvent
+instance IsGObject TrackEvent where
+  toGObject = GObject . unTrackEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = TrackEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToTrackEvent :: IsGObject obj => obj -> JSM TrackEvent
+castToTrackEvent = castTo gTypeTrackEvent "TrackEvent"
+
+gTypeTrackEvent :: JSM GType
+gTypeTrackEvent = GType . Object <$> jsg "TrackEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.TransitionEvent".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/TransitionEvent Mozilla TransitionEvent documentation>
+newtype TransitionEvent = TransitionEvent { unTransitionEvent :: JSVal }
+
+instance PToJSVal TransitionEvent where
+  pToJSVal = unTransitionEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal TransitionEvent where
+  pFromJSVal = TransitionEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal TransitionEvent where
+  toJSVal = return . unTransitionEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal TransitionEvent where
+  fromJSVal v = fmap TransitionEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject TransitionEvent where
+  makeObject = makeObject . unTransitionEvent
+
+instance IsEvent TransitionEvent
+instance IsGObject TransitionEvent where
+  toGObject = GObject . unTransitionEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = TransitionEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToTransitionEvent :: IsGObject obj => obj -> JSM TransitionEvent
+castToTransitionEvent = castTo gTypeTransitionEvent "TransitionEvent"
+
+gTypeTransitionEvent :: JSM GType
+gTypeTransitionEvent = GType . Object <$> jsg "TransitionEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.TreeWalker".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker Mozilla TreeWalker documentation>
+newtype TreeWalker = TreeWalker { unTreeWalker :: JSVal }
+
+instance PToJSVal TreeWalker where
+  pToJSVal = unTreeWalker
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal TreeWalker where
+  pFromJSVal = TreeWalker
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal TreeWalker where
+  toJSVal = return . unTreeWalker
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal TreeWalker where
+  fromJSVal v = fmap TreeWalker <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject TreeWalker where
+  makeObject = makeObject . unTreeWalker
+
+instance IsGObject TreeWalker where
+  toGObject = GObject . unTreeWalker
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = TreeWalker . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToTreeWalker :: IsGObject obj => obj -> JSM TreeWalker
+castToTreeWalker = castTo gTypeTreeWalker "TreeWalker"
+
+gTypeTreeWalker :: JSM GType
+gTypeTreeWalker = GType . Object <$> jsg "TreeWalker"
+#else
+type IsTreeWalker o = TreeWalkerClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.TypeConversions".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/TypeConversions Mozilla TypeConversions documentation>
+newtype TypeConversions = TypeConversions { unTypeConversions :: JSVal }
+
+instance PToJSVal TypeConversions where
+  pToJSVal = unTypeConversions
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal TypeConversions where
+  pFromJSVal = TypeConversions
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal TypeConversions where
+  toJSVal = return . unTypeConversions
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal TypeConversions where
+  fromJSVal v = fmap TypeConversions <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject TypeConversions where
+  makeObject = makeObject . unTypeConversions
+
+instance IsGObject TypeConversions where
+  toGObject = GObject . unTypeConversions
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = TypeConversions . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToTypeConversions :: IsGObject obj => obj -> JSM TypeConversions
+castToTypeConversions = castTo gTypeTypeConversions "TypeConversions"
+
+gTypeTypeConversions :: JSM GType
+gTypeTypeConversions = GType . Object <$> jsg "TypeConversions"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.UIEvent".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/UIEvent Mozilla UIEvent documentation>
+newtype UIEvent = UIEvent { unUIEvent :: JSVal }
+
+instance PToJSVal UIEvent where
+  pToJSVal = unUIEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal UIEvent where
+  pFromJSVal = UIEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal UIEvent where
+  toJSVal = return . unUIEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal UIEvent where
+  fromJSVal v = fmap UIEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject UIEvent where
+  makeObject = makeObject . unUIEvent
+
+class IsEvent o => IsUIEvent o
+toUIEvent :: IsUIEvent o => o -> UIEvent
+toUIEvent = unsafeCastGObject . toGObject
+
+instance IsUIEvent UIEvent
+instance IsEvent UIEvent
+instance IsGObject UIEvent where
+  toGObject = GObject . unUIEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = UIEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToUIEvent :: IsGObject obj => obj -> JSM UIEvent
+castToUIEvent = castTo gTypeUIEvent "UIEvent"
+
+gTypeUIEvent :: JSM GType
+gTypeUIEvent = GType . Object <$> jsg "UIEvent"
+#else
+type IsUIEvent o = UIEventClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.UIRequestEvent".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.UIEvent"
+--     * "Language.Javascript.JSaddle.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/UIRequestEvent Mozilla UIRequestEvent documentation>
+newtype UIRequestEvent = UIRequestEvent { unUIRequestEvent :: JSVal }
+
+instance PToJSVal UIRequestEvent where
+  pToJSVal = unUIRequestEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal UIRequestEvent where
+  pFromJSVal = UIRequestEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal UIRequestEvent where
+  toJSVal = return . unUIRequestEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal UIRequestEvent where
+  fromJSVal v = fmap UIRequestEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject UIRequestEvent where
+  makeObject = makeObject . unUIRequestEvent
+
+instance IsUIEvent UIRequestEvent
+instance IsEvent UIRequestEvent
+instance IsGObject UIRequestEvent where
+  toGObject = GObject . unUIRequestEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = UIRequestEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToUIRequestEvent :: IsGObject obj => obj -> JSM UIRequestEvent
+castToUIRequestEvent = castTo gTypeUIRequestEvent "UIRequestEvent"
+
+gTypeUIRequestEvent :: JSM GType
+gTypeUIRequestEvent = GType . Object <$> jsg "UIRequestEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.URL".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/URL Mozilla URL documentation>
+newtype URL = URL { unURL :: JSVal }
+
+instance PToJSVal URL where
+  pToJSVal = unURL
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal URL where
+  pFromJSVal = URL
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal URL where
+  toJSVal = return . unURL
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal URL where
+  fromJSVal v = fmap URL <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject URL where
+  makeObject = makeObject . unURL
+
+instance IsGObject URL where
+  toGObject = GObject . unURL
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = URL . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToURL :: IsGObject obj => obj -> JSM URL
+castToURL = castTo gTypeURL "URL"
+
+gTypeURL :: JSM GType
+gTypeURL = GType . Object <$> jsg "URL"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.URLUtils".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/URLUtils Mozilla URLUtils documentation>
+newtype URLUtils = URLUtils { unURLUtils :: JSVal }
+
+instance PToJSVal URLUtils where
+  pToJSVal = unURLUtils
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal URLUtils where
+  pFromJSVal = URLUtils
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal URLUtils where
+  toJSVal = return . unURLUtils
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal URLUtils where
+  fromJSVal v = fmap URLUtils <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject URLUtils where
+  makeObject = makeObject . unURLUtils
+
+instance IsGObject URLUtils where
+  toGObject = GObject . unURLUtils
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = URLUtils . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToURLUtils :: IsGObject obj => obj -> JSM URLUtils
+castToURLUtils = castTo gTypeURLUtils "URLUtils"
+
+gTypeURLUtils :: JSM GType
+gTypeURLUtils = GType . Object <$> jsg "URLUtils"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.UserMessageHandler".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/UserMessageHandler Mozilla UserMessageHandler documentation>
+newtype UserMessageHandler = UserMessageHandler { unUserMessageHandler :: JSVal }
+
+instance PToJSVal UserMessageHandler where
+  pToJSVal = unUserMessageHandler
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal UserMessageHandler where
+  pFromJSVal = UserMessageHandler
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal UserMessageHandler where
+  toJSVal = return . unUserMessageHandler
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal UserMessageHandler where
+  fromJSVal v = fmap UserMessageHandler <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject UserMessageHandler where
+  makeObject = makeObject . unUserMessageHandler
+
+instance IsGObject UserMessageHandler where
+  toGObject = GObject . unUserMessageHandler
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = UserMessageHandler . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToUserMessageHandler :: IsGObject obj => obj -> JSM UserMessageHandler
+castToUserMessageHandler = castTo gTypeUserMessageHandler "UserMessageHandler"
+
+gTypeUserMessageHandler :: JSM GType
+gTypeUserMessageHandler = GType . Object <$> jsg "UserMessageHandler"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.UserMessageHandlersNamespace".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/UserMessageHandlersNamespace Mozilla UserMessageHandlersNamespace documentation>
+newtype UserMessageHandlersNamespace = UserMessageHandlersNamespace { unUserMessageHandlersNamespace :: JSVal }
+
+instance PToJSVal UserMessageHandlersNamespace where
+  pToJSVal = unUserMessageHandlersNamespace
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal UserMessageHandlersNamespace where
+  pFromJSVal = UserMessageHandlersNamespace
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal UserMessageHandlersNamespace where
+  toJSVal = return . unUserMessageHandlersNamespace
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal UserMessageHandlersNamespace where
+  fromJSVal v = fmap UserMessageHandlersNamespace <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject UserMessageHandlersNamespace where
+  makeObject = makeObject . unUserMessageHandlersNamespace
+
+instance IsGObject UserMessageHandlersNamespace where
+  toGObject = GObject . unUserMessageHandlersNamespace
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = UserMessageHandlersNamespace . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToUserMessageHandlersNamespace :: IsGObject obj => obj -> JSM UserMessageHandlersNamespace
+castToUserMessageHandlersNamespace = castTo gTypeUserMessageHandlersNamespace "UserMessageHandlersNamespace"
+
+gTypeUserMessageHandlersNamespace :: JSM GType
+gTypeUserMessageHandlersNamespace = GType . Object <$> jsg "UserMessageHandlersNamespace"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.VTTCue".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.TextTrackCue"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue Mozilla VTTCue documentation>
+newtype VTTCue = VTTCue { unVTTCue :: JSVal }
+
+instance PToJSVal VTTCue where
+  pToJSVal = unVTTCue
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal VTTCue where
+  pFromJSVal = VTTCue
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal VTTCue where
+  toJSVal = return . unVTTCue
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal VTTCue where
+  fromJSVal v = fmap VTTCue <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject VTTCue where
+  makeObject = makeObject . unVTTCue
+
+instance IsTextTrackCue VTTCue
+instance IsEventTarget VTTCue
+instance IsGObject VTTCue where
+  toGObject = GObject . unVTTCue
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = VTTCue . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToVTTCue :: IsGObject obj => obj -> JSM VTTCue
+castToVTTCue = castTo gTypeVTTCue "VTTCue"
+
+gTypeVTTCue :: JSM GType
+gTypeVTTCue = GType . Object <$> jsg "VTTCue"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.VTTRegion".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion Mozilla VTTRegion documentation>
+newtype VTTRegion = VTTRegion { unVTTRegion :: JSVal }
+
+instance PToJSVal VTTRegion where
+  pToJSVal = unVTTRegion
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal VTTRegion where
+  pFromJSVal = VTTRegion
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal VTTRegion where
+  toJSVal = return . unVTTRegion
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal VTTRegion where
+  fromJSVal v = fmap VTTRegion <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject VTTRegion where
+  makeObject = makeObject . unVTTRegion
+
+instance IsGObject VTTRegion where
+  toGObject = GObject . unVTTRegion
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = VTTRegion . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToVTTRegion :: IsGObject obj => obj -> JSM VTTRegion
+castToVTTRegion = castTo gTypeVTTRegion "VTTRegion"
+
+gTypeVTTRegion :: JSM GType
+gTypeVTTRegion = GType . Object <$> jsg "VTTRegion"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.VTTRegionList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegionList Mozilla VTTRegionList documentation>
+newtype VTTRegionList = VTTRegionList { unVTTRegionList :: JSVal }
+
+instance PToJSVal VTTRegionList where
+  pToJSVal = unVTTRegionList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal VTTRegionList where
+  pFromJSVal = VTTRegionList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal VTTRegionList where
+  toJSVal = return . unVTTRegionList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal VTTRegionList where
+  fromJSVal v = fmap VTTRegionList <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject VTTRegionList where
+  makeObject = makeObject . unVTTRegionList
+
+instance IsGObject VTTRegionList where
+  toGObject = GObject . unVTTRegionList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = VTTRegionList . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToVTTRegionList :: IsGObject obj => obj -> JSM VTTRegionList
+castToVTTRegionList = castTo gTypeVTTRegionList "VTTRegionList"
+
+gTypeVTTRegionList :: JSM GType
+gTypeVTTRegionList = GType . Object <$> jsg "VTTRegionList"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.ValidityState".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ValidityState Mozilla ValidityState documentation>
+newtype ValidityState = ValidityState { unValidityState :: JSVal }
+
+instance PToJSVal ValidityState where
+  pToJSVal = unValidityState
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ValidityState where
+  pFromJSVal = ValidityState
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ValidityState where
+  toJSVal = return . unValidityState
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ValidityState where
+  fromJSVal v = fmap ValidityState <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject ValidityState where
+  makeObject = makeObject . unValidityState
+
+instance IsGObject ValidityState where
+  toGObject = GObject . unValidityState
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = ValidityState . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToValidityState :: IsGObject obj => obj -> JSM ValidityState
+castToValidityState = castTo gTypeValidityState "ValidityState"
+
+gTypeValidityState :: JSM GType
+gTypeValidityState = GType . Object <$> jsg "ValidityState"
+#else
+type IsValidityState o = ValidityStateClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.VideoPlaybackQuality".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/VideoPlaybackQuality Mozilla VideoPlaybackQuality documentation>
+newtype VideoPlaybackQuality = VideoPlaybackQuality { unVideoPlaybackQuality :: JSVal }
+
+instance PToJSVal VideoPlaybackQuality where
+  pToJSVal = unVideoPlaybackQuality
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal VideoPlaybackQuality where
+  pFromJSVal = VideoPlaybackQuality
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal VideoPlaybackQuality where
+  toJSVal = return . unVideoPlaybackQuality
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal VideoPlaybackQuality where
+  fromJSVal v = fmap VideoPlaybackQuality <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject VideoPlaybackQuality where
+  makeObject = makeObject . unVideoPlaybackQuality
+
+instance IsGObject VideoPlaybackQuality where
+  toGObject = GObject . unVideoPlaybackQuality
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = VideoPlaybackQuality . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToVideoPlaybackQuality :: IsGObject obj => obj -> JSM VideoPlaybackQuality
+castToVideoPlaybackQuality = castTo gTypeVideoPlaybackQuality "VideoPlaybackQuality"
+
+gTypeVideoPlaybackQuality :: JSM GType
+gTypeVideoPlaybackQuality = GType . Object <$> jsg "VideoPlaybackQuality"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.VideoStreamTrack".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.MediaStreamTrack"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/VideoStreamTrack Mozilla VideoStreamTrack documentation>
+newtype VideoStreamTrack = VideoStreamTrack { unVideoStreamTrack :: JSVal }
+
+instance PToJSVal VideoStreamTrack where
+  pToJSVal = unVideoStreamTrack
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal VideoStreamTrack where
+  pFromJSVal = VideoStreamTrack
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal VideoStreamTrack where
+  toJSVal = return . unVideoStreamTrack
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal VideoStreamTrack where
+  fromJSVal v = fmap VideoStreamTrack <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject VideoStreamTrack where
+  makeObject = makeObject . unVideoStreamTrack
+
+instance IsMediaStreamTrack VideoStreamTrack
+instance IsEventTarget VideoStreamTrack
+instance IsGObject VideoStreamTrack where
+  toGObject = GObject . unVideoStreamTrack
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = VideoStreamTrack . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToVideoStreamTrack :: IsGObject obj => obj -> JSM VideoStreamTrack
+castToVideoStreamTrack = castTo gTypeVideoStreamTrack "VideoStreamTrack"
+
+gTypeVideoStreamTrack :: JSM GType
+gTypeVideoStreamTrack = GType . Object <$> jsg "VideoStreamTrack"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.VideoTrack".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrack Mozilla VideoTrack documentation>
+newtype VideoTrack = VideoTrack { unVideoTrack :: JSVal }
+
+instance PToJSVal VideoTrack where
+  pToJSVal = unVideoTrack
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal VideoTrack where
+  pFromJSVal = VideoTrack
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal VideoTrack where
+  toJSVal = return . unVideoTrack
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal VideoTrack where
+  fromJSVal v = fmap VideoTrack <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject VideoTrack where
+  makeObject = makeObject . unVideoTrack
+
+instance IsGObject VideoTrack where
+  toGObject = GObject . unVideoTrack
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = VideoTrack . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToVideoTrack :: IsGObject obj => obj -> JSM VideoTrack
+castToVideoTrack = castTo gTypeVideoTrack "VideoTrack"
+
+gTypeVideoTrack :: JSM GType
+gTypeVideoTrack = GType . Object <$> jsg "VideoTrack"
+#else
+#ifndef USE_OLD_WEBKIT
+type IsVideoTrack o = VideoTrackClass o
+#endif
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.VideoTrackList".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrackList Mozilla VideoTrackList documentation>
+newtype VideoTrackList = VideoTrackList { unVideoTrackList :: JSVal }
+
+instance PToJSVal VideoTrackList where
+  pToJSVal = unVideoTrackList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal VideoTrackList where
+  pFromJSVal = VideoTrackList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal VideoTrackList where
+  toJSVal = return . unVideoTrackList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal VideoTrackList where
+  fromJSVal v = fmap VideoTrackList <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject VideoTrackList where
+  makeObject = makeObject . unVideoTrackList
+
+instance IsEventTarget VideoTrackList
+instance IsGObject VideoTrackList where
+  toGObject = GObject . unVideoTrackList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = VideoTrackList . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToVideoTrackList :: IsGObject obj => obj -> JSM VideoTrackList
+castToVideoTrackList = castTo gTypeVideoTrackList "VideoTrackList"
+
+gTypeVideoTrackList :: JSM GType
+gTypeVideoTrackList = GType . Object <$> jsg "VideoTrackList"
+#else
+#ifndef USE_OLD_WEBKIT
+type IsVideoTrackList o = VideoTrackListClass o
+#endif
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.WaveShaperNode".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.AudioNode"
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WaveShaperNode Mozilla WaveShaperNode documentation>
+newtype WaveShaperNode = WaveShaperNode { unWaveShaperNode :: JSVal }
+
+instance PToJSVal WaveShaperNode where
+  pToJSVal = unWaveShaperNode
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WaveShaperNode where
+  pFromJSVal = WaveShaperNode
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WaveShaperNode where
+  toJSVal = return . unWaveShaperNode
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WaveShaperNode where
+  fromJSVal v = fmap WaveShaperNode <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WaveShaperNode where
+  makeObject = makeObject . unWaveShaperNode
+
+instance IsAudioNode WaveShaperNode
+instance IsEventTarget WaveShaperNode
+instance IsGObject WaveShaperNode where
+  toGObject = GObject . unWaveShaperNode
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WaveShaperNode . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWaveShaperNode :: IsGObject obj => obj -> JSM WaveShaperNode
+castToWaveShaperNode = castTo gTypeWaveShaperNode "WaveShaperNode"
+
+gTypeWaveShaperNode :: JSM GType
+gTypeWaveShaperNode = GType . Object <$> jsg "WaveShaperNode"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.WebGL2RenderingContext".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.WebGLRenderingContextBase"
+--     * "Language.Javascript.JSaddle.DOM.CanvasRenderingContext"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext Mozilla WebGL2RenderingContext documentation>
+newtype WebGL2RenderingContext = WebGL2RenderingContext { unWebGL2RenderingContext :: JSVal }
+
+instance PToJSVal WebGL2RenderingContext where
+  pToJSVal = unWebGL2RenderingContext
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGL2RenderingContext where
+  pFromJSVal = WebGL2RenderingContext
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGL2RenderingContext where
+  toJSVal = return . unWebGL2RenderingContext
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGL2RenderingContext where
+  fromJSVal v = fmap WebGL2RenderingContext <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebGL2RenderingContext where
+  makeObject = makeObject . unWebGL2RenderingContext
+
+instance IsWebGLRenderingContextBase WebGL2RenderingContext
+instance IsCanvasRenderingContext WebGL2RenderingContext
+instance IsGObject WebGL2RenderingContext where
+  toGObject = GObject . unWebGL2RenderingContext
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGL2RenderingContext . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGL2RenderingContext :: IsGObject obj => obj -> JSM WebGL2RenderingContext
+castToWebGL2RenderingContext = castTo gTypeWebGL2RenderingContext "WebGL2RenderingContext"
+
+gTypeWebGL2RenderingContext :: JSM GType
+gTypeWebGL2RenderingContext = GType . Object <$> jsg "WebGL2RenderingContext"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.WebGLActiveInfo".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLActiveInfo Mozilla WebGLActiveInfo documentation>
+newtype WebGLActiveInfo = WebGLActiveInfo { unWebGLActiveInfo :: JSVal }
+
+instance PToJSVal WebGLActiveInfo where
+  pToJSVal = unWebGLActiveInfo
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLActiveInfo where
+  pFromJSVal = WebGLActiveInfo
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLActiveInfo where
+  toJSVal = return . unWebGLActiveInfo
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLActiveInfo where
+  fromJSVal v = fmap WebGLActiveInfo <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebGLActiveInfo where
+  makeObject = makeObject . unWebGLActiveInfo
+
+instance IsGObject WebGLActiveInfo where
+  toGObject = GObject . unWebGLActiveInfo
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLActiveInfo . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLActiveInfo :: IsGObject obj => obj -> JSM WebGLActiveInfo
+castToWebGLActiveInfo = castTo gTypeWebGLActiveInfo "WebGLActiveInfo"
+
+gTypeWebGLActiveInfo :: JSM GType
+gTypeWebGLActiveInfo = GType . Object <$> jsg "WebGLActiveInfo"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.WebGLBuffer".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLBuffer Mozilla WebGLBuffer documentation>
+newtype WebGLBuffer = WebGLBuffer { unWebGLBuffer :: JSVal }
+
+instance PToJSVal WebGLBuffer where
+  pToJSVal = unWebGLBuffer
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLBuffer where
+  pFromJSVal = WebGLBuffer
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLBuffer where
+  toJSVal = return . unWebGLBuffer
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLBuffer where
+  fromJSVal v = fmap WebGLBuffer <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebGLBuffer where
+  makeObject = makeObject . unWebGLBuffer
+
+instance IsGObject WebGLBuffer where
+  toGObject = GObject . unWebGLBuffer
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLBuffer . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLBuffer :: IsGObject obj => obj -> JSM WebGLBuffer
+castToWebGLBuffer = castTo gTypeWebGLBuffer "WebGLBuffer"
+
+gTypeWebGLBuffer :: JSM GType
+gTypeWebGLBuffer = GType . Object <$> jsg "WebGLBuffer"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.WebGLCompressedTextureATC".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLCompressedTextureATC Mozilla WebGLCompressedTextureATC documentation>
+newtype WebGLCompressedTextureATC = WebGLCompressedTextureATC { unWebGLCompressedTextureATC :: JSVal }
+
+instance PToJSVal WebGLCompressedTextureATC where
+  pToJSVal = unWebGLCompressedTextureATC
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLCompressedTextureATC where
+  pFromJSVal = WebGLCompressedTextureATC
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLCompressedTextureATC where
+  toJSVal = return . unWebGLCompressedTextureATC
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLCompressedTextureATC where
+  fromJSVal v = fmap WebGLCompressedTextureATC <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebGLCompressedTextureATC where
+  makeObject = makeObject . unWebGLCompressedTextureATC
+
+instance IsGObject WebGLCompressedTextureATC where
+  toGObject = GObject . unWebGLCompressedTextureATC
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLCompressedTextureATC . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLCompressedTextureATC :: IsGObject obj => obj -> JSM WebGLCompressedTextureATC
+castToWebGLCompressedTextureATC = castTo gTypeWebGLCompressedTextureATC "WebGLCompressedTextureATC"
+
+gTypeWebGLCompressedTextureATC :: JSM GType
+gTypeWebGLCompressedTextureATC = GType . Object <$> jsg "WebGLCompressedTextureATC"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.WebGLCompressedTexturePVRTC".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLCompressedTexturePVRTC Mozilla WebGLCompressedTexturePVRTC documentation>
+newtype WebGLCompressedTexturePVRTC = WebGLCompressedTexturePVRTC { unWebGLCompressedTexturePVRTC :: JSVal }
+
+instance PToJSVal WebGLCompressedTexturePVRTC where
+  pToJSVal = unWebGLCompressedTexturePVRTC
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLCompressedTexturePVRTC where
+  pFromJSVal = WebGLCompressedTexturePVRTC
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLCompressedTexturePVRTC where
+  toJSVal = return . unWebGLCompressedTexturePVRTC
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLCompressedTexturePVRTC where
+  fromJSVal v = fmap WebGLCompressedTexturePVRTC <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebGLCompressedTexturePVRTC where
+  makeObject = makeObject . unWebGLCompressedTexturePVRTC
+
+instance IsGObject WebGLCompressedTexturePVRTC where
+  toGObject = GObject . unWebGLCompressedTexturePVRTC
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLCompressedTexturePVRTC . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLCompressedTexturePVRTC :: IsGObject obj => obj -> JSM WebGLCompressedTexturePVRTC
+castToWebGLCompressedTexturePVRTC = castTo gTypeWebGLCompressedTexturePVRTC "WebGLCompressedTexturePVRTC"
+
+gTypeWebGLCompressedTexturePVRTC :: JSM GType
+gTypeWebGLCompressedTexturePVRTC = GType . Object <$> jsg "WebGLCompressedTexturePVRTC"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.WebGLCompressedTextureS3TC".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLCompressedTextureS3TC Mozilla WebGLCompressedTextureS3TC documentation>
+newtype WebGLCompressedTextureS3TC = WebGLCompressedTextureS3TC { unWebGLCompressedTextureS3TC :: JSVal }
+
+instance PToJSVal WebGLCompressedTextureS3TC where
+  pToJSVal = unWebGLCompressedTextureS3TC
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLCompressedTextureS3TC where
+  pFromJSVal = WebGLCompressedTextureS3TC
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLCompressedTextureS3TC where
+  toJSVal = return . unWebGLCompressedTextureS3TC
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLCompressedTextureS3TC where
+  fromJSVal v = fmap WebGLCompressedTextureS3TC <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebGLCompressedTextureS3TC where
+  makeObject = makeObject . unWebGLCompressedTextureS3TC
+
+instance IsGObject WebGLCompressedTextureS3TC where
+  toGObject = GObject . unWebGLCompressedTextureS3TC
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLCompressedTextureS3TC . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLCompressedTextureS3TC :: IsGObject obj => obj -> JSM WebGLCompressedTextureS3TC
+castToWebGLCompressedTextureS3TC = castTo gTypeWebGLCompressedTextureS3TC "WebGLCompressedTextureS3TC"
+
+gTypeWebGLCompressedTextureS3TC :: JSM GType
+gTypeWebGLCompressedTextureS3TC = GType . Object <$> jsg "WebGLCompressedTextureS3TC"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.WebGLContextAttributes".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLContextAttributes Mozilla WebGLContextAttributes documentation>
+newtype WebGLContextAttributes = WebGLContextAttributes { unWebGLContextAttributes :: JSVal }
+
+instance PToJSVal WebGLContextAttributes where
+  pToJSVal = unWebGLContextAttributes
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLContextAttributes where
+  pFromJSVal = WebGLContextAttributes
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLContextAttributes where
+  toJSVal = return . unWebGLContextAttributes
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLContextAttributes where
+  fromJSVal v = fmap WebGLContextAttributes <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebGLContextAttributes where
+  makeObject = makeObject . unWebGLContextAttributes
+
+instance IsGObject WebGLContextAttributes where
+  toGObject = GObject . unWebGLContextAttributes
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLContextAttributes . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLContextAttributes :: IsGObject obj => obj -> JSM WebGLContextAttributes
+castToWebGLContextAttributes = castTo gTypeWebGLContextAttributes "WebGLContextAttributes"
+
+gTypeWebGLContextAttributes :: JSM GType
+gTypeWebGLContextAttributes = GType . Object <$> jsg "WebGLContextAttributes"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.WebGLContextEvent".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLContextEvent Mozilla WebGLContextEvent documentation>
+newtype WebGLContextEvent = WebGLContextEvent { unWebGLContextEvent :: JSVal }
+
+instance PToJSVal WebGLContextEvent where
+  pToJSVal = unWebGLContextEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLContextEvent where
+  pFromJSVal = WebGLContextEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLContextEvent where
+  toJSVal = return . unWebGLContextEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLContextEvent where
+  fromJSVal v = fmap WebGLContextEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebGLContextEvent where
+  makeObject = makeObject . unWebGLContextEvent
+
+instance IsEvent WebGLContextEvent
+instance IsGObject WebGLContextEvent where
+  toGObject = GObject . unWebGLContextEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLContextEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLContextEvent :: IsGObject obj => obj -> JSM WebGLContextEvent
+castToWebGLContextEvent = castTo gTypeWebGLContextEvent "WebGLContextEvent"
+
+gTypeWebGLContextEvent :: JSM GType
+gTypeWebGLContextEvent = GType . Object <$> jsg "WebGLContextEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.WebGLDebugRendererInfo".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLDebugRendererInfo Mozilla WebGLDebugRendererInfo documentation>
+newtype WebGLDebugRendererInfo = WebGLDebugRendererInfo { unWebGLDebugRendererInfo :: JSVal }
+
+instance PToJSVal WebGLDebugRendererInfo where
+  pToJSVal = unWebGLDebugRendererInfo
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLDebugRendererInfo where
+  pFromJSVal = WebGLDebugRendererInfo
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLDebugRendererInfo where
+  toJSVal = return . unWebGLDebugRendererInfo
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLDebugRendererInfo where
+  fromJSVal v = fmap WebGLDebugRendererInfo <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebGLDebugRendererInfo where
+  makeObject = makeObject . unWebGLDebugRendererInfo
+
+instance IsGObject WebGLDebugRendererInfo where
+  toGObject = GObject . unWebGLDebugRendererInfo
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLDebugRendererInfo . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLDebugRendererInfo :: IsGObject obj => obj -> JSM WebGLDebugRendererInfo
+castToWebGLDebugRendererInfo = castTo gTypeWebGLDebugRendererInfo "WebGLDebugRendererInfo"
+
+gTypeWebGLDebugRendererInfo :: JSM GType
+gTypeWebGLDebugRendererInfo = GType . Object <$> jsg "WebGLDebugRendererInfo"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.WebGLDebugShaders".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLDebugShaders Mozilla WebGLDebugShaders documentation>
+newtype WebGLDebugShaders = WebGLDebugShaders { unWebGLDebugShaders :: JSVal }
+
+instance PToJSVal WebGLDebugShaders where
+  pToJSVal = unWebGLDebugShaders
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLDebugShaders where
+  pFromJSVal = WebGLDebugShaders
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLDebugShaders where
+  toJSVal = return . unWebGLDebugShaders
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLDebugShaders where
+  fromJSVal v = fmap WebGLDebugShaders <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebGLDebugShaders where
+  makeObject = makeObject . unWebGLDebugShaders
+
+instance IsGObject WebGLDebugShaders where
+  toGObject = GObject . unWebGLDebugShaders
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLDebugShaders . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLDebugShaders :: IsGObject obj => obj -> JSM WebGLDebugShaders
+castToWebGLDebugShaders = castTo gTypeWebGLDebugShaders "WebGLDebugShaders"
+
+gTypeWebGLDebugShaders :: JSM GType
+gTypeWebGLDebugShaders = GType . Object <$> jsg "WebGLDebugShaders"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.WebGLDepthTexture".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLDepthTexture Mozilla WebGLDepthTexture documentation>
+newtype WebGLDepthTexture = WebGLDepthTexture { unWebGLDepthTexture :: JSVal }
+
+instance PToJSVal WebGLDepthTexture where
+  pToJSVal = unWebGLDepthTexture
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLDepthTexture where
+  pFromJSVal = WebGLDepthTexture
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLDepthTexture where
+  toJSVal = return . unWebGLDepthTexture
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLDepthTexture where
+  fromJSVal v = fmap WebGLDepthTexture <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebGLDepthTexture where
+  makeObject = makeObject . unWebGLDepthTexture
+
+instance IsGObject WebGLDepthTexture where
+  toGObject = GObject . unWebGLDepthTexture
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLDepthTexture . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLDepthTexture :: IsGObject obj => obj -> JSM WebGLDepthTexture
+castToWebGLDepthTexture = castTo gTypeWebGLDepthTexture "WebGLDepthTexture"
+
+gTypeWebGLDepthTexture :: JSM GType
+gTypeWebGLDepthTexture = GType . Object <$> jsg "WebGLDepthTexture"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.WebGLDrawBuffers".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLDrawBuffers Mozilla WebGLDrawBuffers documentation>
+newtype WebGLDrawBuffers = WebGLDrawBuffers { unWebGLDrawBuffers :: JSVal }
+
+instance PToJSVal WebGLDrawBuffers where
+  pToJSVal = unWebGLDrawBuffers
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLDrawBuffers where
+  pFromJSVal = WebGLDrawBuffers
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLDrawBuffers where
+  toJSVal = return . unWebGLDrawBuffers
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLDrawBuffers where
+  fromJSVal v = fmap WebGLDrawBuffers <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebGLDrawBuffers where
+  makeObject = makeObject . unWebGLDrawBuffers
+
+instance IsGObject WebGLDrawBuffers where
+  toGObject = GObject . unWebGLDrawBuffers
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLDrawBuffers . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLDrawBuffers :: IsGObject obj => obj -> JSM WebGLDrawBuffers
+castToWebGLDrawBuffers = castTo gTypeWebGLDrawBuffers "WebGLDrawBuffers"
+
+gTypeWebGLDrawBuffers :: JSM GType
+gTypeWebGLDrawBuffers = GType . Object <$> jsg "WebGLDrawBuffers"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.WebGLFramebuffer".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLFramebuffer Mozilla WebGLFramebuffer documentation>
+newtype WebGLFramebuffer = WebGLFramebuffer { unWebGLFramebuffer :: JSVal }
+
+instance PToJSVal WebGLFramebuffer where
+  pToJSVal = unWebGLFramebuffer
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLFramebuffer where
+  pFromJSVal = WebGLFramebuffer
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLFramebuffer where
+  toJSVal = return . unWebGLFramebuffer
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLFramebuffer where
+  fromJSVal v = fmap WebGLFramebuffer <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebGLFramebuffer where
+  makeObject = makeObject . unWebGLFramebuffer
+
+instance IsGObject WebGLFramebuffer where
+  toGObject = GObject . unWebGLFramebuffer
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLFramebuffer . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLFramebuffer :: IsGObject obj => obj -> JSM WebGLFramebuffer
+castToWebGLFramebuffer = castTo gTypeWebGLFramebuffer "WebGLFramebuffer"
+
+gTypeWebGLFramebuffer :: JSM GType
+gTypeWebGLFramebuffer = GType . Object <$> jsg "WebGLFramebuffer"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.WebGLLoseContext".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLLoseContext Mozilla WebGLLoseContext documentation>
+newtype WebGLLoseContext = WebGLLoseContext { unWebGLLoseContext :: JSVal }
+
+instance PToJSVal WebGLLoseContext where
+  pToJSVal = unWebGLLoseContext
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLLoseContext where
+  pFromJSVal = WebGLLoseContext
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLLoseContext where
+  toJSVal = return . unWebGLLoseContext
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLLoseContext where
+  fromJSVal v = fmap WebGLLoseContext <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebGLLoseContext where
+  makeObject = makeObject . unWebGLLoseContext
+
+instance IsGObject WebGLLoseContext where
+  toGObject = GObject . unWebGLLoseContext
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLLoseContext . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLLoseContext :: IsGObject obj => obj -> JSM WebGLLoseContext
+castToWebGLLoseContext = castTo gTypeWebGLLoseContext "WebGLLoseContext"
+
+gTypeWebGLLoseContext :: JSM GType
+gTypeWebGLLoseContext = GType . Object <$> jsg "WebGLLoseContext"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.WebGLProgram".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLProgram Mozilla WebGLProgram documentation>
+newtype WebGLProgram = WebGLProgram { unWebGLProgram :: JSVal }
+
+instance PToJSVal WebGLProgram where
+  pToJSVal = unWebGLProgram
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLProgram where
+  pFromJSVal = WebGLProgram
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLProgram where
+  toJSVal = return . unWebGLProgram
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLProgram where
+  fromJSVal v = fmap WebGLProgram <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebGLProgram where
+  makeObject = makeObject . unWebGLProgram
+
+instance IsGObject WebGLProgram where
+  toGObject = GObject . unWebGLProgram
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLProgram . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLProgram :: IsGObject obj => obj -> JSM WebGLProgram
+castToWebGLProgram = castTo gTypeWebGLProgram "WebGLProgram"
+
+gTypeWebGLProgram :: JSM GType
+gTypeWebGLProgram = GType . Object <$> jsg "WebGLProgram"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.WebGLQuery".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLQuery Mozilla WebGLQuery documentation>
+newtype WebGLQuery = WebGLQuery { unWebGLQuery :: JSVal }
+
+instance PToJSVal WebGLQuery where
+  pToJSVal = unWebGLQuery
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLQuery where
+  pFromJSVal = WebGLQuery
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLQuery where
+  toJSVal = return . unWebGLQuery
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLQuery where
+  fromJSVal v = fmap WebGLQuery <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebGLQuery where
+  makeObject = makeObject . unWebGLQuery
+
+instance IsGObject WebGLQuery where
+  toGObject = GObject . unWebGLQuery
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLQuery . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLQuery :: IsGObject obj => obj -> JSM WebGLQuery
+castToWebGLQuery = castTo gTypeWebGLQuery "WebGLQuery"
+
+gTypeWebGLQuery :: JSM GType
+gTypeWebGLQuery = GType . Object <$> jsg "WebGLQuery"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.WebGLRenderbuffer".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderbuffer Mozilla WebGLRenderbuffer documentation>
+newtype WebGLRenderbuffer = WebGLRenderbuffer { unWebGLRenderbuffer :: JSVal }
+
+instance PToJSVal WebGLRenderbuffer where
+  pToJSVal = unWebGLRenderbuffer
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLRenderbuffer where
+  pFromJSVal = WebGLRenderbuffer
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLRenderbuffer where
+  toJSVal = return . unWebGLRenderbuffer
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLRenderbuffer where
+  fromJSVal v = fmap WebGLRenderbuffer <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebGLRenderbuffer where
+  makeObject = makeObject . unWebGLRenderbuffer
+
+instance IsGObject WebGLRenderbuffer where
+  toGObject = GObject . unWebGLRenderbuffer
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLRenderbuffer . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLRenderbuffer :: IsGObject obj => obj -> JSM WebGLRenderbuffer
+castToWebGLRenderbuffer = castTo gTypeWebGLRenderbuffer "WebGLRenderbuffer"
+
+gTypeWebGLRenderbuffer :: JSM GType
+gTypeWebGLRenderbuffer = GType . Object <$> jsg "WebGLRenderbuffer"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.WebGLRenderingContext".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.WebGLRenderingContextBase"
+--     * "Language.Javascript.JSaddle.DOM.CanvasRenderingContext"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext Mozilla WebGLRenderingContext documentation>
+newtype WebGLRenderingContext = WebGLRenderingContext { unWebGLRenderingContext :: JSVal }
+
+instance PToJSVal WebGLRenderingContext where
+  pToJSVal = unWebGLRenderingContext
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLRenderingContext where
+  pFromJSVal = WebGLRenderingContext
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLRenderingContext where
+  toJSVal = return . unWebGLRenderingContext
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLRenderingContext where
+  fromJSVal v = fmap WebGLRenderingContext <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebGLRenderingContext where
+  makeObject = makeObject . unWebGLRenderingContext
+
+instance IsWebGLRenderingContextBase WebGLRenderingContext
+instance IsCanvasRenderingContext WebGLRenderingContext
+instance IsGObject WebGLRenderingContext where
+  toGObject = GObject . unWebGLRenderingContext
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLRenderingContext . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLRenderingContext :: IsGObject obj => obj -> JSM WebGLRenderingContext
+castToWebGLRenderingContext = castTo gTypeWebGLRenderingContext "WebGLRenderingContext"
+
+gTypeWebGLRenderingContext :: JSM GType
+gTypeWebGLRenderingContext = GType . Object <$> jsg "WebGLRenderingContext"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.WebGLRenderingContextBase".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.CanvasRenderingContext"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase Mozilla WebGLRenderingContextBase documentation>
+newtype WebGLRenderingContextBase = WebGLRenderingContextBase { unWebGLRenderingContextBase :: JSVal }
+
+instance PToJSVal WebGLRenderingContextBase where
+  pToJSVal = unWebGLRenderingContextBase
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLRenderingContextBase where
+  pFromJSVal = WebGLRenderingContextBase
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLRenderingContextBase where
+  toJSVal = return . unWebGLRenderingContextBase
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLRenderingContextBase where
+  fromJSVal v = fmap WebGLRenderingContextBase <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebGLRenderingContextBase where
+  makeObject = makeObject . unWebGLRenderingContextBase
+
+class IsCanvasRenderingContext o => IsWebGLRenderingContextBase o
+toWebGLRenderingContextBase :: IsWebGLRenderingContextBase o => o -> WebGLRenderingContextBase
+toWebGLRenderingContextBase = unsafeCastGObject . toGObject
+
+instance IsWebGLRenderingContextBase WebGLRenderingContextBase
+instance IsCanvasRenderingContext WebGLRenderingContextBase
+instance IsGObject WebGLRenderingContextBase where
+  toGObject = GObject . unWebGLRenderingContextBase
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLRenderingContextBase . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLRenderingContextBase :: IsGObject obj => obj -> JSM WebGLRenderingContextBase
+castToWebGLRenderingContextBase = castTo gTypeWebGLRenderingContextBase "WebGLRenderingContextBase"
+
+gTypeWebGLRenderingContextBase :: JSM GType
+gTypeWebGLRenderingContextBase = GType . Object <$> jsg "WebGLRenderingContextBase"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.WebGLSampler".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLSampler Mozilla WebGLSampler documentation>
+newtype WebGLSampler = WebGLSampler { unWebGLSampler :: JSVal }
+
+instance PToJSVal WebGLSampler where
+  pToJSVal = unWebGLSampler
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLSampler where
+  pFromJSVal = WebGLSampler
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLSampler where
+  toJSVal = return . unWebGLSampler
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLSampler where
+  fromJSVal v = fmap WebGLSampler <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebGLSampler where
+  makeObject = makeObject . unWebGLSampler
+
+instance IsGObject WebGLSampler where
+  toGObject = GObject . unWebGLSampler
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLSampler . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLSampler :: IsGObject obj => obj -> JSM WebGLSampler
+castToWebGLSampler = castTo gTypeWebGLSampler "WebGLSampler"
+
+gTypeWebGLSampler :: JSM GType
+gTypeWebGLSampler = GType . Object <$> jsg "WebGLSampler"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.WebGLShader".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLShader Mozilla WebGLShader documentation>
+newtype WebGLShader = WebGLShader { unWebGLShader :: JSVal }
+
+instance PToJSVal WebGLShader where
+  pToJSVal = unWebGLShader
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLShader where
+  pFromJSVal = WebGLShader
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLShader where
+  toJSVal = return . unWebGLShader
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLShader where
+  fromJSVal v = fmap WebGLShader <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebGLShader where
+  makeObject = makeObject . unWebGLShader
+
+instance IsGObject WebGLShader where
+  toGObject = GObject . unWebGLShader
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLShader . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLShader :: IsGObject obj => obj -> JSM WebGLShader
+castToWebGLShader = castTo gTypeWebGLShader "WebGLShader"
+
+gTypeWebGLShader :: JSM GType
+gTypeWebGLShader = GType . Object <$> jsg "WebGLShader"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.WebGLShaderPrecisionFormat".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLShaderPrecisionFormat Mozilla WebGLShaderPrecisionFormat documentation>
+newtype WebGLShaderPrecisionFormat = WebGLShaderPrecisionFormat { unWebGLShaderPrecisionFormat :: JSVal }
+
+instance PToJSVal WebGLShaderPrecisionFormat where
+  pToJSVal = unWebGLShaderPrecisionFormat
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLShaderPrecisionFormat where
+  pFromJSVal = WebGLShaderPrecisionFormat
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLShaderPrecisionFormat where
+  toJSVal = return . unWebGLShaderPrecisionFormat
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLShaderPrecisionFormat where
+  fromJSVal v = fmap WebGLShaderPrecisionFormat <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebGLShaderPrecisionFormat where
+  makeObject = makeObject . unWebGLShaderPrecisionFormat
+
+instance IsGObject WebGLShaderPrecisionFormat where
+  toGObject = GObject . unWebGLShaderPrecisionFormat
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLShaderPrecisionFormat . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLShaderPrecisionFormat :: IsGObject obj => obj -> JSM WebGLShaderPrecisionFormat
+castToWebGLShaderPrecisionFormat = castTo gTypeWebGLShaderPrecisionFormat "WebGLShaderPrecisionFormat"
+
+gTypeWebGLShaderPrecisionFormat :: JSM GType
+gTypeWebGLShaderPrecisionFormat = GType . Object <$> jsg "WebGLShaderPrecisionFormat"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.WebGLSync".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLSync Mozilla WebGLSync documentation>
+newtype WebGLSync = WebGLSync { unWebGLSync :: JSVal }
+
+instance PToJSVal WebGLSync where
+  pToJSVal = unWebGLSync
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLSync where
+  pFromJSVal = WebGLSync
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLSync where
+  toJSVal = return . unWebGLSync
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLSync where
+  fromJSVal v = fmap WebGLSync <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebGLSync where
+  makeObject = makeObject . unWebGLSync
+
+instance IsGObject WebGLSync where
+  toGObject = GObject . unWebGLSync
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLSync . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLSync :: IsGObject obj => obj -> JSM WebGLSync
+castToWebGLSync = castTo gTypeWebGLSync "WebGLSync"
+
+gTypeWebGLSync :: JSM GType
+gTypeWebGLSync = GType . Object <$> jsg "WebGLSync"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.WebGLTexture".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLTexture Mozilla WebGLTexture documentation>
+newtype WebGLTexture = WebGLTexture { unWebGLTexture :: JSVal }
+
+instance PToJSVal WebGLTexture where
+  pToJSVal = unWebGLTexture
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLTexture where
+  pFromJSVal = WebGLTexture
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLTexture where
+  toJSVal = return . unWebGLTexture
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLTexture where
+  fromJSVal v = fmap WebGLTexture <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebGLTexture where
+  makeObject = makeObject . unWebGLTexture
+
+instance IsGObject WebGLTexture where
+  toGObject = GObject . unWebGLTexture
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLTexture . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLTexture :: IsGObject obj => obj -> JSM WebGLTexture
+castToWebGLTexture = castTo gTypeWebGLTexture "WebGLTexture"
+
+gTypeWebGLTexture :: JSM GType
+gTypeWebGLTexture = GType . Object <$> jsg "WebGLTexture"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.WebGLTransformFeedback".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLTransformFeedback Mozilla WebGLTransformFeedback documentation>
+newtype WebGLTransformFeedback = WebGLTransformFeedback { unWebGLTransformFeedback :: JSVal }
+
+instance PToJSVal WebGLTransformFeedback where
+  pToJSVal = unWebGLTransformFeedback
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLTransformFeedback where
+  pFromJSVal = WebGLTransformFeedback
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLTransformFeedback where
+  toJSVal = return . unWebGLTransformFeedback
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLTransformFeedback where
+  fromJSVal v = fmap WebGLTransformFeedback <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebGLTransformFeedback where
+  makeObject = makeObject . unWebGLTransformFeedback
+
+instance IsGObject WebGLTransformFeedback where
+  toGObject = GObject . unWebGLTransformFeedback
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLTransformFeedback . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLTransformFeedback :: IsGObject obj => obj -> JSM WebGLTransformFeedback
+castToWebGLTransformFeedback = castTo gTypeWebGLTransformFeedback "WebGLTransformFeedback"
+
+gTypeWebGLTransformFeedback :: JSM GType
+gTypeWebGLTransformFeedback = GType . Object <$> jsg "WebGLTransformFeedback"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.WebGLUniformLocation".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLUniformLocation Mozilla WebGLUniformLocation documentation>
+newtype WebGLUniformLocation = WebGLUniformLocation { unWebGLUniformLocation :: JSVal }
+
+instance PToJSVal WebGLUniformLocation where
+  pToJSVal = unWebGLUniformLocation
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLUniformLocation where
+  pFromJSVal = WebGLUniformLocation
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLUniformLocation where
+  toJSVal = return . unWebGLUniformLocation
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLUniformLocation where
+  fromJSVal v = fmap WebGLUniformLocation <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebGLUniformLocation where
+  makeObject = makeObject . unWebGLUniformLocation
+
+instance IsGObject WebGLUniformLocation where
+  toGObject = GObject . unWebGLUniformLocation
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLUniformLocation . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLUniformLocation :: IsGObject obj => obj -> JSM WebGLUniformLocation
+castToWebGLUniformLocation = castTo gTypeWebGLUniformLocation "WebGLUniformLocation"
+
+gTypeWebGLUniformLocation :: JSM GType
+gTypeWebGLUniformLocation = GType . Object <$> jsg "WebGLUniformLocation"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.WebGLVertexArrayObject".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLVertexArrayObject Mozilla WebGLVertexArrayObject documentation>
+newtype WebGLVertexArrayObject = WebGLVertexArrayObject { unWebGLVertexArrayObject :: JSVal }
+
+instance PToJSVal WebGLVertexArrayObject where
+  pToJSVal = unWebGLVertexArrayObject
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLVertexArrayObject where
+  pFromJSVal = WebGLVertexArrayObject
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLVertexArrayObject where
+  toJSVal = return . unWebGLVertexArrayObject
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLVertexArrayObject where
+  fromJSVal v = fmap WebGLVertexArrayObject <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebGLVertexArrayObject where
+  makeObject = makeObject . unWebGLVertexArrayObject
+
+instance IsGObject WebGLVertexArrayObject where
+  toGObject = GObject . unWebGLVertexArrayObject
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLVertexArrayObject . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLVertexArrayObject :: IsGObject obj => obj -> JSM WebGLVertexArrayObject
+castToWebGLVertexArrayObject = castTo gTypeWebGLVertexArrayObject "WebGLVertexArrayObject"
+
+gTypeWebGLVertexArrayObject :: JSM GType
+gTypeWebGLVertexArrayObject = GType . Object <$> jsg "WebGLVertexArrayObject"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.WebGLVertexArrayObjectOES".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLVertexArrayObjectOES Mozilla WebGLVertexArrayObjectOES documentation>
+newtype WebGLVertexArrayObjectOES = WebGLVertexArrayObjectOES { unWebGLVertexArrayObjectOES :: JSVal }
+
+instance PToJSVal WebGLVertexArrayObjectOES where
+  pToJSVal = unWebGLVertexArrayObjectOES
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLVertexArrayObjectOES where
+  pFromJSVal = WebGLVertexArrayObjectOES
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLVertexArrayObjectOES where
+  toJSVal = return . unWebGLVertexArrayObjectOES
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLVertexArrayObjectOES where
+  fromJSVal v = fmap WebGLVertexArrayObjectOES <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebGLVertexArrayObjectOES where
+  makeObject = makeObject . unWebGLVertexArrayObjectOES
+
+instance IsGObject WebGLVertexArrayObjectOES where
+  toGObject = GObject . unWebGLVertexArrayObjectOES
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLVertexArrayObjectOES . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLVertexArrayObjectOES :: IsGObject obj => obj -> JSM WebGLVertexArrayObjectOES
+castToWebGLVertexArrayObjectOES = castTo gTypeWebGLVertexArrayObjectOES "WebGLVertexArrayObjectOES"
+
+gTypeWebGLVertexArrayObjectOES :: JSM GType
+gTypeWebGLVertexArrayObjectOES = GType . Object <$> jsg "WebGLVertexArrayObjectOES"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.WebKitAnimationEvent".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitAnimationEvent Mozilla WebKitAnimationEvent documentation>
+newtype WebKitAnimationEvent = WebKitAnimationEvent { unWebKitAnimationEvent :: JSVal }
+
+instance PToJSVal WebKitAnimationEvent where
+  pToJSVal = unWebKitAnimationEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebKitAnimationEvent where
+  pFromJSVal = WebKitAnimationEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebKitAnimationEvent where
+  toJSVal = return . unWebKitAnimationEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebKitAnimationEvent where
+  fromJSVal v = fmap WebKitAnimationEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebKitAnimationEvent where
+  makeObject = makeObject . unWebKitAnimationEvent
+
+instance IsEvent WebKitAnimationEvent
+instance IsGObject WebKitAnimationEvent where
+  toGObject = GObject . unWebKitAnimationEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebKitAnimationEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebKitAnimationEvent :: IsGObject obj => obj -> JSM WebKitAnimationEvent
+castToWebKitAnimationEvent = castTo gTypeWebKitAnimationEvent "WebKitAnimationEvent"
+
+gTypeWebKitAnimationEvent :: JSM GType
+gTypeWebKitAnimationEvent = GType . Object <$> jsg "WebKitAnimationEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.WebKitCSSFilterValue".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.CSSValueList"
+--     * "Language.Javascript.JSaddle.DOM.CSSValue"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSFilterValue Mozilla WebKitCSSFilterValue documentation>
+newtype WebKitCSSFilterValue = WebKitCSSFilterValue { unWebKitCSSFilterValue :: JSVal }
+
+instance PToJSVal WebKitCSSFilterValue where
+  pToJSVal = unWebKitCSSFilterValue
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebKitCSSFilterValue where
+  pFromJSVal = WebKitCSSFilterValue
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebKitCSSFilterValue where
+  toJSVal = return . unWebKitCSSFilterValue
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebKitCSSFilterValue where
+  fromJSVal v = fmap WebKitCSSFilterValue <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebKitCSSFilterValue where
+  makeObject = makeObject . unWebKitCSSFilterValue
+
+instance IsCSSValueList WebKitCSSFilterValue
+instance IsCSSValue WebKitCSSFilterValue
+instance IsGObject WebKitCSSFilterValue where
+  toGObject = GObject . unWebKitCSSFilterValue
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebKitCSSFilterValue . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebKitCSSFilterValue :: IsGObject obj => obj -> JSM WebKitCSSFilterValue
+castToWebKitCSSFilterValue = castTo gTypeWebKitCSSFilterValue "WebKitCSSFilterValue"
+
+gTypeWebKitCSSFilterValue :: JSM GType
+gTypeWebKitCSSFilterValue = GType . Object <$> jsg "WebKitCSSFilterValue"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.WebKitCSSMatrix".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix Mozilla WebKitCSSMatrix documentation>
+newtype WebKitCSSMatrix = WebKitCSSMatrix { unWebKitCSSMatrix :: JSVal }
+
+instance PToJSVal WebKitCSSMatrix where
+  pToJSVal = unWebKitCSSMatrix
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebKitCSSMatrix where
+  pFromJSVal = WebKitCSSMatrix
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebKitCSSMatrix where
+  toJSVal = return . unWebKitCSSMatrix
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebKitCSSMatrix where
+  fromJSVal v = fmap WebKitCSSMatrix <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebKitCSSMatrix where
+  makeObject = makeObject . unWebKitCSSMatrix
+
+instance IsGObject WebKitCSSMatrix where
+  toGObject = GObject . unWebKitCSSMatrix
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebKitCSSMatrix . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebKitCSSMatrix :: IsGObject obj => obj -> JSM WebKitCSSMatrix
+castToWebKitCSSMatrix = castTo gTypeWebKitCSSMatrix "WebKitCSSMatrix"
+
+gTypeWebKitCSSMatrix :: JSM GType
+gTypeWebKitCSSMatrix = GType . Object <$> jsg "WebKitCSSMatrix"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.WebKitCSSRegionRule".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.CSSRule"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSRegionRule Mozilla WebKitCSSRegionRule documentation>
+newtype WebKitCSSRegionRule = WebKitCSSRegionRule { unWebKitCSSRegionRule :: JSVal }
+
+instance PToJSVal WebKitCSSRegionRule where
+  pToJSVal = unWebKitCSSRegionRule
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebKitCSSRegionRule where
+  pFromJSVal = WebKitCSSRegionRule
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebKitCSSRegionRule where
+  toJSVal = return . unWebKitCSSRegionRule
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebKitCSSRegionRule where
+  fromJSVal v = fmap WebKitCSSRegionRule <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebKitCSSRegionRule where
+  makeObject = makeObject . unWebKitCSSRegionRule
+
+instance IsCSSRule WebKitCSSRegionRule
+instance IsGObject WebKitCSSRegionRule where
+  toGObject = GObject . unWebKitCSSRegionRule
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebKitCSSRegionRule . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebKitCSSRegionRule :: IsGObject obj => obj -> JSM WebKitCSSRegionRule
+castToWebKitCSSRegionRule = castTo gTypeWebKitCSSRegionRule "WebKitCSSRegionRule"
+
+gTypeWebKitCSSRegionRule :: JSM GType
+gTypeWebKitCSSRegionRule = GType . Object <$> jsg "WebKitCSSRegionRule"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.WebKitCSSTransformValue".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.CSSValueList"
+--     * "Language.Javascript.JSaddle.DOM.CSSValue"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSTransformValue Mozilla WebKitCSSTransformValue documentation>
+newtype WebKitCSSTransformValue = WebKitCSSTransformValue { unWebKitCSSTransformValue :: JSVal }
+
+instance PToJSVal WebKitCSSTransformValue where
+  pToJSVal = unWebKitCSSTransformValue
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebKitCSSTransformValue where
+  pFromJSVal = WebKitCSSTransformValue
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebKitCSSTransformValue where
+  toJSVal = return . unWebKitCSSTransformValue
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebKitCSSTransformValue where
+  fromJSVal v = fmap WebKitCSSTransformValue <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebKitCSSTransformValue where
+  makeObject = makeObject . unWebKitCSSTransformValue
+
+instance IsCSSValueList WebKitCSSTransformValue
+instance IsCSSValue WebKitCSSTransformValue
+instance IsGObject WebKitCSSTransformValue where
+  toGObject = GObject . unWebKitCSSTransformValue
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebKitCSSTransformValue . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebKitCSSTransformValue :: IsGObject obj => obj -> JSM WebKitCSSTransformValue
+castToWebKitCSSTransformValue = castTo gTypeWebKitCSSTransformValue "WebKitCSSTransformValue"
+
+gTypeWebKitCSSTransformValue :: JSM GType
+gTypeWebKitCSSTransformValue = GType . Object <$> jsg "WebKitCSSTransformValue"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.WebKitCSSViewportRule".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.CSSRule"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSViewportRule Mozilla WebKitCSSViewportRule documentation>
+newtype WebKitCSSViewportRule = WebKitCSSViewportRule { unWebKitCSSViewportRule :: JSVal }
+
+instance PToJSVal WebKitCSSViewportRule where
+  pToJSVal = unWebKitCSSViewportRule
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebKitCSSViewportRule where
+  pFromJSVal = WebKitCSSViewportRule
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebKitCSSViewportRule where
+  toJSVal = return . unWebKitCSSViewportRule
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebKitCSSViewportRule where
+  fromJSVal v = fmap WebKitCSSViewportRule <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebKitCSSViewportRule where
+  makeObject = makeObject . unWebKitCSSViewportRule
+
+instance IsCSSRule WebKitCSSViewportRule
+instance IsGObject WebKitCSSViewportRule where
+  toGObject = GObject . unWebKitCSSViewportRule
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebKitCSSViewportRule . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebKitCSSViewportRule :: IsGObject obj => obj -> JSM WebKitCSSViewportRule
+castToWebKitCSSViewportRule = castTo gTypeWebKitCSSViewportRule "WebKitCSSViewportRule"
+
+gTypeWebKitCSSViewportRule :: JSM GType
+gTypeWebKitCSSViewportRule = GType . Object <$> jsg "WebKitCSSViewportRule"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.WebKitNamedFlow".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlow Mozilla WebKitNamedFlow documentation>
+newtype WebKitNamedFlow = WebKitNamedFlow { unWebKitNamedFlow :: JSVal }
+
+instance PToJSVal WebKitNamedFlow where
+  pToJSVal = unWebKitNamedFlow
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebKitNamedFlow where
+  pFromJSVal = WebKitNamedFlow
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebKitNamedFlow where
+  toJSVal = return . unWebKitNamedFlow
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebKitNamedFlow where
+  fromJSVal v = fmap WebKitNamedFlow <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebKitNamedFlow where
+  makeObject = makeObject . unWebKitNamedFlow
+
+instance IsEventTarget WebKitNamedFlow
+instance IsGObject WebKitNamedFlow where
+  toGObject = GObject . unWebKitNamedFlow
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebKitNamedFlow . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebKitNamedFlow :: IsGObject obj => obj -> JSM WebKitNamedFlow
+castToWebKitNamedFlow = castTo gTypeWebKitNamedFlow "WebKitNamedFlow"
+
+gTypeWebKitNamedFlow :: JSM GType
+gTypeWebKitNamedFlow = GType . Object <$> jsg "WebKitNamedFlow"
+#else
+type IsWebKitNamedFlow o = WebKitNamedFlowClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.WebKitNamespace".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamespace Mozilla WebKitNamespace documentation>
+newtype WebKitNamespace = WebKitNamespace { unWebKitNamespace :: JSVal }
+
+instance PToJSVal WebKitNamespace where
+  pToJSVal = unWebKitNamespace
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebKitNamespace where
+  pFromJSVal = WebKitNamespace
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebKitNamespace where
+  toJSVal = return . unWebKitNamespace
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebKitNamespace where
+  fromJSVal v = fmap WebKitNamespace <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebKitNamespace where
+  makeObject = makeObject . unWebKitNamespace
+
+instance IsGObject WebKitNamespace where
+  toGObject = GObject . unWebKitNamespace
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebKitNamespace . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebKitNamespace :: IsGObject obj => obj -> JSM WebKitNamespace
+castToWebKitNamespace = castTo gTypeWebKitNamespace "WebKitNamespace"
+
+gTypeWebKitNamespace :: JSM GType
+gTypeWebKitNamespace = GType . Object <$> jsg "WebKitNamespace"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.WebKitPlaybackTargetAvailabilityEvent".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitPlaybackTargetAvailabilityEvent Mozilla WebKitPlaybackTargetAvailabilityEvent documentation>
+newtype WebKitPlaybackTargetAvailabilityEvent = WebKitPlaybackTargetAvailabilityEvent { unWebKitPlaybackTargetAvailabilityEvent :: JSVal }
+
+instance PToJSVal WebKitPlaybackTargetAvailabilityEvent where
+  pToJSVal = unWebKitPlaybackTargetAvailabilityEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebKitPlaybackTargetAvailabilityEvent where
+  pFromJSVal = WebKitPlaybackTargetAvailabilityEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebKitPlaybackTargetAvailabilityEvent where
+  toJSVal = return . unWebKitPlaybackTargetAvailabilityEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebKitPlaybackTargetAvailabilityEvent where
+  fromJSVal v = fmap WebKitPlaybackTargetAvailabilityEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebKitPlaybackTargetAvailabilityEvent where
+  makeObject = makeObject . unWebKitPlaybackTargetAvailabilityEvent
+
+instance IsEvent WebKitPlaybackTargetAvailabilityEvent
+instance IsGObject WebKitPlaybackTargetAvailabilityEvent where
+  toGObject = GObject . unWebKitPlaybackTargetAvailabilityEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebKitPlaybackTargetAvailabilityEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebKitPlaybackTargetAvailabilityEvent :: IsGObject obj => obj -> JSM WebKitPlaybackTargetAvailabilityEvent
+castToWebKitPlaybackTargetAvailabilityEvent = castTo gTypeWebKitPlaybackTargetAvailabilityEvent "WebKitPlaybackTargetAvailabilityEvent"
+
+gTypeWebKitPlaybackTargetAvailabilityEvent :: JSM GType
+gTypeWebKitPlaybackTargetAvailabilityEvent = GType . Object <$> jsg "WebKitPlaybackTargetAvailabilityEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.WebKitPoint".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitPoint Mozilla WebKitPoint documentation>
+newtype WebKitPoint = WebKitPoint { unWebKitPoint :: JSVal }
+
+instance PToJSVal WebKitPoint where
+  pToJSVal = unWebKitPoint
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebKitPoint where
+  pFromJSVal = WebKitPoint
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebKitPoint where
+  toJSVal = return . unWebKitPoint
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebKitPoint where
+  fromJSVal v = fmap WebKitPoint <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebKitPoint where
+  makeObject = makeObject . unWebKitPoint
+
+instance IsGObject WebKitPoint where
+  toGObject = GObject . unWebKitPoint
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebKitPoint . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebKitPoint :: IsGObject obj => obj -> JSM WebKitPoint
+castToWebKitPoint = castTo gTypeWebKitPoint "WebKitPoint"
+
+gTypeWebKitPoint :: JSM GType
+gTypeWebKitPoint = GType . Object <$> jsg "WebKitPoint"
+#else
+type IsWebKitPoint o = WebKitPointClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.WebKitTransitionEvent".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitTransitionEvent Mozilla WebKitTransitionEvent documentation>
+newtype WebKitTransitionEvent = WebKitTransitionEvent { unWebKitTransitionEvent :: JSVal }
+
+instance PToJSVal WebKitTransitionEvent where
+  pToJSVal = unWebKitTransitionEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebKitTransitionEvent where
+  pFromJSVal = WebKitTransitionEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebKitTransitionEvent where
+  toJSVal = return . unWebKitTransitionEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebKitTransitionEvent where
+  fromJSVal v = fmap WebKitTransitionEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebKitTransitionEvent where
+  makeObject = makeObject . unWebKitTransitionEvent
+
+instance IsEvent WebKitTransitionEvent
+instance IsGObject WebKitTransitionEvent where
+  toGObject = GObject . unWebKitTransitionEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebKitTransitionEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebKitTransitionEvent :: IsGObject obj => obj -> JSM WebKitTransitionEvent
+castToWebKitTransitionEvent = castTo gTypeWebKitTransitionEvent "WebKitTransitionEvent"
+
+gTypeWebKitTransitionEvent :: JSM GType
+gTypeWebKitTransitionEvent = GType . Object <$> jsg "WebKitTransitionEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.WebSocket".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket Mozilla WebSocket documentation>
+newtype WebSocket = WebSocket { unWebSocket :: JSVal }
+
+instance PToJSVal WebSocket where
+  pToJSVal = unWebSocket
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebSocket where
+  pFromJSVal = WebSocket
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebSocket where
+  toJSVal = return . unWebSocket
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebSocket where
+  fromJSVal v = fmap WebSocket <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebSocket where
+  makeObject = makeObject . unWebSocket
+
+instance IsEventTarget WebSocket
+instance IsGObject WebSocket where
+  toGObject = GObject . unWebSocket
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebSocket . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebSocket :: IsGObject obj => obj -> JSM WebSocket
+castToWebSocket = castTo gTypeWebSocket "WebSocket"
+
+gTypeWebSocket :: JSM GType
+gTypeWebSocket = GType . Object <$> jsg "WebSocket"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.WheelEvent".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.MouseEvent"
+--     * "Language.Javascript.JSaddle.DOM.UIEvent"
+--     * "Language.Javascript.JSaddle.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent Mozilla WheelEvent documentation>
+newtype WheelEvent = WheelEvent { unWheelEvent :: JSVal }
+
+instance PToJSVal WheelEvent where
+  pToJSVal = unWheelEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WheelEvent where
+  pFromJSVal = WheelEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WheelEvent where
+  toJSVal = return . unWheelEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WheelEvent where
+  fromJSVal v = fmap WheelEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WheelEvent where
+  makeObject = makeObject . unWheelEvent
+
+instance IsMouseEvent WheelEvent
+instance IsUIEvent WheelEvent
+instance IsEvent WheelEvent
+instance IsGObject WheelEvent where
+  toGObject = GObject . unWheelEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WheelEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWheelEvent :: IsGObject obj => obj -> JSM WheelEvent
+castToWheelEvent = castTo gTypeWheelEvent "WheelEvent"
+
+gTypeWheelEvent :: JSM GType
+gTypeWheelEvent = GType . Object <$> jsg "WheelEvent"
+#else
+#ifndef USE_OLD_WEBKIT
+type IsWheelEvent o = WheelEventClass o
+#endif
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.Window".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Window Mozilla Window documentation>
+newtype Window = Window { unWindow :: JSVal }
+
+instance PToJSVal Window where
+  pToJSVal = unWindow
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Window where
+  pFromJSVal = Window
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Window where
+  toJSVal = return . unWindow
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Window where
+  fromJSVal v = fmap Window <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject Window where
+  makeObject = makeObject . unWindow
+
+instance IsEventTarget Window
+instance IsGObject Window where
+  toGObject = GObject . unWindow
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Window . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWindow :: IsGObject obj => obj -> JSM Window
+castToWindow = castTo gTypeWindow "Window"
+
+gTypeWindow :: JSM GType
+gTypeWindow = GType . Object <$> jsg "Window"
+#else
+type IsWindow o = WindowClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.WindowBase64".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64 Mozilla WindowBase64 documentation>
+newtype WindowBase64 = WindowBase64 { unWindowBase64 :: JSVal }
+
+instance PToJSVal WindowBase64 where
+  pToJSVal = unWindowBase64
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WindowBase64 where
+  pFromJSVal = WindowBase64
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WindowBase64 where
+  toJSVal = return . unWindowBase64
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WindowBase64 where
+  fromJSVal v = fmap WindowBase64 <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WindowBase64 where
+  makeObject = makeObject . unWindowBase64
+
+instance IsGObject WindowBase64 where
+  toGObject = GObject . unWindowBase64
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WindowBase64 . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWindowBase64 :: IsGObject obj => obj -> JSM WindowBase64
+castToWindowBase64 = castTo gTypeWindowBase64 "WindowBase64"
+
+gTypeWindowBase64 :: JSM GType
+gTypeWindowBase64 = GType . Object <$> jsg "WindowBase64"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.WindowTimers".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers Mozilla WindowTimers documentation>
+newtype WindowTimers = WindowTimers { unWindowTimers :: JSVal }
+
+instance PToJSVal WindowTimers where
+  pToJSVal = unWindowTimers
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WindowTimers where
+  pFromJSVal = WindowTimers
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WindowTimers where
+  toJSVal = return . unWindowTimers
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WindowTimers where
+  fromJSVal v = fmap WindowTimers <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WindowTimers where
+  makeObject = makeObject . unWindowTimers
+
+instance IsGObject WindowTimers where
+  toGObject = GObject . unWindowTimers
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WindowTimers . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWindowTimers :: IsGObject obj => obj -> JSM WindowTimers
+castToWindowTimers = castTo gTypeWindowTimers "WindowTimers"
+
+gTypeWindowTimers :: JSM GType
+gTypeWindowTimers = GType . Object <$> jsg "WindowTimers"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.Worker".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Worker Mozilla Worker documentation>
+newtype Worker = Worker { unWorker :: JSVal }
+
+instance PToJSVal Worker where
+  pToJSVal = unWorker
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Worker where
+  pFromJSVal = Worker
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Worker where
+  toJSVal = return . unWorker
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Worker where
+  fromJSVal v = fmap Worker <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject Worker where
+  makeObject = makeObject . unWorker
+
+instance IsEventTarget Worker
+instance IsGObject Worker where
+  toGObject = GObject . unWorker
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Worker . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWorker :: IsGObject obj => obj -> JSM Worker
+castToWorker = castTo gTypeWorker "Worker"
+
+gTypeWorker :: JSM GType
+gTypeWorker = GType . Object <$> jsg "Worker"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.WorkerGlobalScope".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope Mozilla WorkerGlobalScope documentation>
+newtype WorkerGlobalScope = WorkerGlobalScope { unWorkerGlobalScope :: JSVal }
+
+instance PToJSVal WorkerGlobalScope where
+  pToJSVal = unWorkerGlobalScope
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WorkerGlobalScope where
+  pFromJSVal = WorkerGlobalScope
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WorkerGlobalScope where
+  toJSVal = return . unWorkerGlobalScope
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WorkerGlobalScope where
+  fromJSVal v = fmap WorkerGlobalScope <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WorkerGlobalScope where
+  makeObject = makeObject . unWorkerGlobalScope
+
+class IsEventTarget o => IsWorkerGlobalScope o
+toWorkerGlobalScope :: IsWorkerGlobalScope o => o -> WorkerGlobalScope
+toWorkerGlobalScope = unsafeCastGObject . toGObject
+
+instance IsWorkerGlobalScope WorkerGlobalScope
+instance IsEventTarget WorkerGlobalScope
+instance IsGObject WorkerGlobalScope where
+  toGObject = GObject . unWorkerGlobalScope
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WorkerGlobalScope . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWorkerGlobalScope :: IsGObject obj => obj -> JSM WorkerGlobalScope
+castToWorkerGlobalScope = castTo gTypeWorkerGlobalScope "WorkerGlobalScope"
+
+gTypeWorkerGlobalScope :: JSM GType
+gTypeWorkerGlobalScope = GType . Object <$> jsg "WorkerGlobalScope"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.WorkerLocation".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WorkerLocation Mozilla WorkerLocation documentation>
+newtype WorkerLocation = WorkerLocation { unWorkerLocation :: JSVal }
+
+instance PToJSVal WorkerLocation where
+  pToJSVal = unWorkerLocation
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WorkerLocation where
+  pFromJSVal = WorkerLocation
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WorkerLocation where
+  toJSVal = return . unWorkerLocation
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WorkerLocation where
+  fromJSVal v = fmap WorkerLocation <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WorkerLocation where
+  makeObject = makeObject . unWorkerLocation
+
+instance IsGObject WorkerLocation where
+  toGObject = GObject . unWorkerLocation
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WorkerLocation . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWorkerLocation :: IsGObject obj => obj -> JSM WorkerLocation
+castToWorkerLocation = castTo gTypeWorkerLocation "WorkerLocation"
+
+gTypeWorkerLocation :: JSM GType
+gTypeWorkerLocation = GType . Object <$> jsg "WorkerLocation"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.WorkerNavigator".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WorkerNavigator Mozilla WorkerNavigator documentation>
+newtype WorkerNavigator = WorkerNavigator { unWorkerNavigator :: JSVal }
+
+instance PToJSVal WorkerNavigator where
+  pToJSVal = unWorkerNavigator
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WorkerNavigator where
+  pFromJSVal = WorkerNavigator
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WorkerNavigator where
+  toJSVal = return . unWorkerNavigator
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WorkerNavigator where
+  fromJSVal v = fmap WorkerNavigator <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WorkerNavigator where
+  makeObject = makeObject . unWorkerNavigator
+
+instance IsGObject WorkerNavigator where
+  toGObject = GObject . unWorkerNavigator
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WorkerNavigator . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWorkerNavigator :: IsGObject obj => obj -> JSM WorkerNavigator
+castToWorkerNavigator = castTo gTypeWorkerNavigator "WorkerNavigator"
+
+gTypeWorkerNavigator :: JSM GType
+gTypeWorkerNavigator = GType . Object <$> jsg "WorkerNavigator"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.XMLHttpRequest".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest Mozilla XMLHttpRequest documentation>
+newtype XMLHttpRequest = XMLHttpRequest { unXMLHttpRequest :: JSVal }
+
+instance PToJSVal XMLHttpRequest where
+  pToJSVal = unXMLHttpRequest
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal XMLHttpRequest where
+  pFromJSVal = XMLHttpRequest
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal XMLHttpRequest where
+  toJSVal = return . unXMLHttpRequest
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal XMLHttpRequest where
+  fromJSVal v = fmap XMLHttpRequest <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject XMLHttpRequest where
+  makeObject = makeObject . unXMLHttpRequest
+
+instance IsEventTarget XMLHttpRequest
+instance IsGObject XMLHttpRequest where
+  toGObject = GObject . unXMLHttpRequest
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = XMLHttpRequest . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToXMLHttpRequest :: IsGObject obj => obj -> JSM XMLHttpRequest
+castToXMLHttpRequest = castTo gTypeXMLHttpRequest "XMLHttpRequest"
+
+gTypeXMLHttpRequest :: JSM GType
+gTypeXMLHttpRequest = GType . Object <$> jsg "XMLHttpRequest"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.XMLHttpRequestProgressEvent".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.ProgressEvent"
+--     * "Language.Javascript.JSaddle.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequestProgressEvent Mozilla XMLHttpRequestProgressEvent documentation>
+newtype XMLHttpRequestProgressEvent = XMLHttpRequestProgressEvent { unXMLHttpRequestProgressEvent :: JSVal }
+
+instance PToJSVal XMLHttpRequestProgressEvent where
+  pToJSVal = unXMLHttpRequestProgressEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal XMLHttpRequestProgressEvent where
+  pFromJSVal = XMLHttpRequestProgressEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal XMLHttpRequestProgressEvent where
+  toJSVal = return . unXMLHttpRequestProgressEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal XMLHttpRequestProgressEvent where
+  fromJSVal v = fmap XMLHttpRequestProgressEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject XMLHttpRequestProgressEvent where
+  makeObject = makeObject . unXMLHttpRequestProgressEvent
+
+instance IsProgressEvent XMLHttpRequestProgressEvent
+instance IsEvent XMLHttpRequestProgressEvent
+instance IsGObject XMLHttpRequestProgressEvent where
+  toGObject = GObject . unXMLHttpRequestProgressEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = XMLHttpRequestProgressEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToXMLHttpRequestProgressEvent :: IsGObject obj => obj -> JSM XMLHttpRequestProgressEvent
+castToXMLHttpRequestProgressEvent = castTo gTypeXMLHttpRequestProgressEvent "XMLHttpRequestProgressEvent"
+
+gTypeXMLHttpRequestProgressEvent :: JSM GType
+gTypeXMLHttpRequestProgressEvent = GType . Object <$> jsg "XMLHttpRequestProgressEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.XMLHttpRequestUpload".
+-- Base interface functions are in:
+--
+--     * "Language.Javascript.JSaddle.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequestUpload Mozilla XMLHttpRequestUpload documentation>
+newtype XMLHttpRequestUpload = XMLHttpRequestUpload { unXMLHttpRequestUpload :: JSVal }
+
+instance PToJSVal XMLHttpRequestUpload where
+  pToJSVal = unXMLHttpRequestUpload
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal XMLHttpRequestUpload where
+  pFromJSVal = XMLHttpRequestUpload
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal XMLHttpRequestUpload where
+  toJSVal = return . unXMLHttpRequestUpload
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal XMLHttpRequestUpload where
+  fromJSVal v = fmap XMLHttpRequestUpload <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject XMLHttpRequestUpload where
+  makeObject = makeObject . unXMLHttpRequestUpload
+
+instance IsEventTarget XMLHttpRequestUpload
+instance IsGObject XMLHttpRequestUpload where
+  toGObject = GObject . unXMLHttpRequestUpload
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = XMLHttpRequestUpload . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToXMLHttpRequestUpload :: IsGObject obj => obj -> JSM XMLHttpRequestUpload
+castToXMLHttpRequestUpload = castTo gTypeXMLHttpRequestUpload "XMLHttpRequestUpload"
+
+gTypeXMLHttpRequestUpload :: JSM GType
+gTypeXMLHttpRequestUpload = GType . Object <$> jsg "XMLHttpRequestUpload"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.XMLSerializer".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/XMLSerializer Mozilla XMLSerializer documentation>
+newtype XMLSerializer = XMLSerializer { unXMLSerializer :: JSVal }
+
+instance PToJSVal XMLSerializer where
+  pToJSVal = unXMLSerializer
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal XMLSerializer where
+  pFromJSVal = XMLSerializer
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal XMLSerializer where
+  toJSVal = return . unXMLSerializer
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal XMLSerializer where
+  fromJSVal v = fmap XMLSerializer <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject XMLSerializer where
+  makeObject = makeObject . unXMLSerializer
+
+instance IsGObject XMLSerializer where
+  toGObject = GObject . unXMLSerializer
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = XMLSerializer . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToXMLSerializer :: IsGObject obj => obj -> JSM XMLSerializer
+castToXMLSerializer = castTo gTypeXMLSerializer "XMLSerializer"
+
+gTypeXMLSerializer :: JSM GType
+gTypeXMLSerializer = GType . Object <$> jsg "XMLSerializer"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.XPathEvaluator".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/XPathEvaluator Mozilla XPathEvaluator documentation>
+newtype XPathEvaluator = XPathEvaluator { unXPathEvaluator :: JSVal }
+
+instance PToJSVal XPathEvaluator where
+  pToJSVal = unXPathEvaluator
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal XPathEvaluator where
+  pFromJSVal = XPathEvaluator
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal XPathEvaluator where
+  toJSVal = return . unXPathEvaluator
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal XPathEvaluator where
+  fromJSVal v = fmap XPathEvaluator <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject XPathEvaluator where
+  makeObject = makeObject . unXPathEvaluator
+
+instance IsGObject XPathEvaluator where
+  toGObject = GObject . unXPathEvaluator
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = XPathEvaluator . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToXPathEvaluator :: IsGObject obj => obj -> JSM XPathEvaluator
+castToXPathEvaluator = castTo gTypeXPathEvaluator "XPathEvaluator"
+
+gTypeXPathEvaluator :: JSM GType
+gTypeXPathEvaluator = GType . Object <$> jsg "XPathEvaluator"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.XPathExpression".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/XPathExpression Mozilla XPathExpression documentation>
+newtype XPathExpression = XPathExpression { unXPathExpression :: JSVal }
+
+instance PToJSVal XPathExpression where
+  pToJSVal = unXPathExpression
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal XPathExpression where
+  pFromJSVal = XPathExpression
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal XPathExpression where
+  toJSVal = return . unXPathExpression
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal XPathExpression where
+  fromJSVal v = fmap XPathExpression <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject XPathExpression where
+  makeObject = makeObject . unXPathExpression
+
+instance IsGObject XPathExpression where
+  toGObject = GObject . unXPathExpression
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = XPathExpression . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToXPathExpression :: IsGObject obj => obj -> JSM XPathExpression
+castToXPathExpression = castTo gTypeXPathExpression "XPathExpression"
+
+gTypeXPathExpression :: JSM GType
+gTypeXPathExpression = GType . Object <$> jsg "XPathExpression"
+#else
+type IsXPathExpression o = XPathExpressionClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.XPathNSResolver".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/XPathNSResolver Mozilla XPathNSResolver documentation>
+newtype XPathNSResolver = XPathNSResolver { unXPathNSResolver :: JSVal }
+
+instance PToJSVal XPathNSResolver where
+  pToJSVal = unXPathNSResolver
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal XPathNSResolver where
+  pFromJSVal = XPathNSResolver
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal XPathNSResolver where
+  toJSVal = return . unXPathNSResolver
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal XPathNSResolver where
+  fromJSVal v = fmap XPathNSResolver <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject XPathNSResolver where
+  makeObject = makeObject . unXPathNSResolver
+
+instance IsGObject XPathNSResolver where
+  toGObject = GObject . unXPathNSResolver
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = XPathNSResolver . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToXPathNSResolver :: IsGObject obj => obj -> JSM XPathNSResolver
+castToXPathNSResolver = castTo gTypeXPathNSResolver "XPathNSResolver"
+
+gTypeXPathNSResolver :: JSM GType
+gTypeXPathNSResolver = GType . Object <$> jsg "XPathNSResolver"
+#else
+type IsXPathNSResolver o = XPathNSResolverClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.XPathResult".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/XPathResult Mozilla XPathResult documentation>
+newtype XPathResult = XPathResult { unXPathResult :: JSVal }
+
+instance PToJSVal XPathResult where
+  pToJSVal = unXPathResult
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal XPathResult where
+  pFromJSVal = XPathResult
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal XPathResult where
+  toJSVal = return . unXPathResult
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal XPathResult where
+  fromJSVal v = fmap XPathResult <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject XPathResult where
+  makeObject = makeObject . unXPathResult
+
+instance IsGObject XPathResult where
+  toGObject = GObject . unXPathResult
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = XPathResult . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToXPathResult :: IsGObject obj => obj -> JSM XPathResult
+castToXPathResult = castTo gTypeXPathResult "XPathResult"
+
+gTypeXPathResult :: JSM GType
+gTypeXPathResult = GType . Object <$> jsg "XPathResult"
+#else
+type IsXPathResult o = XPathResultClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "Language.Javascript.JSaddle.DOM.XSLTProcessor".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor Mozilla XSLTProcessor documentation>
+newtype XSLTProcessor = XSLTProcessor { unXSLTProcessor :: JSVal }
+
+instance PToJSVal XSLTProcessor where
+  pToJSVal = unXSLTProcessor
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal XSLTProcessor where
+  pFromJSVal = XSLTProcessor
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal XSLTProcessor where
+  toJSVal = return . unXSLTProcessor
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal XSLTProcessor where
+  fromJSVal v = fmap XSLTProcessor <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject XSLTProcessor where
+  makeObject = makeObject . unXSLTProcessor
+
+instance IsGObject XSLTProcessor where
+  toGObject = GObject . unXSLTProcessor
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = XSLTProcessor . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToXSLTProcessor :: IsGObject obj => obj -> JSM XSLTProcessor
+castToXSLTProcessor = castTo gTypeXSLTProcessor "XSLTProcessor"
+
+gTypeXSLTProcessor :: JSM GType
+gTypeXSLTProcessor = GType . Object <$> jsg "XSLTProcessor"
+#endif
+
+
diff --git a/src/Language/Javascript/JSaddle/DOM/UIEvent.hs b/src/Language/Javascript/JSaddle/DOM/UIEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/UIEvent.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.UIEvent (
+  module Language.Javascript.JSaddle.DOM.Generated.UIEvent
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.UIEvent
diff --git a/src/Language/Javascript/JSaddle/DOM/UIRequestEvent.hs b/src/Language/Javascript/JSaddle/DOM/UIRequestEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/UIRequestEvent.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.UIRequestEvent (
+  module Language.Javascript.JSaddle.DOM.Generated.UIRequestEvent
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.UIRequestEvent
diff --git a/src/Language/Javascript/JSaddle/DOM/URL.hs b/src/Language/Javascript/JSaddle/DOM/URL.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/URL.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.URL (
+  module Language.Javascript.JSaddle.DOM.Generated.URL
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.URL
diff --git a/src/Language/Javascript/JSaddle/DOM/URLUtils.hs b/src/Language/Javascript/JSaddle/DOM/URLUtils.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/URLUtils.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.URLUtils (
+  module Language.Javascript.JSaddle.DOM.Generated.URLUtils
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.URLUtils
diff --git a/src/Language/Javascript/JSaddle/DOM/UserMessageHandler.hs b/src/Language/Javascript/JSaddle/DOM/UserMessageHandler.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/UserMessageHandler.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.UserMessageHandler (
+  module Language.Javascript.JSaddle.DOM.Generated.UserMessageHandler
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.UserMessageHandler
diff --git a/src/Language/Javascript/JSaddle/DOM/VTTCue.hs b/src/Language/Javascript/JSaddle/DOM/VTTCue.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/VTTCue.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.VTTCue (
+  module Language.Javascript.JSaddle.DOM.Generated.VTTCue
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.VTTCue
diff --git a/src/Language/Javascript/JSaddle/DOM/VTTRegion.hs b/src/Language/Javascript/JSaddle/DOM/VTTRegion.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/VTTRegion.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.VTTRegion (
+  module Language.Javascript.JSaddle.DOM.Generated.VTTRegion
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.VTTRegion
diff --git a/src/Language/Javascript/JSaddle/DOM/VTTRegionList.hs b/src/Language/Javascript/JSaddle/DOM/VTTRegionList.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/VTTRegionList.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.VTTRegionList (
+  module Language.Javascript.JSaddle.DOM.Generated.VTTRegionList
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.VTTRegionList
diff --git a/src/Language/Javascript/JSaddle/DOM/ValidityState.hs b/src/Language/Javascript/JSaddle/DOM/ValidityState.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/ValidityState.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.ValidityState (
+  module Language.Javascript.JSaddle.DOM.Generated.ValidityState
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.ValidityState
diff --git a/src/Language/Javascript/JSaddle/DOM/VideoPlaybackQuality.hs b/src/Language/Javascript/JSaddle/DOM/VideoPlaybackQuality.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/VideoPlaybackQuality.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.VideoPlaybackQuality (
+  module Language.Javascript.JSaddle.DOM.Generated.VideoPlaybackQuality
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.VideoPlaybackQuality
diff --git a/src/Language/Javascript/JSaddle/DOM/VideoStreamTrack.hs b/src/Language/Javascript/JSaddle/DOM/VideoStreamTrack.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/VideoStreamTrack.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.VideoStreamTrack (
+  module Language.Javascript.JSaddle.DOM.Generated.VideoStreamTrack
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.VideoStreamTrack
diff --git a/src/Language/Javascript/JSaddle/DOM/VideoTrack.hs b/src/Language/Javascript/JSaddle/DOM/VideoTrack.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/VideoTrack.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.VideoTrack (
+  module Language.Javascript.JSaddle.DOM.Generated.VideoTrack
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.VideoTrack
diff --git a/src/Language/Javascript/JSaddle/DOM/VideoTrackList.hs b/src/Language/Javascript/JSaddle/DOM/VideoTrackList.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/VideoTrackList.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.VideoTrackList (
+  module Language.Javascript.JSaddle.DOM.Generated.VideoTrackList
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.VideoTrackList
diff --git a/src/Language/Javascript/JSaddle/DOM/VoidCallback.hs b/src/Language/Javascript/JSaddle/DOM/VoidCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/VoidCallback.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.VoidCallback (
+  module Language.Javascript.JSaddle.DOM.Generated.VoidCallback
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.VoidCallback
diff --git a/src/Language/Javascript/JSaddle/DOM/WaveShaperNode.hs b/src/Language/Javascript/JSaddle/DOM/WaveShaperNode.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/WaveShaperNode.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.WaveShaperNode (
+  module Language.Javascript.JSaddle.DOM.Generated.WaveShaperNode
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.WaveShaperNode
diff --git a/src/Language/Javascript/JSaddle/DOM/WebGL2RenderingContext.hs b/src/Language/Javascript/JSaddle/DOM/WebGL2RenderingContext.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/WebGL2RenderingContext.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.WebGL2RenderingContext (
+  module Language.Javascript.JSaddle.DOM.Generated.WebGL2RenderingContext
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.WebGL2RenderingContext
diff --git a/src/Language/Javascript/JSaddle/DOM/WebGLActiveInfo.hs b/src/Language/Javascript/JSaddle/DOM/WebGLActiveInfo.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/WebGLActiveInfo.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.WebGLActiveInfo (
+  module Language.Javascript.JSaddle.DOM.Generated.WebGLActiveInfo
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.WebGLActiveInfo
diff --git a/src/Language/Javascript/JSaddle/DOM/WebGLCompressedTextureATC.hs b/src/Language/Javascript/JSaddle/DOM/WebGLCompressedTextureATC.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/WebGLCompressedTextureATC.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.WebGLCompressedTextureATC (
+  module Language.Javascript.JSaddle.DOM.Generated.WebGLCompressedTextureATC
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.WebGLCompressedTextureATC
diff --git a/src/Language/Javascript/JSaddle/DOM/WebGLCompressedTexturePVRTC.hs b/src/Language/Javascript/JSaddle/DOM/WebGLCompressedTexturePVRTC.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/WebGLCompressedTexturePVRTC.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.WebGLCompressedTexturePVRTC (
+  module Language.Javascript.JSaddle.DOM.Generated.WebGLCompressedTexturePVRTC
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.WebGLCompressedTexturePVRTC
diff --git a/src/Language/Javascript/JSaddle/DOM/WebGLCompressedTextureS3TC.hs b/src/Language/Javascript/JSaddle/DOM/WebGLCompressedTextureS3TC.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/WebGLCompressedTextureS3TC.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.WebGLCompressedTextureS3TC (
+  module Language.Javascript.JSaddle.DOM.Generated.WebGLCompressedTextureS3TC
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.WebGLCompressedTextureS3TC
diff --git a/src/Language/Javascript/JSaddle/DOM/WebGLContextAttributes.hs b/src/Language/Javascript/JSaddle/DOM/WebGLContextAttributes.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/WebGLContextAttributes.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.WebGLContextAttributes (
+  module Language.Javascript.JSaddle.DOM.Generated.WebGLContextAttributes
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.WebGLContextAttributes
diff --git a/src/Language/Javascript/JSaddle/DOM/WebGLContextEvent.hs b/src/Language/Javascript/JSaddle/DOM/WebGLContextEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/WebGLContextEvent.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.WebGLContextEvent (
+  module Language.Javascript.JSaddle.DOM.Generated.WebGLContextEvent
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.WebGLContextEvent
diff --git a/src/Language/Javascript/JSaddle/DOM/WebGLDebugRendererInfo.hs b/src/Language/Javascript/JSaddle/DOM/WebGLDebugRendererInfo.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/WebGLDebugRendererInfo.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.WebGLDebugRendererInfo (
+  module Language.Javascript.JSaddle.DOM.Generated.WebGLDebugRendererInfo
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.WebGLDebugRendererInfo
diff --git a/src/Language/Javascript/JSaddle/DOM/WebGLDebugShaders.hs b/src/Language/Javascript/JSaddle/DOM/WebGLDebugShaders.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/WebGLDebugShaders.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.WebGLDebugShaders (
+  module Language.Javascript.JSaddle.DOM.Generated.WebGLDebugShaders
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.WebGLDebugShaders
diff --git a/src/Language/Javascript/JSaddle/DOM/WebGLDepthTexture.hs b/src/Language/Javascript/JSaddle/DOM/WebGLDepthTexture.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/WebGLDepthTexture.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.WebGLDepthTexture (
+  module Language.Javascript.JSaddle.DOM.Generated.WebGLDepthTexture
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.WebGLDepthTexture
diff --git a/src/Language/Javascript/JSaddle/DOM/WebGLDrawBuffers.hs b/src/Language/Javascript/JSaddle/DOM/WebGLDrawBuffers.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/WebGLDrawBuffers.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.WebGLDrawBuffers (
+  module Language.Javascript.JSaddle.DOM.Generated.WebGLDrawBuffers
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.WebGLDrawBuffers
diff --git a/src/Language/Javascript/JSaddle/DOM/WebGLLoseContext.hs b/src/Language/Javascript/JSaddle/DOM/WebGLLoseContext.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/WebGLLoseContext.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.WebGLLoseContext (
+  module Language.Javascript.JSaddle.DOM.Generated.WebGLLoseContext
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.WebGLLoseContext
diff --git a/src/Language/Javascript/JSaddle/DOM/WebGLRenderingContextBase.hs b/src/Language/Javascript/JSaddle/DOM/WebGLRenderingContextBase.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/WebGLRenderingContextBase.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.WebGLRenderingContextBase (
+  module Language.Javascript.JSaddle.DOM.Generated.WebGLRenderingContextBase
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.WebGLRenderingContextBase
diff --git a/src/Language/Javascript/JSaddle/DOM/WebGLShaderPrecisionFormat.hs b/src/Language/Javascript/JSaddle/DOM/WebGLShaderPrecisionFormat.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/WebGLShaderPrecisionFormat.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.WebGLShaderPrecisionFormat (
+  module Language.Javascript.JSaddle.DOM.Generated.WebGLShaderPrecisionFormat
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.WebGLShaderPrecisionFormat
diff --git a/src/Language/Javascript/JSaddle/DOM/WebKitAnimationEvent.hs b/src/Language/Javascript/JSaddle/DOM/WebKitAnimationEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/WebKitAnimationEvent.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.WebKitAnimationEvent (
+  module Language.Javascript.JSaddle.DOM.Generated.WebKitAnimationEvent
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.WebKitAnimationEvent
diff --git a/src/Language/Javascript/JSaddle/DOM/WebKitCSSFilterValue.hs b/src/Language/Javascript/JSaddle/DOM/WebKitCSSFilterValue.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/WebKitCSSFilterValue.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.WebKitCSSFilterValue (
+  module Language.Javascript.JSaddle.DOM.Generated.WebKitCSSFilterValue
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.WebKitCSSFilterValue
diff --git a/src/Language/Javascript/JSaddle/DOM/WebKitCSSMatrix.hs b/src/Language/Javascript/JSaddle/DOM/WebKitCSSMatrix.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/WebKitCSSMatrix.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.WebKitCSSMatrix (
+  module Language.Javascript.JSaddle.DOM.Generated.WebKitCSSMatrix
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.WebKitCSSMatrix
diff --git a/src/Language/Javascript/JSaddle/DOM/WebKitCSSRegionRule.hs b/src/Language/Javascript/JSaddle/DOM/WebKitCSSRegionRule.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/WebKitCSSRegionRule.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.WebKitCSSRegionRule (
+  module Language.Javascript.JSaddle.DOM.Generated.WebKitCSSRegionRule
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.WebKitCSSRegionRule
diff --git a/src/Language/Javascript/JSaddle/DOM/WebKitCSSTransformValue.hs b/src/Language/Javascript/JSaddle/DOM/WebKitCSSTransformValue.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/WebKitCSSTransformValue.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.WebKitCSSTransformValue (
+  module Language.Javascript.JSaddle.DOM.Generated.WebKitCSSTransformValue
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.WebKitCSSTransformValue
diff --git a/src/Language/Javascript/JSaddle/DOM/WebKitCSSViewportRule.hs b/src/Language/Javascript/JSaddle/DOM/WebKitCSSViewportRule.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/WebKitCSSViewportRule.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.WebKitCSSViewportRule (
+  module Language.Javascript.JSaddle.DOM.Generated.WebKitCSSViewportRule
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.WebKitCSSViewportRule
diff --git a/src/Language/Javascript/JSaddle/DOM/WebKitNamedFlow.hs b/src/Language/Javascript/JSaddle/DOM/WebKitNamedFlow.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/WebKitNamedFlow.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.WebKitNamedFlow (
+  module Language.Javascript.JSaddle.DOM.Generated.WebKitNamedFlow
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.WebKitNamedFlow
diff --git a/src/Language/Javascript/JSaddle/DOM/WebKitNamespace.hs b/src/Language/Javascript/JSaddle/DOM/WebKitNamespace.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/WebKitNamespace.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.WebKitNamespace (
+  module Language.Javascript.JSaddle.DOM.Generated.WebKitNamespace
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.WebKitNamespace
diff --git a/src/Language/Javascript/JSaddle/DOM/WebKitPlaybackTargetAvailabilityEvent.hs b/src/Language/Javascript/JSaddle/DOM/WebKitPlaybackTargetAvailabilityEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/WebKitPlaybackTargetAvailabilityEvent.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.WebKitPlaybackTargetAvailabilityEvent (
+  module Language.Javascript.JSaddle.DOM.Generated.WebKitPlaybackTargetAvailabilityEvent
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.WebKitPlaybackTargetAvailabilityEvent
diff --git a/src/Language/Javascript/JSaddle/DOM/WebKitPoint.hs b/src/Language/Javascript/JSaddle/DOM/WebKitPoint.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/WebKitPoint.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.WebKitPoint (
+  module Language.Javascript.JSaddle.DOM.Generated.WebKitPoint
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.WebKitPoint
diff --git a/src/Language/Javascript/JSaddle/DOM/WebKitTransitionEvent.hs b/src/Language/Javascript/JSaddle/DOM/WebKitTransitionEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/WebKitTransitionEvent.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.WebKitTransitionEvent (
+  module Language.Javascript.JSaddle.DOM.Generated.WebKitTransitionEvent
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.WebKitTransitionEvent
diff --git a/src/Language/Javascript/JSaddle/DOM/WebSocket.hs b/src/Language/Javascript/JSaddle/DOM/WebSocket.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/WebSocket.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.WebSocket (
+  module Language.Javascript.JSaddle.DOM.Generated.WebSocket
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.WebSocket
diff --git a/src/Language/Javascript/JSaddle/DOM/WheelEvent.hs b/src/Language/Javascript/JSaddle/DOM/WheelEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/WheelEvent.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.WheelEvent (
+  module Language.Javascript.JSaddle.DOM.Generated.WheelEvent
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.WheelEvent
diff --git a/src/Language/Javascript/JSaddle/DOM/Window.hs b/src/Language/Javascript/JSaddle/DOM/Window.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Window.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.Window (
+  module Language.Javascript.JSaddle.DOM.Custom.Window
+  ) where
+import Language.Javascript.JSaddle.DOM.Custom.Window
diff --git a/src/Language/Javascript/JSaddle/DOM/WindowBase64.hs b/src/Language/Javascript/JSaddle/DOM/WindowBase64.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/WindowBase64.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.WindowBase64 (
+  module Language.Javascript.JSaddle.DOM.Generated.WindowBase64
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.WindowBase64
diff --git a/src/Language/Javascript/JSaddle/DOM/WindowTimers.hs b/src/Language/Javascript/JSaddle/DOM/WindowTimers.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/WindowTimers.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.WindowTimers (
+  module Language.Javascript.JSaddle.DOM.Generated.WindowTimers
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.WindowTimers
diff --git a/src/Language/Javascript/JSaddle/DOM/Worker.hs b/src/Language/Javascript/JSaddle/DOM/Worker.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/Worker.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.Worker (
+  module Language.Javascript.JSaddle.DOM.Generated.Worker
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.Worker
diff --git a/src/Language/Javascript/JSaddle/DOM/WorkerGlobalScope.hs b/src/Language/Javascript/JSaddle/DOM/WorkerGlobalScope.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/WorkerGlobalScope.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.WorkerGlobalScope (
+  module Language.Javascript.JSaddle.DOM.Generated.WorkerGlobalScope
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.WorkerGlobalScope
diff --git a/src/Language/Javascript/JSaddle/DOM/WorkerLocation.hs b/src/Language/Javascript/JSaddle/DOM/WorkerLocation.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/WorkerLocation.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.WorkerLocation (
+  module Language.Javascript.JSaddle.DOM.Generated.WorkerLocation
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.WorkerLocation
diff --git a/src/Language/Javascript/JSaddle/DOM/WorkerNavigator.hs b/src/Language/Javascript/JSaddle/DOM/WorkerNavigator.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/WorkerNavigator.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.WorkerNavigator (
+  module Language.Javascript.JSaddle.DOM.Generated.WorkerNavigator
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.WorkerNavigator
diff --git a/src/Language/Javascript/JSaddle/DOM/XMLHttpRequest.hs b/src/Language/Javascript/JSaddle/DOM/XMLHttpRequest.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/XMLHttpRequest.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.XMLHttpRequest (
+  module Language.Javascript.JSaddle.DOM.Custom.XMLHttpRequest
+  ) where
+import Language.Javascript.JSaddle.DOM.Custom.XMLHttpRequest
diff --git a/src/Language/Javascript/JSaddle/DOM/XMLHttpRequestProgressEvent.hs b/src/Language/Javascript/JSaddle/DOM/XMLHttpRequestProgressEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/XMLHttpRequestProgressEvent.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.XMLHttpRequestProgressEvent (
+  module Language.Javascript.JSaddle.DOM.Generated.XMLHttpRequestProgressEvent
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.XMLHttpRequestProgressEvent
diff --git a/src/Language/Javascript/JSaddle/DOM/XMLHttpRequestUpload.hs b/src/Language/Javascript/JSaddle/DOM/XMLHttpRequestUpload.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/XMLHttpRequestUpload.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.XMLHttpRequestUpload (
+  module Language.Javascript.JSaddle.DOM.Generated.XMLHttpRequestUpload
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.XMLHttpRequestUpload
diff --git a/src/Language/Javascript/JSaddle/DOM/XMLSerializer.hs b/src/Language/Javascript/JSaddle/DOM/XMLSerializer.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/XMLSerializer.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.XMLSerializer (
+  module Language.Javascript.JSaddle.DOM.Generated.XMLSerializer
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.XMLSerializer
diff --git a/src/Language/Javascript/JSaddle/DOM/XPathEvaluator.hs b/src/Language/Javascript/JSaddle/DOM/XPathEvaluator.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/XPathEvaluator.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.XPathEvaluator (
+  module Language.Javascript.JSaddle.DOM.Generated.XPathEvaluator
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.XPathEvaluator
diff --git a/src/Language/Javascript/JSaddle/DOM/XPathExpression.hs b/src/Language/Javascript/JSaddle/DOM/XPathExpression.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/XPathExpression.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.XPathExpression (
+  module Language.Javascript.JSaddle.DOM.Generated.XPathExpression
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.XPathExpression
diff --git a/src/Language/Javascript/JSaddle/DOM/XPathNSResolver.hs b/src/Language/Javascript/JSaddle/DOM/XPathNSResolver.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/XPathNSResolver.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.XPathNSResolver (
+  module Language.Javascript.JSaddle.DOM.Generated.XPathNSResolver
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.XPathNSResolver
diff --git a/src/Language/Javascript/JSaddle/DOM/XPathResult.hs b/src/Language/Javascript/JSaddle/DOM/XPathResult.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/XPathResult.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.XPathResult (
+  module Language.Javascript.JSaddle.DOM.Generated.XPathResult
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.XPathResult
diff --git a/src/Language/Javascript/JSaddle/DOM/XSLTProcessor.hs b/src/Language/Javascript/JSaddle/DOM/XSLTProcessor.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Javascript/JSaddle/DOM/XSLTProcessor.hs
@@ -0,0 +1,4 @@
+module Language.Javascript.JSaddle.DOM.XSLTProcessor (
+  module Language.Javascript.JSaddle.DOM.Generated.XSLTProcessor
+  ) where
+import Language.Javascript.JSaddle.DOM.Generated.XSLTProcessor
