Add buffer interfaces and default implementations
Replace data array with buffer