with buffer