First pass at abstracting out download functionality.