I'm trying to expand the signals sent out as status information changes for buddies...

I'm confused about GaimPresence.  Why is there not a one-to-one buddy-presence relationship?  In what situation will gaim_presence_get_buddies() return a list of more than one buddy?  When sending out a signal that a buddy's presence changed, is the appropriate place to do it within the for() loop of the prpl.c accessor, e.g. gaim_prpl_got_user_login_time(), or within the status.c method, e.g. gaim_presence_set_login_time()? The latter seems better, but then we've got:

for buddy = gaim_find_buddies(account, name) {
    find the presence for buddy
    update the presence
    for presencebuddy = gaim_presence_get_buddies(presence) {
        send out a signal for presencebuddy

I get the feeling I'm overcomplicating or misreading something.  Help! :)