refactor the `_call` method