compatible for py2 and py3.