corrected to work with python 2.6+