eliminate circular references by storing changes locally