some work on buffer
some work on buffer