Initial rewrite.
Small edits