refactored solvers