added onComplete listener