changed searcher class to be abstract