       return disposable
 
     unless @listenersByCommandName[commandName]?
-      @rootNode?.addEventListener(commandName, @handleCommandEvent, true)
+      @addCommandListener(@rootNode, commandName)
       @listenersByCommandName[commandName] = []
 
     listener = new CommandListener(selector, callback)

      listenersForCommand.splice(listenersForCommand.indexOf(listener), 1)
      if listenersForCommand.length is 0
        delete @listenersByCommandName[commandName]
        @rootNode.removeEventListener(commandName, @handleCommandEvent, true)

  # Public: Find all registered commands matching a query.
  #

    @rootNode = newRootNode

    for commandName of @listenersByCommandName
      @removeCommandListener(oldRootNode, commandName)
      @addCommandListener(newRootNode, commandName)

  # Public: Add one or more command listeners associated with a selector.
  #
