anchor.diff:      parse_acks(Rest, [QoS | Acks]).
   
   -spec serialise(mqtt_frame()) -> binary() | iolist().
  +serialise(#mqtt_publish{qos=0,
  +                        topic=Topic,
  +                        retain=Retain,
  +                        dup=Dup,
  +                        payload=Payload}) ->
  +    Var = [utf8(Topic), Payload],
  +    LenBytes = serialise_len(iolist_size(Var)),
  +    [<<?PUBLISH:4, (flag(Dup)):1/integer, 0:2/integer, (flag(Retain)):1/integer>>, LenBytes, Var];
   serialise(#mqtt_publish{message_id=MessageId,
                           topic=Topic,
                           qos=QoS,
  
positive.code: -module(vmq_parser).
  -include("vmq_types.hrl").
  -export([parse/1, serialise/1]).
  
  %% frame types
  -define(CONNECT,      1).
  
negative.code: -define(LOWBITS, 2#01111111).
  
  -define(MAX_PACKET_SIZE, 266338304).
  
  -spec parse(binary()) -> {mqtt_frame(), binary()} | {error, binary()} | error.
  parse(<<Fixed:1/binary, 0:1, L1:7, Data:L1/binary, Rest/binary>>) ->
  