Updating for Python 2/3 support, adding tests