Add onComplete callback