reorders when we cache the object to avoid infinite loops