reimplement take, drop in terms of chain and empty, fixes #3 and #4