Unfortunately, UPnP spec says that ordering is important and compulsory. Some testing indicates that Sonos might not mind, but I don't think we can rely upon their non-compliance with the spec. Ordered dicts are not an option, since you have to initialise them like this: OrderedDict([('key1', 'value1'), ('key2', 'value2')]) or they lose their ordering, and this is no better than using a list of tuples.  unwrap_args returns a dict because we don't care about ordering, and a dict is much easier to extract the value you want from.