This sounds like a job for a dynamic component. Is this something that you do often?