anchor.diff:      flatten_ws_args(Args, []).
       
       
  -dispatch_to_local_service([ $w, $s, $: | WSPidStr], Command, 
  +
  +
  +dispatch_to_local_service([ $w, $s, $: | WSPidStr], services_available, 
  +			  [{ services, Services}] ) ->
  +    ?info("service_edge:dispatch_to_local_service(service_available): Websocket!: ~p", [ Services]),
  +    wse:call(list_to_pid(WSPidStr), wse:window(),
  +	     "services_available", 
  +	     [ "services", Services ]),
  +    ok;
  +
  +dispatch_to_local_service([ $w, $s, $: | WSPidStr], services_unavailable, 
  +			  [{ services, Services}] ) ->
  +    ?info("service_edge:dispatch_to_local_service(service_unavailable): Websocket!: ~p", [ Services]),
  +    wse:call(list_to_pid(WSPidStr), wse:window(),
  +	     "services_unavailable", 
  +	     [ "services", Services ]),
  +    ok;
  +
  +dispatch_to_local_service([ $w, $s, $: | WSPidStr], message, 
   			 [{ service_name, SvcName}, { parameters, Args}] ) ->
  -    ?info("service_edge:dispatch_to_local_service(): Websocket!: ~p, ~p", [ Command, Args]),
  -    %% wse:call(list_to_pid(WSPidStr), wse:window(),
  -    %% 	     Command, flatten_ws_args(Args)),
  +    ?info("service_edge:dispatch_to_local_service(message): Websocket!:~p", [Args]),
       wse:call(list_to_pid(WSPidStr), wse:window(),
  -	     Command, 
  +	     "message", 
   	     [ "service_name", SvcName ] ++ flatten_ws_args(Args)),
       ok;
   
   %% Dispatch to regular JSON-RPC over HTTP.
   dispatch_to_local_service(NetworkAddress, Command, Args) ->
  -    Res = rvi_common:send_http_request(NetworkAddress, Command, Args),
  -    ?debug("dispatch_to_local_service():  Command:         ~p",[ Command]),
  +    CmdStr = atom_to_list(Command),
  +    Res = rvi_common:send_http_request(NetworkAddress, CmdStr, Args),
  +    ?debug("dispatch_to_local_service():  Command:         ~p",[ CmdStr]),
       ?debug("dispatch_to_local_service():  Args:            ~p",[ Args]),
       ?debug("dispatch_to_local_service():  Result:          ~p",[ Res]).
       
   
  +%% Forward a message to a specific locally connected service.
  +%% Called by forward_message_to_local_service/2.
  +%%
   forward_message_to_local_service(ServiceName, NetworkAddress, Parameters) ->
       ?debug("service_edge:forward_to_local(): URL:         ~p", [NetworkAddress]),
       ?debug("service_edge:forward_to_local(): Parameters:  ~p", [Parameters]),
  
positive.code: handle_call({rvi_call, register_remote_services, Args}, _From, State) ->
      {_, Services} = lists:keyfind(services, 1, Args),
      {_, LocalServiceAddresses} = lists:keyfind(local_service_addresses, 1, Args),
      manage_remote_services("services_available", LocalServiceAddresses, Services),
      { reply, { ok, [ { status, rvi_common:json_rpc_status(ok)} ]}, State };
  
  handle_call({rvi_call, unregister_remote_services, Args}, _From, State) ->
      {_, Services} = lists:keyfind(services, 1, Args),
      {_, LocalServiceAddresses} = lists:keyfind(local_service_addresses, 1, Args),
      manage_remote_services("services_unavailable", LocalServiceAddresses, Services),
      { reply, {ok, [ { status, rvi_common:json_rpc_status(ok)} ] }, State };
  
  
  
negative.code: handle_rpc("register_remote_services", Args) ->
      {ok, Services} = rvi_common:get_json_element(["services"], Args),
      {ok, LocalServiceAddresses} = rvi_common:get_json_element(["local_service_addresses"], Args),
      announce_service_availability(services_available, LocalServiceAddresses, Services),
      { ok, [ { status, rvi_common:json_rpc_status(ok)} ] };
  
  handle_rpc("message", Args) ->
  