31.10.24 summarized by @lealishalabi