cherry-pick and rebase reviewed
fast-forward reviewed
fix #9 and pull in the interaction diagram