Reverting last. The passing by value instead of by reference really was deliberate, and the functionality breaks if this is changed. However, I have another solution that will address the efficiency issue that Andy is seeing, and am opening a pull request for this.