I think we should implement a a class that wraps a ByteArray? otherwise we are loosing a lot of the opto and need to materialize the array again in `toBytes`?