Modularity is a fundamental technique used for the composition of large software systems. Under modularity, design decisions that are likely to change are encapsulated within individual modules. However, programmers also employ crosscutting concepts, such as design patterns and programming idioms, which cannot be effectively modularized. Consequently, implementations of these crosscutting concepts can be expensive to change, even when the code is well-structured. In this dissertation, I describe an extension to the refactoring paradigm that provides for the modular maintenance of crosscutting concepts, supporting both substitutability of implementations and the checking of essential constraints. This extension was realized through the Arcum framework, a plug-in for Eclipse that allows programmers to describe the use of their crosscutting programming concepts with a declarative language. I present the conceptual underpinnings of the Arcum approach, and show how Arcum can be used to address several classical software engineering problems. I also present evidence from a user study of three pairs of programmers showing that Arcum can be easy to learn and use.