rules: navigation is async