refactor with cached selector