Redesigned some of the implementations, added test data for tiles, and handled accordingly when deck is empty