added: onSelect, onDeselect callbacks