             flow.apply(null, f.args)
           return
 
-      #when no results, then call 404 or empty function
       if !result
         Sirius.Application.adapter.fire(document, "application:404", current, prev)
         #FIXME
-        r404 = routes['404']
+        r404 = routes['404'] || routes[404]
         if r404
           z = new Sirius.ControlFlow(r404)
           z.handle_event(null, current)
+
+      false
+
+
+    if plain_routes.length != 0 # TODO && use_modern_routing ???
+      # bind all <a> element with dispatch function, but bind only when href not contain "#"
+      selector  = "a:not([href^='#'])"
+
+      Sirius.Application.adapter.bind selector, "click", dispatcher
+
+    window.onhashchange = dispatcher
+
 
     fn()
 

    return false if ((parts.length != @parts.length) && @end)
    #when it have a different length, but @parts len > given len
    return false if (@parts.length > 1) && parts.length < @parts.length

    is_named_part = (part) ->
      part.indexOf(":") == 0

    current = prev = window.location.hash

    # set routing by event
    for url, action of routes when @_event_route(url)
      handler = if Sirius.Utils.is_function(action)
        action
      else
