Major refactoring and use of PostSharp for INotifyPropertyChanged, Aggregation, and Undo/Redo