yet another publish/subscribe implementation