complete rewrite to use shared dictionary rather than events. much more efficient