Software modifications are often systematic. Adding features and fixing bugs often require similar, but not identical, changes to many code locations. In this talk, I will present three research themes on how to support systematic changes during software evolution. First, I will present LASE, an approach that automates systematic edits by learning context-aware edit scripts from examples. It handles both issues of recommending change locations and applying context-aware customized transformation. Second, I will present a field study of refactoring benefits and challenges at Microsoft. It is widely believed that refactoring improves software quality and developer productivity. However, few empirical studies quantitatively assess refactoring benefits. Our analysis of Windows 7 version history finds that the binary modules refactored by a designated refactoring team experienced significant reduction in the number of inter-module dependencies and post-release defects, indicating a tangible benefit of refactoring. Finally, I will present refactoring reconstruction and advanced program differencing techniques that detect systematic changes from program versions to help developers during peer code reviews.