anchor.diff:  
   %% ------------------------------------------------------------------
   
  -service_control_channel(#envelope{type = Type, id = Id, contents = {struct, Request}}, State) ->
  -	service_control_message(Type, Id, Request, State);
  +service_control_channel(#envelope{type = Type, id = MessageID, contents = {struct, Request}}, State) ->
  +	service_control_message(Type, MessageID, Request, State);
   
   service_control_channel(Thing, State) ->
   	?warning("Unhandled input:  ~p", [Thing]),
  
positive.code: json_to_envelope({struct, Props}) ->
  	Type = proplists:get_value(<<"type">>, Props, <<>>),
  	Type0 = check_envelope_type(Type),
  	Id = proplists:get_value(<<"id">>, Props),
  	Contents = proplists:get_value(<<"contents">>, Props),
  	Channel = proplists:get_value(<<"channel">>, Props),
  	#envelope{type = Type0, id = Id, contents = Contents, channel = Channel}.
  
  check_envelope_type(<<"request">>) -> request;
  check_envelope_type(<<"response">>) -> response;
  
negative.code: 	send(Pid, Socket, Type, Channel, Json);
  
  send(Pid, Socket, request, Channel, Json) when Socket == udp; Socket == ssl; Socket == tcp ->
  	RequestID = generate_id(),
  	send(Pid, Socket, {request, RequestID}, Channel, Json),
  	RequestID;
  
  send(Pid, Socket, Type, Channel, Json) when Socket == udp; Socket == ssl; Socket == tcp ->
  	gen_server:cast(Pid, {send, Socket, Type, Channel, Json}).
  