- get rid of deferreds and use promises everywhere