Outsourced SmartPointer and add 'load' method to TileMap to load new maps.