python 3 compatibility changes