has_call refactor