Make weakSelf only be retained when calling the foreground