buffer rework
Merge remote-tracking branch 'origin/next' into buffer_cleanup
Merge branch 'next' into buffer_cleanup