weakSelf added.