respect callback order
manage things more correctly