preliminary Python 3 support