public byte[] toBytes() {
   ByteArrayOutputStream bytes = new ByteArrayOutputStream();
   DataOutputStream dos = new DataOutputStream(bytes);
   try {
     dos.writeByte(MessageType.ChirpMessage.typeValue);
     dos.writeByte(message.getFrom());
     dos.writeByte(message.getTo());
     dos.writeInt(message.getMessageId());
     dos.writeByte(message.getFlagByte());
     dos.writeUTF(message.getSender());
     dos.writeUTF(message.getRecipient());
     dos.writeUTF(message.getMessage());
     dos.flush();
     return bytes.toByteArray();
   } catch (IOException e) {
     throw new RuntimeException(e);
   }
 }