moved callback invocation into behavior