lots, including abandoning inner classes and giving a precise ordering to inheritance