reimplement `head` in terms of `iter`
add test for drop after push