I'm confused to what the purpose of passing a variable by reference is since you claim that you don't *have" to in order to modify it. Maybe my mind is stuck in C/C++ mode where you have to pass a parameter by reference (I believe) in order to modify it. I thought the purpose of not passing by reference is so that a subroutine will only be able to use the variable and not modify it. If the subroutine can modify this variable no matter how you pass it, what's the point of distinguishing between the two? See where I'm going with this?