Refactor how puzzles are built, so that it is easier to create new ones