I think depend_on_model is fine, and it might be confusing to have too many depend_on_* functions.  Unless it turns out there is something we need that's impossible with the current API.  Caching with permissions is going to be a bit tricky anyway, since a permission can affect people directly (via the 'user' field) or indirectly (via the 'role' field)... I think we should see how performance shakes out after all of this, and work from there.