finish abstracting searcher into its own module. closes #94