Add promises
Remake pubsub and models to promises