anchor.diff:      {keep_state_and_data, [{reply,From,Reply}]};
   
   handle_event({call,From}, {connection_info, Options}, _, D) ->
  -    Info = ssh_info(Options, D, []),
  +    Info = fold_keys(Options, fun conn_info/2, D),
       {keep_state_and_data, [{reply,From,Info}]};
   
   handle_event({call,From}, {channel_info,ChannelId,Options}, _, D) ->
       case ssh_channel:cache_lookup(cache(D), ChannelId) of
   	#channel{} = Channel ->
  -	    Info = ssh_channel_info(Options, Channel, []),
  +	    Info = fold_keys(Options, fun chann_info/2, Channel),
   	    {keep_state_and_data, [{reply,From,Info}]};
   	undefined ->
   	    {keep_state_and_data, [{reply,From,[]}]}
  
positive.code: 			   "    ~p~n",
  			   [Reason, erlang:get_stacktrace()]),
      error_logger:error_report(Report).
  
  
  %%%----------------------------------------------------------------
  not_connected_filter({connection_reply, _Data}) -> true;
  
negative.code: counterpart_versions(NumVsn, StrVsn, #ssh{role = client} = Ssh) ->
      Ssh#ssh{s_vsn = NumVsn , s_version = StrVsn}.
  
  %%%----------------------------------------------------------------
  conn_info(client_version, #data{ssh_params=S}) -> {S#ssh.c_vsn, S#ssh.c_version};
  conn_info(server_version, #data{ssh_params=S}) -> {S#ssh.s_vsn, S#ssh.s_version};
  conn_info(peer,           #data{ssh_params=S}) -> S#ssh.peer;
  conn_info(user,                             D) -> D#data.auth_user;
  conn_info(sockname, D) -> {ok, SockName} = inet:sockname(D#data.socket),
  			  SockName;
  %% dbg options ( = not documented):
  conn_info(socket, D) -> D#data.socket;
  conn_info(chan_ids, D) -> 
      ssh_channel:cache_foldl(fun(#channel{local_id=Id}, Acc) ->
  				    [Id | Acc]
  			    end, [], cache(D)).
  
  %%%----------------------------------------------------------------
  chann_info(recv_window, C) ->
      {{win_size,    C#channel.recv_window_size},
       {packet_size, C#channel.recv_packet_size}};
  chann_info(send_window, C) ->
      {{win_size,    C#channel.send_window_size},
       {packet_size, C#channel.send_packet_size}};
  %% dbg options ( = not documented):
  chann_info(pid, C) ->
      C#channel.user.
  
  %%%----------------------------------------------------------------
  %% Assisting meta function for the *_info functions
  fold_keys(Keys, Fun, Extra) ->
      lists:foldr(fun(Key, Acc) ->
  			try Fun(Key, Extra) of
  			    Value -> [{Key,Value}|Acc]
  			catch
  			    _:_ -> Acc
  			end
  		end, [], Keys).
  
  %%%----------------------------------------------------------------
  log_error(Reason) ->
      Report = io_lib:format("Erlang ssh connection handler failed with reason:~n"
  			   "    ~p~n"
  