So much rewritten, so many additions. Just consult the readme.