add interpose
add takeWhile and dropWhile