Updated to work with Python 3