         splatParam: /\*\w*/g
         firstParam: /(:\w+)|(\*\w*)/
     
-    constructor: (@pattern) ->
-        if pattern instanceof RegExp
-            @expr = pattern
-        else
-            if pattern?
-                # 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 + '$')
-            else
-                @expr = /^.+$/
+    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) ->

        url.replace(@RegExpCache.extractHash, '$1')
    
    # Takes whatever window.location.hash currently is and tries
    # to resolves 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.
    start: (initialHash, observeHash = true, observeForms = true) ->
        # Register event handler for the onHashChange event
        if observeHash
