Puzzle functioning. May need some cleanup.