expand functionality by supporting scatter/gather transfers