animationCompletionBlock may retained by outside