anchor.diff:        http_error(bad_request, "No content type")
     end;
   
  -handle_request(Method, _ReqHeaders, _ReqBody, _Environment, _DispatchTable) ->
  +step_validate_request(Method, _ReqHeaders, _ReqBody,
  +                      _Environment, _DispatchTable) ->
     error_logger:error_report(xmerlrpc, [{step, validate_request}, {error, invalid_method}, {method, Method}]),
     http_error(bad_method, ["Invalid method: ", Method]).
   
  -%% @doc Handle XML-RPC request.
  +%% @doc Parse XML-RPC request.
   %%   Function parses request body as XML and extracts procedure name and
   %%   arguments.
   %%
  -%% @spec handle_xmlrpc_request(string(), list(), term()) ->
  -%%   http_response()
  -
  -handle_xmlrpc_request(ReqBody, Environment, DispatchTable) ->
  +%% @spec step_parse_xmlrpc_request(string(), list(), term()) ->
  +%%   http_response()
  +
  +step_parse_xmlrpc_request(ReqBody, Environment, DispatchTable) ->
     case xmerlrpc_xml:parse_request(ReqBody, []) of
       {ok, request, {ProcName, ProcArgs}} ->
  -      execute_request(ProcName, ProcArgs, Environment, DispatchTable);
  +      step_execute_request(ProcName, ProcArgs, Environment, DispatchTable);
       {error, Reason} ->
         error_logger:error_report(xmerlrpc, [{step, parse_xmlrpc_request}, {error, Reason}]),
         http_error(bad_request, "Invalid XML-RPC request")
  
positive.code: %%% XML-RPC request processing steps
  %%%---------------------------------------------------------------------------
  
  %% @doc Handle HTTP request.
  %%   Function validates HTTP part of XML-RPC protocol (method and
  %%   <i>Content-Type</i> header).
  %%
  %% @spec handle_request(string(), [{string(),string()}], string(),
  %%                      list(), term()) ->
  %%   http_response()
  
  handle_request("POST" = _Method, ReqHeaders, ReqBody,
                 Environment, DispatchTable) ->
    case proplists:lookup("content-type", ReqHeaders) of
      {_Key, "text/xml"} ->
        handle_xmlrpc_request(ReqBody, Environment, DispatchTable);
      {_Key, OtherContentType} ->
        error_logger:error_report(xmerlrpc, [{step, validate_request}, {error, invalid_content_type}, {content_type, OtherContentType}]),
        http_error(bad_request, ["Invalid content type: ", OtherContentType]);
  
negative.code: 
  %% @doc Call specified function with arguments and environment.
  %%
  %% @spec step_call_function(atom(), atom(), [xmerlrpc_xml:proc_arg()],
  %%                          list()) ->
  %%     {ok, xmerlrpc_xml:proc_arg()}
  %%   | {exception, Exception :: iolist()}
  
  step_call_function(Module, Function, Args, Environment) ->
    % {ok,_} | {error,_} are for case when error is signaled by returned value
    % _ | erlang:error() are for case when error is signaled by dying
    try Module:Function(Args, Environment) of
  