Updated for Python 3