resolves #215. weakSelf not required. Using `self` here will not create a retain cycle as `self` here does not retain the animation block.