better python 3 compatibility