Refactor key navigation

@BrettASwift, @scottnc27603, @kadst43 would you mind reviewing?