implement events/client callbacks