refactor searcher