Provide an abstract layer for data stream