anchor.diff:  end;
   
   procedure TIRC.OnNickNameListReceive(ASender: TIdContext; const AChannel: String; ANicknameList: TStrings);
  -var
  -  S: string;
  -begin
  -  AddChannelMessage(AChannel, 'Nick list');
  -  for S in ANicknameList do;
  -    AddChannelMessage(AChannel, S);
  +begin
  +  FOnNickListReceived(AChannel, ANicknameList);
   end;
   
   procedure TIRC.OnJoin(ASender: TIdContext; const ANickname, AHost, AChannel: String);
   begin
  +  FOnUserJoined(AChannel, ANickname);
     FLog.Add('Joined: ' + ANickname + ' - ' + AHost + ' - ' + AChannel);
     AddChannelMessage(AChannel, 'Joined: ' + ANickname);
  +end;
  +
  +procedure TIRC.OnLeave(ASender: TIdContext; const ANickname, AHost, AChannel, APartMessage: String);
  +begin
  +  FOnUserLeft(AChannel, ANickname);
  +  AddChannelMessage(AChannel, 'User left: ' + ANickname + ' -' + APartMessage);
   end;
   
   procedure TIRC.OnWelcome(ASender: TIdContext; const AMsg: String);
  
positive.code:   FIdIRC.OnPrivateMessage:= @OnPrivateMessage;
    FIdIRC.OnNicknamesListReceived:= @OnNickNameListReceive;
    FIdIRC.OnJoin := @OnJoin;
    FIdIRC.OnServerWelcome := @OnWelcome;
  end;
  
  
negative.code:       procedure OnPrivateMessage(ASender: TIdContext; const ANickname, AHost, ATarget, AMessage: String);
        procedure OnNickNameListReceive(ASender: TIdContext; const AChannel: String; ANicknameList: TStrings);
        procedure OnJoin(ASender: TIdContext; const ANickname, AHost, AChannel: String);
        procedure OnLeave(ASender: TIdContext; const ANickname, AHost, AChannel, APartMessage: String);
        procedure OnWelcome(ASender: TIdContext; const AMsg: String);
      public
        property Log: TStrings read FLog write FLog;
        property ActiveChannel: string read FActiveChannel write FActiveChannel;
        property OnChannelJoined: TOnChannelJoined read FOnChannelJoined write FOnChannelJoined;
        property OnNickListReceived: TOnNickListReceived read FOnNickListReceived write FOnNickListReceived;
        property OnUserJoined: TOnUserEvent read FOnUserJoined write FOnUserJoined;
        property OnUserLeft: TOnUserEvent read FOnUserLeft write FOnUserLeft;
        property Ready: Boolean read FReady;
        procedure AutoJoinChannels;
        procedure Connect;
  