ensure that the only place _selected gets assigned is in doSelect()