Summary
Use an embedded make function or something similar in the Puzzle class that can be overridden to implement a puzzle, instead of the current jankiness
Motivation
This will make it easier and more concise to write puzzles
Describe alternatives you've considered
Current alternatives are a bit messy and require weird interactions with MOTH internals