add basic event support