implement selector