     #update routines
     _draw: ->
         if @_dis.visible
-            #fire draw event
-            @emit 'draw'
-            
             #save context
             @_dis.context.save()
+            
+            #fire draw:before event
+            @emit 'draw:before'
 
             #translate and rotate
             @_dis.context.translate @_pos.x, -@_pos.y

                -@_dis.height / 2, #top
                @_dis.width, #width
                @_dis.height) #height

            #restore context
            @_dis.context.restore()
    _update: =>
        #fire update event
        @emit 'update'

        else if what.match /^left$/
            value = pt.x for pt in @_bnd
            value = Math.min value...
        else if what.match /^radius$/
            value = pt.get('dist') for pt in @_bnd
            value = Math.max value...
        else if what.match /^distance$/
            value = Math.sqrt @_pos.x**2 + @_pos.y**2
        else if what.match /^speed$/
