added caching feature via apc