Rework how solvers are chosen. For #6