What I meant is that any method requiring authentication could accept a `GTCredentialProvider`, which would be responsible for building `GTCredential` objects as requested. Then, if the caller wants to reuse the same provider, store it globally, change its behavior, etc., it's very easy to do in a nice OO way.

Basically, we'd just be turning the block into a class, because they're more customizable and reusable.