Ported to Python 3! :D