Solver Updated with smaller functional parts