Split into Selector and Matcher for better separation of concerns