   listenToOnce: (obj, events, callback) ->
     listeningToOnce = @listeningToOnce or= []
     listeningToOnce.push obj
-    obj.bind events, =>
+    obj.bind events, handler = =>
       idx = listeningToOnce.indexOf(obj)
       listeningToOnce.splice(idx, 1) unless idx is -1
-      obj.unbind(events, arguments.callee)
+      obj.unbind(events, handler)
       callback.apply(obj, arguments)
 
   stopListening: (obj, events, callback) ->

    this

  one: (ev, callback) ->
    @bind ev, ->
      @unbind(ev, arguments.callee)
      callback.apply(this, arguments)

  trigger: (args...) ->

    this

  one: (events, callback) ->
    @bind events, handler = =>
      @unbind(events, handler)
      callback.apply(this, arguments)

  trigger: (args...) ->
