implement DownloadFile()
use struct{} as sentinel instead of bool