Big refactoring. A lot of improvements around caching. Controllers don't execute but return a Request object for the client. That way you can modify it, check cache availability, etc...