Massive upgrade; see diffs