adding new implementations of buffer