Have one generic puzzle builder which can be used for other puzzle
rather than lots of subclasses