use a buffer