While making the cellblock for returning data to client, we have to write the cell data into an OutputStream. KeyValue has a static oswrite() method with which it can write data in one go. (KeyValue components are in a single byte). For other cell implementation, we will call getXXXLength() and getXXXArray() and write each component one after the other. This is not efficient as the KeyValue way. In fact other cell impls also may have one contigous byte backing for keys atleast. (See ClonedSeekerState) We can optimize for such Cells also.