encapsulate pub-sub in open menus app