Add better Python 3 support