fix block retain cycle