Completed puzzle model implementation and corresponding unit tests