Implement RestrictedTransfer and its callback, to avoid users of the library to be able to manipulate the Transfer in ways that would break it.
Add a new prepareTransfer function in the Callback, so that the buffers and the transfer can be prepared before submit, for example for OUT transfers that need to load the data to send.