Updated for Python 3.0