head -> last, copy on write