Almost final draft. Feature complete rewrite since practice talk.