add union support