Add Selector API

Closes #294