add dynamic menu generation