client/server communication is now promise-based