working on iterative solver