To be really functional, the buffer has to meet all those criteria.