Why it should be simpler from outside?
At our company Serpent is just one of many output engines (we have
others for xml, csv, excel, json and so on), all controlled by the
view (MVC) class. And if you want to cache the output it should not be
dependent on your engine, right? The cache should be under control of
the view class so you could use the same cache functionality for all
output engines.