depend less on 3rd parties to be Py2/3 compatible