- Each generate-and-test solvers must implement the ICryptaSolver Interface. - It throws an exception if it cannot handle the configuration. - Ideally, there would be only 2 such solvers: a naive solver and a more advanced one.