add BufferIterOnce
fix bug
add sync method
update interface
update