adding validation and rollbacks to saving puzzles