implement of download queue