Added a better output cache system that is easier to customise in apps