There still seems to be a problem here, returning self is the original object, not the copy.