generating unions