diff --git a/conversation.go b/conversation.go
index <HASH>..<HASH> 100644
--- a/conversation.go
+++ b/conversation.go
@@ -46,7 +46,7 @@ func (c *Conversation) Send(msg []byte) ([][]byte, error) {
 	switch c.msgState {
 	case plainText:
 		if c.policies.has(requireEncryption) {
-			return [][]byte{[]byte(c.queryMessage())}, nil
+			return [][]byte{c.queryMessage()}, nil
 		}
 		if c.policies.has(sendWhitespaceTag) {
 			msg = c.appendWhitespaceTag(msg)
diff --git a/query.go b/query.go
index <HASH>..<HASH> 100644
--- a/query.go
+++ b/query.go
@@ -70,13 +70,16 @@ func (c *Conversation) receiveQueryMessage(msg []byte) ([]byte, error) {
 	return c.sendDHCommit()
 }
 
-func (c Conversation) queryMessage() string {
-	queryMessage := "?OTRv"
+func (c Conversation) queryMessage() []byte {
+	queryMessage := []byte("?OTRv")
+
 	if c.policies.has(allowV2) {
-		queryMessage += "2"
+		queryMessage = append(queryMessage, '2')
 	}
+
 	if c.policies.has(allowV3) {
-		queryMessage += "3"
+		queryMessage = append(queryMessage, '3')
 	}
-	return queryMessage + "?"
+
+	return append(queryMessage, '?')
 }
Messages are array of bytes