Refactoring the solver to be single threaded and have populations of solvers