 
   # try to finds the dependency in many ways
   _find_dependency:( process, after_find )->
+    dependency = process.dependency
 
     # 1 - tries to find dependency within the ACTIVE PROCESSES
-    dep = _.filter @active_processes, (item)->
-      return item.url is process.dependency
-    return after_find dep[0] if dep.length
+    dep = _.find @active_processes, (item)->
+      return item.url is dependency
+    return after_find dep if dep?
 
     # 2 - tries to find dependency within the ROUTES (using strict route name)
-    dep = _.filter @router.routes, (item)->
-      return item.test process.dependency
+    dep = _.find @router.routes, (item)->
+      return item.test dependency
 
-    if dep.length
-      # rewriting route dependency based on parent url params
-      params = dep[0].extract_params process.dependency
-      at = dep[0].rewrite_url_with_parms dep[0].at, params
+    if dep?
 
-      return new Process @the, @, dep[0], at, process.dependency, process, (process)=>
+      # assemble route's `at` dependency based on parent url params
+      params = dep.extract_params process.dependency
+      at = dep.rewrite_url_with_parms dep.at, params
+
+      return new Process @the, @, dep, at, dependency, process, (process)=>
         after_find process
 
     after_find null

    # loops through all active process
    for active in @active_processes

      # and checks if it's present in the pending processes as well
      found = ArrayUtil.find @pending_processes, url: active.url

      if (process = found?.item)?
        url = process.url
        if url? && url != active.url
          @dead_processes.push active

    if @dead_processes.length
      process = @dead_processes.pop()
      process.destroy @_destroy_dead_processes

      @active_processes = _.reject @active_processes, (p)->
        p.route.match is process.route.match

    else
      @_run_pending_processes()

