No need for generateAsync