         else ['change']
 
       for eventName in eventNames
-        Batman.DOM.addEventListener node, eventName, (args...) ->
+        $addEventListener node, eventName, (args...) ->
           callback node, args...
 
     submit: (node, callback) ->
       if Batman.DOM.nodeIsEditable(node)
-        Batman.DOM.addEventListener node, 'keyup', (args...) ->
+        $addEventListener node, 'keyup', (args...) ->
           if args[0].keyCode is 13 || args[0].which is 13 || args[0].keyIdentifier is 'Enter' || args[0].key is 'Enter'
             callback node, args...
             $preventDefault args[0]
       else
-        Batman.DOM.addEventListener node, 'submit', (args...) ->
+        $addEventListener node, 'submit', (args...) ->
           callback node, args...
           $preventDefault args[0]
 

  # DOM directives, but are used to handle specific events by the `data-event-#{name}` helper.
  events: {
    click: (node, callback) ->
      Batman.DOM.addEventListener node, 'click', (args...) ->
        callback node, args...
        $preventDefault args[0]


    @started = yes

    if 'onhashchange' of window
      $addEventListener window, 'hashchange', @parseHash
    else
      @interval = setInterval @parseHash, 100

