Much of this is a work in progress.