use listbuffer instead of arraybuffer