implemented selector version