                         if @distanceTo(listeners.other) != tokens[2]
                             @emit event, listeners.other
             #fire 'angleTo:other-cmp-value' events
-            else if event.match /^angleTo:\w+-(gt|lt|eq|ge|le|ne)-\d*\.?\d*$/
+            else if /^angleTo:\w+-(gt|lt|eq|ge|le|ne)-\d*\.?\d*$/.test event
                 tokens = event.split(':')[1]
                 tokens = tokens.split '-'
                 tokens[2] = parseFloat tokens[2]

                @_pos.y = to - _top._y
            else if @_bnd.shape is 'circle'
                @_pos.y = to - @get 'radius'
        else if what.match /^bottom$/
            old = @get 'bottom', false if _emit
            if @_bnd.shape is 'polygon'
                _bottom = @_bnd.points[0]

        #determine other events to fire
        for own event, listeners of @_events
            #fire 'mouse:hover' event
            if /^mouse:hover$/.test event
                if @collidesWith 'mouse'
                    @emit event
            #fire 'mouse:noHover' event
            if /^mouse:!hover$/.test event
                unless @collidesWith 'mouse'
                    @emit event
            #fire 'isDown' event
            if /^isDown:(\w+|\d)/.test event
                token = event.split(':')[1].toUpperCase()
                if token.match /-/
                    _emit = false
