long overdue Python 3 support