help: move duplicated function_exists() check to __invoke()