added "call" hook, refactored hook triggering