add optional selector callback