 
     listeners = []
 
-    edge = edges[i]
-
+    edge      = edges[i]
+
+    straight  = node[listenerKey]  if i is edges.length
     wild      = node[wildcardKey]
-    straight  = node[listenerKey]
     nextNode  = node[edge]
 
-    if straight? and i is edges.length
+    if straight?
       listeners = listeners.concat straight
 
     if wild?


    return listeners

  removeAllListeners = (node, edges, id, i = 0) ->
    edge = edges[i]

    nextNode = node[edge]

    if nextNode?
      return removeAllListeners nextNode, edges, id, i + 1

    if id?
      straight = node[listenerKey]
      if straight?
        node[listenerKey] = (listener for listener in straight \
                             when listener isnt id)
    else
      node[listenerKey] = []

    return

  emit: (eventName, rest...) ->

    if @hasOwnProperty 'event' then oldEvent = @event

    @event = eventName



    node = @_e

    node = node[edge] ?= {}  for edge in edges

    listeners = node[listenerKey] ?= []

