             @squareScale.multiplyScalar @scaleSize
             @rescale = (vector) -> vector.multiply aspectRatio
 
-            # setup color stuff
-            @background = new THREE.Color @opts.background...
-            @element.style.background = @background.getStyle()
-            if @frameOpts.color?
-                @frameColor = new THREE.Color @frameOpts.color...
-            else
-                @frameColor = new THREE.Color(
-                    1-@background.r, 1-@background.g, 1-@background.b)
-
             # initialize the scene
             @scene = new THREE.Scene()
 
-            # functions in change hooks will be run when the controls
-            # recieve a change event
+            # functions in render hooks will be run when before rendering
             @renderHooks = []
 
             @opts.callback? @

        @minDim = Math.min dim.x, dim.y, dim.z

        @center = @rescale @boundingBox.geometry.boundingBox.center()

    # always call this after adding things to the scene to make sure track
    # controls are sorted out, etc. The client should never have to worry

    finalize: ->
        @computeDimensions()

        @element = document.createElement 'span'
        @element.className = 'math-3d-viewer'
        @element.style.display = 'inline-block'
        if @opts.renderer is 'canvas'
            # possibly show the canvas warning.
            @element.title = 'WARNING: using slow non-WebGL canvas renderer'

        @setColor()
        @setFrame()
        @setCamera()
        @setOrbitControls()
