it is consistent with the rest of the module, and this way we can easily change the implementation when we want to support python 3.2 for example...