composite pattern example: menu