cleaned up solvers