Python 3 full compatibility