intersect implemented