add download with thread function