I think a template model like Mason's could benefit from having multiple passes. That is, don't only have an output pass. First, just instantiate all the components that are being laid out or aggregated. Then do a compute pass on each one, where they all know about the complete page. Then do an output pass, which should gather and format results but not change anything.