Switch to using cached thread pool rather than raw threads
Add reverse-searching brote force class