first version of a pubsub implementation
no need to return the channel