better handle_call api