events: WIP basic observer API