compatibility with python2 and 3