better python 3 support