in reply to Catalyst and the stash
Actually, the real purpose of the stash is to serve as a place to put data that will be read by the view (templates). It is not designed to be used as a data-passing mechanism between functions, but was used that way in some places because of the original lack of parameter support in forward(). Now that you can pass params in forward, there should be no reason to use the stash for temporary data passing.
All view classes should be using the stash to populate themselves with data.