added overloads for union intersect difrence and merge