anchor.diff:  start_shell(User, Peer) ->
     spawn(fun() ->
   	  io:setopts([{expand_fun, fun(Bef) -> expand(Bef) end}]),
  -    format_out(welcome_str),
  -		format_out(enter_command_str),
  -		put(user, User),
  -		put(peer_name, Peer),
  -    % default current node to local node
  -    curr_node(node()),
  -		shell_loop()
  +      format_out(welcome_str),
  +	  format_out(enter_command_str),
  +	  put(user, User),
  +	  put(peer_name, Peer),
  +      % default current node to local node
  +      curr_node(node()),
  +	  shell_loop()
   	end).
   
   
  
positive.code:   {no, "", []};
  expand(RevBefore) ->
    Before = lists:reverse(RevBefore),
      case longest_prefix(ui_utils:get_ui_cmds(), Before) of
  	    {prefix, P, [_]} -> {yes, P ++ " ", []};
  	    {prefix, "", M}  -> {yes, "", M};
  	    {prefix, P, _M}  -> {yes, P, []};
  	    {none, _M}       -> {no, "", []}
      end.
  
  %% longest prefix in a list, given a prefix
  longest_prefix(List, Prefix) ->
    case [A || {A, _, _} <- List, lists:prefix(Prefix, A)] of
  	  [] ->
  	    {none, List};
  	  [S | Rest] ->
  	    NewPrefix0 =
  		    lists:foldl(fun(A, P) ->
  				              common_prefix(A, P, [])
  			              end, S, Rest),
  	    NewPrefix = nthtail(length(Prefix), NewPrefix0),
  	    {prefix, NewPrefix, [S | Rest]}
      end.			
  
  
  
negative.code:   % read user input
    Line = ui_utils:get_input(Prompt),
  
    case eval_input(Line) of
  	done -> 
  	  exit(normal);
  	_ -> 
        % Put and extra blank line after each command
        io:format("~n"),
  	  shell_loop()
    end.
  
  
  %% 
  