refactoring tiles to inherit from Tile