ui + content generation