added union and difference