puzzle

worked mostly on filling out puzzle.h