diff --git a/Elm.cabal b/Elm.cabal
--- a/Elm.cabal
+++ b/Elm.cabal
@@ -1,5 +1,5 @@
 Name:                Elm
-Version:             0.10.0.1
+Version:             0.10.0.2
 Synopsis:            The Elm language module.
 Description:         Elm aims to make client-side web-development more pleasant.
                      It is a statically/strongly typed, functional reactive
@@ -88,7 +88,7 @@
                        directory,
                        filepath,
                        indents,
-                       language-ecmascript,
+                       language-ecmascript < 1,
                        mtl >= 2,
                        pandoc >= 1.10,
                        parsec >= 3.1.1,
@@ -157,7 +157,7 @@
                        directory,
                        filepath,
                        indents,
-                       language-ecmascript,
+                       language-ecmascript < 1,
                        mtl >= 2,
                        pandoc >= 1.10,
                        parsec >= 3.1.1,
diff --git a/data/docs.json b/data/docs.json
--- a/data/docs.json
+++ b/data/docs.json
@@ -1,7 +1,7 @@
 [
 {
   "name": "Automaton",
-  "document": "This library is a way to package up dynamic behavior. It makes it easier to\ndynamically create dynamic components. See the [original release\nnotes](/blog/announce/version-0.5.0.elm) on this library to get a feel for how\nit can be used.\n\n# Create\n@docs pure, state, hiddenState\n\n# Evaluate\n@docs run, step\n\n# Combine\n@docs (\u003e\u003e\u003e), (\u003c\u003c\u003c), combine\n\n# Common Automatons\n@docs count, average",
+  "document": "This library is a way to package up dynamic behavior. It makes it easier to\ndynamically create dynamic components. See the [original release\nnotes](http://elm-lang.org/blog/announce/0.5.0.elm) on this library to get a feel for how\nit can be used.\n\n# Create\n@docs pure, state, hiddenState\n\n# Evaluate\n@docs run, step\n\n# Combine\n@docs (\u003e\u003e\u003e), (\u003c\u003c\u003c), combine\n\n# Common Automatons\n@docs count, average",
   "aliases": [],
   "datatypes": [],
   "values": [
@@ -6774,7 +6774,7 @@
   "values": [
     {
       "name": "asText",
-      "comment": "Convert anything to it's textual representation and make it displayable in\nbrowser\n\n        asText == text . monospace . show\n\nExcellent for debugging.",
+      "comment": "Convert anything to its textual representation and make it displayable in\nthe browser:\n\n        asText == text . monospace . show\n\nExcellent for debugging.",
       "raw": "asText : a -\u003e Element",
       "type": [
         "-\u003e",
@@ -7022,7 +7022,7 @@
     },
     {
       "name": "typeface",
-      "comment": "Set the typeface of some text. The first argument should be a comma\nseparated listing of the desired typefaces\n\n        \"helvetica, arial, sans-serif\"\n\nWorks the same as the CSS font-family property.",
+      "comment": "Set the typeface of some text. The first argument should be a comma\nseparated listing of the desired typefaces:\n\n        \"helvetica, arial, sans-serif\"\n\nWorks the same as the CSS font-family property.",
       "raw": "typeface : String -\u003e Text -\u003e Text",
       "type": [
         "-\u003e",
@@ -8057,13 +8057,17 @@
     {
       "name": "move",
       "comment": "Move a form by the given amount. This is a relative translation so\n`(move (10,10) form)` would move `form` ten pixels up and ten pixels to the\nright.",
-      "raw": "move : (number,number) -\u003e Form -\u003e Form",
+      "raw": "move : (Float,Float) -\u003e Form -\u003e Form",
       "type": [
         "-\u003e",
         [
           "_Tuple2",
-          "number",
-          "number"
+          [
+            "Float"
+          ],
+          [
+            "Float"
+          ]
         ],
         [
           "-\u003e",
@@ -8079,11 +8083,13 @@
     {
       "name": "moveX",
       "comment": "Move a shape in the x direction. This is relative so `(moveX 10 form)` moves\n`form` 10 pixels to the right.",
-      "raw": "moveX : number -\u003e Form -\u003e Form",
+      "raw": "moveX : Float -\u003e Form -\u003e Form",
       "type": [
         "-\u003e",
-        "number",
         [
+          "Float"
+        ],
+        [
           "-\u003e",
           [
             "Form"
@@ -8097,11 +8103,13 @@
     {
       "name": "moveY",
       "comment": "Move a shape in the y direction. This is relative so `(moveY 10 form)` moves\n`form` upwards by 10 pixels.",
-      "raw": "moveY : number -\u003e Form -\u003e Form",
+      "raw": "moveY : Float -\u003e Form -\u003e Form",
       "type": [
         "-\u003e",
-        "number",
         [
+          "Float"
+        ],
+        [
           "-\u003e",
           [
             "Form"
@@ -8241,11 +8249,13 @@
     {
       "name": "rotate",
       "comment": "Rotate a form by a given angle. Rotate takes standard Elm angles (radians)\nand turns things counterclockwise. So to turn `form` 30&deg; to the left\nyou would say, `(rotate (degrees 30) form)`.",
-      "raw": "rotate : number -\u003e Form -\u003e Form",
+      "raw": "rotate : Float -\u003e Form -\u003e Form",
       "type": [
         "-\u003e",
-        "number",
         [
+          "Float"
+        ],
+        [
           "-\u003e",
           [
             "Form"
@@ -8259,10 +8269,12 @@
     {
       "name": "scale",
       "comment": "Scale a form by a given factor. Scaling by 2 doubles the size.",
-      "raw": "scale : number -\u003e Form -\u003e Form",
+      "raw": "scale : Float -\u003e Form -\u003e Form",
       "type": [
         "-\u003e",
-        "number",
+        [
+          "Float"
+        ],
         [
           "-\u003e",
           [
diff --git a/data/elm-runtime.js b/data/elm-runtime.js
--- a/data/elm-runtime.js
+++ b/data/elm-runtime.js
@@ -892,7 +892,7 @@
             return "'" + addSlashes(v) + "'";
         } else if (type === "string") {
             return '"' + addSlashes(v) + '"';
-        } else if (type === "object" && '_' in v) {
+        } else if (type === "object" && '_' in v && probablyPublic(v)) {
             var output = [];
             for (var k in v._) {
                 for (var i = v._[k].length; i--; ) {
@@ -958,6 +958,27 @@
                   .replace(/\"/g, '\\"');
     }
 
+    function probablyPublic(v) {
+        var keys = Object.keys(v);
+        var len = keys.length;
+        if (len === 3
+            && 'props' in v
+            && 'element' in v) return false;
+        if (len === 5
+            && 'horizontal' in v
+            && 'vertical' in v
+            && 'x' in v
+            && 'y' in v) return false;
+        if (len === 7
+            && 'theta' in v
+            && 'scale' in v
+            && 'x' in v
+            && 'y' in v
+            && 'alpha' in v
+            && 'form' in v) return false;
+        return true;
+    }
+
     return elm.Native.Show.values = { show:toString };
 };
 Elm.Native.String = {};
@@ -1982,10 +2003,6 @@
     }
   }
 
-  function setHeader(pair) {
-    request.setRequestHeader( JS.fromString(pair._0), JS.fromString(pair._1) );
-  }
-
   function sendReq(queue,responses,req) {
     var response = { value: { ctor:'Waiting' } };
     queue.push(response);
@@ -2002,6 +2019,9 @@
       }
     };
     request.open(JS.fromString(req.verb), JS.fromString(req.url), true);
+    function setHeader(pair) {
+      request.setRequestHeader( JS.fromString(pair._0), JS.fromString(pair._1) );
+    }
     List.map(setHeader)(req.headers);
     request.send(JS.fromString(req.body));
   }
@@ -5389,7 +5409,7 @@
                                                                              ["y",f.y + arg1._1]],
                                                                             f)}
                                                        _E.Case($moduleName,
-                                                               "on line 182, column 20 to 48");
+                                                               "on line 170, column 20 to 48");
                                                      }()
                                             });
                               var form = function (f)
@@ -5511,7 +5531,7 @@
                                              return form(FElement(e))
                                            };
                               var Clipped = {ctor: "Clipped"};
-                              elm.Graphics.Collage.values = {_op: _op, defaultLine: defaultLine, solid: solid, dashed: dashed, dotted: dotted, form: form, fill: fill, filled: filled, textured: textured, gradient: gradient, outlined: outlined, traced: traced, sprite: sprite, toForm: toForm, group: group, groupTransform: groupTransform, rotate: rotate, scale: scale, move: move, moveX: moveX, moveY: moveY, alpha: alpha, collage: collage, path: path, segment: segment, polygon: polygon, rect: rect, square: square, oval: oval, circle: circle, ngon: ngon, Solid: Solid, Texture: Texture, Grad: Grad, Flat: Flat, Round: Round, Padded: Padded, Smooth: Smooth, Sharp: Sharp, Clipped: Clipped, FPath: FPath, FShape: FShape, FImage: FImage, FElement: FElement, FGroup: FGroup, Form: Form, LineStyle: LineStyle};
+                              elm.Graphics.Collage.values = {_op: _op, defaultLine: defaultLine, solid: solid, dashed: dashed, dotted: dotted, form: form, fill: fill, filled: filled, textured: textured, gradient: gradient, outlined: outlined, traced: traced, sprite: sprite, toForm: toForm, group: group, groupTransform: groupTransform, move: move, moveX: moveX, moveY: moveY, scale: scale, rotate: rotate, alpha: alpha, collage: collage, path: path, segment: segment, polygon: polygon, rect: rect, square: square, oval: oval, circle: circle, ngon: ngon, Solid: Solid, Texture: Texture, Grad: Grad, Flat: Flat, Round: Round, Padded: Padded, Smooth: Smooth, Sharp: Sharp, Clipped: Clipped, FPath: FPath, FShape: FShape, FImage: FImage, FElement: FElement, FGroup: FGroup, Form: Form, LineStyle: LineStyle};
                               return elm.Graphics.Collage.values
                             };Elm.Graphics = Elm.Graphics || {};
 Elm.Graphics.Element = Elm.Graphics.Element || {};
@@ -6327,6 +6347,7 @@
 
 // define the draw function
 var vendors = ['ms', 'moz', 'webkit', 'o'];
+var window = window || {};
 for (var i = 0; i < vendors.length && !window.requestAnimationFrame; ++i) {
     window.requestAnimationFrame = window[vendors[i]+'RequestAnimationFrame'];
     window.cancelAnimationFrame  = window[vendors[i]+'CancelAnimationFrame'] ||
