use function_exists only once, as necessary