                     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

        for own key, value of env.SPRITE_DEFAULT_CONFIG
            config[key] ?= value

        #filter out magnitudes and angles of vectors
        magnitudes = {}
        angles = {}
        for own key, value of config

            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
        @_pos = {}
        @_mot = {}
        @_acc = {}
        @_dis = {}
        @_bas = {}

        #create secondary objects
        @_dis.image = new Image()
        @_dis.context = _canvas.getContext '2d'

        #set this sprite's configuration
        #"virtually" calls child's set method in derived classes
