MAJOR changes, near final submission version.