move pubsub into its own package and make it be able to have independent namespaces
make keychanges use pubsub and make mons use keychanges