add new test case
implement with buffers reusing