A lot has been written.
To be added.
If you see mistakes or want to suggest changes, please create an issue on the source repository.