Huge reorganization and update.