ok, but `unlink` can at least return itself
`val msg = messages.head.unlink()`