refactor and utilize prove searcher