python3: works with Python 2 and Python 3 thanks to `with_metaclass` from the six package (copied into the repo into the existing six.py) resolves #4