fixed gc circular ref issue