This is destructive – shouldn't it be on a duplicate of `self`?