improve python 3 compatibility