Only load the ivar content once.
Add the `progress` callback.
Add the `transfer_progress` callback.
Don't initialize arrays when they might not be used.