add download Function