fixed the retain cycle issue