routes should hold the definition too
refactor : findRouteAndMatch should avoid imperative implementation
travis should pass