Note that for convenience callbacks are provided with a jQuery deferred object as their second argument.  I'm not sure if this is necessary or just overhead...