implement tail, setHead, and drop