first draft of publish/subscribe/unsubscribe