diff --git a/sky/examples/calculator/buttons.sky b/sky/examples/calculator/buttons.sky
index 29c59c3..07b32e0 100644
--- a/sky/examples/calculator/buttons.sky
+++ b/sky/examples/calculator/buttons.sky
@@ -3,8 +3,8 @@
 
 <script>
   class AbstractButton extends Element {
-    constructor (module) {
-      super(module);
+    constructor (hostModule) {
+      super(hostModule);
       let selector = new SelectorQuery('.dynamic');
       this.addEventListener('pointer-down', (event) => {
         selector.findAll(this.shadowRoot).every((element) => element.setAttribute('clicked'));
@@ -59,8 +59,8 @@
      class extends AbstractButton {
        static get tagName() { return 'graybutton'; }
        static get shadow() { return true; }
-       constructor (module) {
-         super(module);
+       constructor (hostModule) {
+         super(hostModule);
          this.shadowRoot.append(module.document.findId('threed-button-shadow-tree').cloneNode(true));
        }
      }
@@ -69,8 +69,8 @@
      class extends AbstractButton {
        static get tagName() { return 'flatbutton'; }
        static get shadow() { return true; }
-       constructor (module) {
-         super(module);
+       constructor (hostModule) {
+         super(hostModule);
          this.shadowRoot.append(module.document.findId('flat-shadow-tree').cloneNode(true));
        }
      }
diff --git a/sky/examples/htmlish/framework/element.sky b/sky/examples/htmlish/framework/element.sky
index d2c1d1c..9df9c0d 100644
--- a/sky/examples/htmlish/framework/element.sky
+++ b/sky/examples/htmlish/framework/element.sky
@@ -22,10 +22,10 @@
  module.exports.Element = sky.registerElement(
    class extends Element {
      static get tagName() { return 'element'; }
-     constructor (module) {
-       super();
+     constructor (hostModule) {
+       super(hostModule);
        this.state = 'loading';
-       this.module = module;
+       this.module = hostModule;
        this.definedPrototype = sky.Element;
      }
      setPrototype(prototype) {
@@ -44,8 +44,8 @@
        }
        let tagName = this.getAttribute('name');
        let constructorName = tagName.charAt(0).toUpperCase() + tagName.slice(1) + 'Element';
-       let constructor = function (module) {
-         super(module);
+       let constructor = function (hostModule) {
+         super(hostModule);
          if (this.init)
            this.init();
          if (style)
diff --git a/sky/examples/radio.sky b/sky/examples/radio.sky
index 02c1f6a..3da67a0 100644
--- a/sky/examples/radio.sky
+++ b/sky/examples/radio.sky
@@ -13,8 +13,8 @@
    class extends Element {
      static get tagName() { return 'radio'; }
      static get shadow() { return true; }
-     constructor (module) {
-       super(module);
+     constructor (hostModule) {
+       super(hostModule);
        this.addEventListener('click', (event) => this.checked = true);
        this.shadowRoot.append(module.document.findId('radio-shadow').content.cloneNode(true));
      }
@@ -53,8 +53,8 @@
    class extends Element {
      static get tagName() { return 'radiogroup'; }
      static get shadow() { return true; }
-     constructor (module) {
-       super(module);
+     constructor (hostModule) {
+       super(hostModule);
        this.shadowRoot.append(module.document.findId('radiogroup-shadow').content.cloneNode(true));
      }
      get value () {
diff --git a/sky/specs/modules.md b/sky/specs/modules.md
index 7cdf70d..4a83f4d 100644
--- a/sky/specs/modules.md
+++ b/sky/specs/modules.md
@@ -56,11 +56,11 @@
   Object prototype = Element;
 }
 interface InternalElementConstructorWithoutShadow {
-  constructor (Module module);
+  constructor (Module hostModule);
   attribute String tagName;
 }
 interface InternalElementConstructorWithShadow {
-  constructor (Module module);
+  constructor (Module hostModule);
   attribute String tagName;
   attribute Boolean shadow;
 }
@@ -69,7 +69,7 @@
                                     InternalElementConstructorWithShadow);
 
 abstract class AbstractModule : EventTarget {
-  readonly attribute Document document; // O(1) // the Documentof the module or application
+  readonly attribute Document document; // O(1) // the Document of the module or application
   Promise<any> import(String url); // O(Yikes) // returns the module's exports
   private Array<Module> getImports(); O(N) // returns the Module objects of all the imported modules
 
@@ -90,16 +90,21 @@
   //    defaults to Element).
   //  - let shadow be option's shadow property's value coerced to a
   //    boolean, if the property is present, or else the value false.
-  //  - let shadow be option's tagName property's value.
-  //  - create a new Function that:
-  //      - throws if not called as a constructor
-  //      - creates an actual element object (the C++-backed object)
-  //      - initialises the shadow tree if shadow on the options is
-  //        true
-  //      - calls constructor, if it's not null, with the module as
-  //        the argument
-  //      - is marked as created by registerElement() so that it can
-  //        be recognised if used as an argument to registerElement()
+  //  - let tagName be option's tagName property's value.
+  //  - create a new Function that acts as if it had the signature of
+  //    the constructors in the ElementConstructor interface, and that
+  //    runs the follows steps when called:
+  //      - throw if not called as a constructor
+  //      - create an actual element object (the C++-backed object)
+  //        called tagName, along with the specified attributes
+  //      - initialise the shadow tree if shadow is true
+  //      - call constructor, if it's not null, with the module
+  //        within which the new element is being constructed as the
+  //        argument
+  //      - append all the specified children
+  //  - mark that new Function as created by registerElement() so that
+  //    it can be recognised if used as an argument to
+  //    registerElement()
   //  - let that new Function's prototype be the aforementioned prototype
   //  - let that new Function have tagName and shadow properties set to
   //    the aforementioned tagName and shadow
diff --git a/sky/specs/runloop.md b/sky/specs/runloop.md
index 20231fc..25b0c78 100644
--- a/sky/specs/runloop.md
+++ b/sky/specs/runloop.md
@@ -31,7 +31,7 @@
 7. Run pending tasks until the 8.333ms expires. Each task may only run
    for at most 1ms, after 1ms they get a (catchable) EDeadlineExceeded
    exception. While there are no pending tasks, sleep.
-   Tasks are thingsl like:
+   Tasks are things like:
     - timers
     - updating the DOM in response to parsing
     - input events
@@ -39,3 +39,6 @@
 
 TODO(ianh): Update the timings above to have some relationship to
 reality.
+
+TODO(ianh): Define how scroll notifications get sent, or decide to
+drop them entirely from this model.
