def rpc(self, feature, cmd, *args, **kw):
        """Send an RPC call to this module, interpret the return value
        according to the result_type kw argument.  Unless raise keyword
        is passed with value False, raise an RPCException if the command
        is not successful.
        """

        rpc_id = (feature << 8 | cmd)

        result_format = _create_resp_format(kw.get('result_type'), kw.get('result_format'))
        arg_format = kw.get('arg_format')
        if arg_format is None:
            arg_format = _create_arg_format(args)

        passed_kw = {}
        if 'timeout' in kw:
            passed_kw['timeout'] = kw['timeout']

        response = self.rpc_v2(rpc_id, arg_format, result_format, *args, **passed_kw)

        old_return = kw.get('result_type')
        if old_return is not None:
            return _create_old_return_value(response, *old_return)

        return response
Send an RPC call to this module, interpret the return value
        according to the result_type kw argument.  Unless raise keyword
        is passed with value False, raise an RPCException if the command
        is not successful.