I think this could be DRY'ed out and simplified by adding a new method that handles the intricacies of the userprofile and the file 2 be gathered.  I'll post again when I have an example