         url.replace(@RegExpCache.extractHash, '$1')
     
     # Takes whatever window.location.hash currently is and tries
-    # to resolves that hash.
+    # to resolve that hash.
     resolveHash: (event) =>
         url = event.originalEvent.newURL if @eventSupported
         hash = @getHash(url)

    # Starts the routing process - binds the Simrou instance to several
    # events and navigates to the specified initial hash, if window.
    # location.hash is empty.
    # - initialHash is optional
    # - If observeHash is false, the event handler for onHashChange is
    #   NOT registered. Useful if you want to use any other plugin/method
    #   to handle/observe hash changes.
    # - The same applies to the "observeForms" parameter.
    start: (initialHash, observeHash = true, observeForms = true) ->
        # Register event handler for the onHashChange event
        if observeHash

        splatParam: /\*\w*/g
        firstParam: /(:\w+)|(\*\w*)/
    
    constructor: (@pattern = /^.+$/) ->
        if @pattern instanceof RegExp
            @expr = @pattern
        else
            # Do some escaping and replace the parameter placeholders
            # with the proper regular expression
            pattern = String(@pattern).replace(@RegExpCache.escapeRegExp, '\\$&')
            pattern = pattern.replace(@RegExpCache.namedParam, '([^\/]+)')
            pattern = pattern.replace(@RegExpCache.splatParam, '(.*?)')
            
            @expr = new RegExp('^' + pattern + '$')
    
    # Returns an array if this route matches the specified hash (false otherwise).
    match: (hash) ->
