add union & intersection function