reduce complexity of c_call splitting up prepare_args and handle_result