re-factored solver with breeze