communicate with ByteString instead of String