Refactor Upload to only handle file system work