generate tiles programatically