this looks a lot better having a implementation header for Puzzle.hpp