Avoid leaking arguments (performance)
Handle state upgrades using params in Controller instead of ClientContext

This is bahaviour that should be defined by the abstract Controller class