use DataOutput