python2 and 3 compatibility