add Python3 support