refactor selectable