callback invoker refactored