Generalize searcher logic into base searcher