update
support I/O stream interface