py2/3 portability