some more work on the solver