plugin/hooks interface