trying to incorporate the pubsub model
added pubsub to main
big commit