implementation of some solvers