use Selector instead of async