refactored the solver accordingly to the desired benchmarking interface