intersections accordingly, turned on IT<....> as return type * removed result_type from the intersection functors