         scene    : required    # {opts:?, obj:?} or url from which to download (via ajax) a JSON string that parses to {opts:?,obj:?}
         element  : required    # DOM element to attach to
         timeout  : 30000       # milleseconds for timing out fetchs
-        callback : undefined   # callback(error, scene object)
+        callback : undefined   # callback(scene object, error)
     # Render a 3-d scene
 
     create_scene = (scene) ->


        scene.opts.parent = opts.element

        scene.opts.callback = (error, sceneobj) ->
            if not error
                if scene.obj?
                    sceneobj.addObj scene.obj
                sceneobj.finalize()
            opts.callback? error, sceneobj

        new Math3dThreeJS scene.opts


            width           : undefined
            height          : undefined
            renderer        : undefined # 'webgl' or 'canvas' or undefined to choose best
            background      : [1,1, 1]
            spin            : false     # if true, image spins by itself when mouse is over it.
            aspect_ratio    : [1, 1, 1] # a triple [x,y,z] of length three, which scales the x,y,z coordinates of everything by the given values.
            stop_when_gone  : undefined # if given, animation, etc., stops when this html element (not jquery!) is no longer in the DOM
            frame           : undefined # frame options
            callback        : undefined # opts.callback(this object, error)

        @frameOpts = defaults @opts.frame,
            color           : undefined # defaults to the color-wise negation of the background
