Cleaned up Solver interface