Yes, exactly. The `Send` class here is intentionally mutable (through the ByteBuffer), because we want to work with a single instance until its buffer has been encrypted completely (which might take several `encrypt` calls, each of which drains a chunk of the ByteBuffer). Working with ByteStrings here would potentially entail several "slicings" and repeated copies to a ByteBuffer.

It *might* be however, that in the large majority of cases a write can be encrypted in one single go. If so, it could be more efficient to get rid of the `Send` intermediate structure and copy the write ByteString to a ByteBuffer from the pool in the `encrypt` method itself. We could then save the creation of a new HeapByteBuffer at the cost of ByteString slicing and repeated ByteString -> ByteBuffer copies if the write *cannot* be written in one single `encrypt` call. Profiling real-world applications would provide an answer here.