skeleton of the code, solver need complete