Is there a better way to do this? Currently, the user being passed into all those functions throughout the program is always the same, so is there some way I can make the user universally available and still manipulatable by all of the foos()?
Well you could make a global instance and then change all the functions to not pass the parameter, but that is kind of the antithesis to good programming practice. The only justification is if you need to squeeze every last ounce of performance out of the code and you want to avoid the extra PUSH instruction.