split out PerformDownload and PackageLibrary as modules