abstraction for general data transport
