add download fail function