added union and intersection