implemented intersect