     return if @path is path
     @path = path
 
+    @trigger("navigate", @path)
+
     @matchRoute(@path, options) if options.trigger
 
     return if options.shim

      history.pushState(
        {}, 
        document.title, 
        @getHost() + @path
      )
    else
      window.location.hash = @path
    
  # Private
  
  @getPath: -> window.location.pathname
  
  @getHash: -> window.location.hash
  

    (document.location + "").replace(@getPath() + @getHash(), "")
    
  @change: ->
    path = if @getFragment() isnt "" then @getFragment() else @getPath()
    return if path is @path
    @path = path
    @matchRoute(@path)
