Use per-oject-type model classes and API calls (e.g. event.diff instead of object.diff)