download methods rewritten to handle more cases