Extract a puzzle interface
Solver now works (no need for chaining in the example)