Sorry, I'm not sure I'm following you ;-). Right now, what I'm not liking about this approach is that the authentication code *can* get duplicated in the user's code (once for each of the 3 places where it's needed, more if the lib user's has more than one place where they perform one of the authenticated tasks), unless you happen to just write a monster auth block once and pass the same one at every call site — that would handle getting the credentials from Keychain/somewhere or show the user a dialog box. What I was envisioning was something akin to what was proposed in #203 that would cache `GTCred` objects. But it's all rainbows and unicorns ;-).

If I understand you correctly, you want each `GTRepository` to have it's own user-specified `GTCredentialProvider`, responsible of building required `GTCredential` objects, that can then be subclassed by the library user ? I agreed that it feels more Cocoa-ish, but I think the block approach I used here is straight-forward...