also, please keep things concise, having some functions return a promise, others not etc might get confusing.