refactor solver to use seperated new atomic solvers