anchor.diff:       end,
        markdown_descriptions(Msg), "\n\n" | markdown_rpcs(T)];
   markdown_rpcs([{RPC, {Descr, {request, Req}, {reply, Rep}}} | T]) ->
  -    ["## ", RPC, "\n\n",
  -     "### Request\n\n\n", i(0), pp_json(Req), "\n\n\n",
  +    ["# ", RPC, "\n\n",
  +     "## Request\n\n\n", i(0), pp_json(Req), "\n\n\n",
        case Descr of
   	 "" -> "";
   	 _ ->
   	     [Descr, "\n\n"]
        end,
        markdown_descriptions(Req), "\n\n",
  -     "### Reply\n\n\n", i(0), pp_json(Rep), "\n\n\n",
  +     "## Reply\n\n\n", i(0), pp_json(Rep), "\n\n\n",
        markdown_descriptions(Rep), "\n\n" | markdown_rpcs(T)];
   markdown_rpcs([]) ->
       [].
  
positive.code:     case [X || {_,{_,_}} = X <- collect_descriptions(Msg, orddict:new())] of
  	[] -> [];
  	[{K,{D,T}}|Tail] ->
  	    ["#### descriptions\n",
  	     "<dl><dt>", K, "</dt>\n", "<dd>", D,
  	     " (<b>type:</b> ", type_to_text(T), ")", "</dd>",
  	     [["\n<dt>", K1, "</dt>\n", "<dd>", D1,
  	       " (<b>type:</b> ", type_to_text(T1), ")", "</dd>"]
  	      || {K1,{D1,T1}} <- Tail],
  	     "\n</dl>\n\n"]
      end.
  
  collect_descriptions({struct, L}, Acc) ->
  
negative.code:     end.
  
  markdown([{module, M, RPCs}|T]) ->
      ["# Module: ", M, "\n\n", markdown_rpcs(RPCs), "\n\n" | markdown(T)];
  markdown([]) ->
      [].
  
  markdown_rpcs([{Not, {notification, Descr, Msg}} | T]) ->
      ["## Notification: ", Not, "\n\n\n", i(0), pp_json(Msg), "\n\n\n",
       case Descr of
  	 "" -> "";
  	 _ ->
  