reimplemented buffer_