add intersection
add iterable