would it be more clean to have an operation that did `unlink` and `head` in one go
perhaps returning both `head` and `tail`