Solver abstract class