download internally, and if not grab external