 
         #when no results, then call 404 or empty function
         if !result
+          SiriusApplication.adapter.fire(document, "application:404", current, prev)
           (if routes['404'] then a2f(routes['404']) else empty)(current)
 
-  #@note not implemented
+      fn()
+
   log: false
   #adapter for application @see adapter documentation
   adapter: null

  running: false
  #route object
  route: {}
  run: (options = {}) ->
    @running = true
    @log     = options["log"]     || @log
    @adapter = options["adapter"] || throw new Error("Specify adapter")
    @route   = options["route"]   || @route

    # start
    SiriusApplication.RouteSystem.create(@route);


        prev = current
        current = window.location.hash
        result = false

        SiriusApplication.logger("Url change to: #{current}")
        SiriusApplication.adapter.fire(document, "application:hashchange", current, prev)

        #call first matched function
        for part in array_of_routes
          do(part) =>
