selector implementation