Ported to Python 3.3