start of buffergeometry rewrite