Full Python 3 and Python 2 support