add buffer copy