1. write custom components on the fly (ai can) 2. compose arbitrary components (composition isn't solved)