It *is* implemented like this, however we need both `CompoundBytes` and `ByteStrings` to provide its implementation:

```scala
sealed trait Bytes{
  def ++(other: Bytes): Bytes = CompoundBytes(this, other)
}
trait SimpleBytes extends Bytes
case class CompoundBytes(parts: Vector[SimpleBytes]) extends Bytes

class ByteString extends SimpleBytes {
  def ++(other: ByteString): ByteString = ByteStrings(this, other)
}
class ByteStrings(val bytestrings: Vector[ByteString1]) extends ByteString
```