use xsub/xpub model for pub/sub