anchor.diff:                  children = [#xmlelement{name = <<"presence">>,
                                      attrs = [{<<"type">>, <<"unavailable">>},
                                               {<<"xmlns">>, <<"jabber:client">>}]}]};
  +
   wrap_elem(Element, #state{sid = Sid, rid=Rid}) ->
       #xmlelement{name = <<"body">>,
  -            attrs = common_attrs(Rid, Sid),
  -            children = [Element]}.
  +                attrs = common_attrs(Rid, Sid),
  +                children = [Element]}.
  +
  +empty_body(#state{sid = Sid, rid=Rid}) ->
  +    #xmlelement{name = <<"body">>,
  +                attrs = common_attrs(Rid, Sid)}.
   
   common_attrs(Rid) ->
       [{<<"rid">>, pack_rid(Rid)},
  
positive.code:     {noreply, State#state{parser = NewParser}}.
  
  %% Handle async HTTP request replies.
  handle_info({http_reply, {{_StatusCode, _Reason}, _Hdrs, RespBody}}, State) ->
      NewState = handle_data(RespBody, State),
      {noreply, NewState};
  handle_info(_, State) ->
      {noreply, State}.
  
  
negative.code: %%%===================================================================
  %%% Helpers
  %%%===================================================================
  send(#transport{socket = {Host, Port, Path}} = Transport, Body,
       #state{requests = Requests} = State) ->
      Headers = [{"Content-Type", "text/xml; charset=utf-8"}],
      Self = self(),
      AsyncReq = fun() ->
          {ok, Reply} =
              lhttpc:request(Host, Port, false, Path, 'POST',
                  Headers, exml:to_iolist(Body), infinity, []),
          Self ! {http_reply, Reply, Transport}
      end,
      proc_lib:spawn_link(AsyncReq),
      State#state{rid = State#state.rid+1,
                  requests = Requests + 1}.
  
  send0(Transport, Elem, State) ->
      send(Transport, wrap_elem(Elem, State), State).
  
  handle_data(Data, #state{owner = Owner} = State) ->
      {ok, Body} = exml:parse(Data),
  