add download retry mechinism