 
   constructor:(routes)->
     super()
-    @tree   = {} # this is the tree for quick lookups
-    @routes = {} # this is the flat namespace containing all routes
+    @tree          = {} # this is the tree for quick lookups
+    @routes        = {} # this is the flat namespace containing all routes
+    @visitedRoutes = []
     @addRoutes routes
 
   listen:->

  clear:(route = '/', replaceState = yes)->
    delete @userRoute # TODO: i hope deleting the userRoute here doesn't break anything... C.T.
    @handleRoute route, {replaceState}

  startListening:->
    return no  if @isListening # make this action idempotent

    @addRoute route, listener  for own route, listener of routes

  handleRoute:(userRoute, options={})->

    @visitedRoutes.push userRoute

    [frag, query...] = (userRoute ? @getDefaultRoute?() ? '/').split '?'

