Collected changes to support Python 2.6+ and Python 3.1+