reorganized callbacks