introduce Q to improve structure of callback.