refactored keyboard nav