Refactor
Add keyboard support