next work: 1) slove > permission denied 2) de-couple download and pre-process