This is still a draft. All suggestions welcome.