Refactor key navigation such that it will be easier for apps to specify their own