Upgraded solver that's object oriented