But `finalize_response()` itself doesn't render the template. All it does is the 3 lines you have below, plus setting headers.

So what about:
1. Setting `resp.addons = addons` and then returning the response. (nit: can you call this `response` and not `resp` ? We have the room)
2. Adding a custom `finalize_response()` implementation that calls `super()`, plus the `f = lambda: resp.render()` and `return cached_with(addons, f, map(encoding.smart_str, args))`.

That gets rid of the 3 copied lines and as a bonus moves the cache stuff to a separate method, leaving the `get()` method clean of this kind of implementation detail.