refactor into keyboard