This is essentially v3 of part I of the blog challenge in socrates.