Updated to support both python 2 and 3 together.