fix a circle ref bug