added BufferAllocator