         # writable      : yes
       )
 
-  constructor:(obj)->
-    if obj?
-      mixin obj
-    else
-      obj = this
+  constructor:(obj)-> if obj? then mixin obj
 
   on:(evt, listener)->
     throw new Error 'Listener is required!'  unless listener?

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

  when:-> # TODO: implement

  off:(evt, listener)->
    init this

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