refactor and improve navigator

 - simplify implementation
 - add a resolve function, to get the url without issuing a request