Very large update.

Many things changed.