Added support for allowing the user to completely control how downloads are performed as well as configure the default method