do refactor , add download file