Updated for upload to PyPI