add download cancel function