py3k compatibility