Download function and pre-revise