Thanks, I like that. At the time I was thinking along the lines of, "What if we needed a `Sudoku::JSONParser`?" and so thought I needed a common format between the parser and the `Puzzle`, but you're right – any object that implements the 'Parser' interface/role could always return a `Puzzle` object. 

In terms of testing this with RSpec, would you use `expect_any_instance_of(Sudoku::Puzzle).to receive(:new)`?