TODO:
* Finish the feature of downloading