     ###
     delete @listeners[listenerId]
     delete @targets[listenerId]
-    return @
+    return this
   
   defineProperty = Object.defineProperty ||
     (obj, prop, {value})-> obj[prop] = value

      @off evt, wrappedListener
      listener.apply @, rest
    @on evt, wrappedListener

  when:-> # TODO: implement

  off:(evt, listener)->
    init this

        # writable      : yes
      )

  constructor:(obj)-> if obj? then mixin obj

  on:(evt, listener)->
    throw new Error 'Listener is required!'  unless listener?
