add buffer factory