better callback ordering