both need buffers