add print/read/write_solution methods to solvers