is_callable instead of method_exists to support __call method