Complete Rewrite
see Readme.md