Major changes. See source files for details.