             else if key.match /(^posAngle$|^motAngle$|^accAngle$)/
                 delete config[key]
                 angles[key] = value
+            else if key.match /^ba_all$/
+                delete config[key]
+                config.ba_top = value
+                config.ba_bottom = value
+                config.ba_right = value
+                config.ba_left = value
 
         #used to track asynchronous _update
         @_updateID = null
 
         #create primary objects
-        @_dis = {}
         @_pos = {}
         @_mot = {}
         @_acc = {}
+        @_dis = {}
         @_bas = {}
 
         #create secondary objects
         @_dis.image = new Image()
-        @_dis.context = document.getElementById('gh-canvas').getContext '2d'
+        @_dis.context = _canvas.getContext '2d'
 
         #set this sprite's configuration
         #"virtually" calls child's set method in derived classes

class Sprite
    #closures
    _list = []
    _sortRule = (sp1, sp2) ->
        sp1._dis.level - sp2._dis.level
    _bounds =
        top: document.getElementById('gh-canvas').height / 2
        bottom: -document.getElementById('gh-canvas').height / 2
        right: document.getElementById('gh-canvas').width / 2
        left: -document.getElementById('gh-canvas').width / 2
    _boundaryCallback = (boundAction, side) ->
        #return appropriate callback function
        switch boundAction

                    when 'ne'
                        if @get(tokens[0]) != tokens[2]
                            @emit event
            else if event.match /^\w+-(eq|ne)-\w+/
                tokens = event.split '-'
                tokens[2] = eval tokens[2]
                switch tokens[1]
                    when 'eq'
                        if @get(tokens[0]) is tokens[2]
                            @emit event
                    when 'ne'
                        if @get(tokens[0]) isnt tokens[2]
                            @emit event
        this

    #debugging
