Simplify interception of response methods
Split out interception code to separate module
Split out caching to separate module