fix retain cycle issue