callback are rewritten with Q promises