We present aspect-oriented programming in Jiazzi. Jiazzi enhances Java with separately compiled, externally linked code modules called units. Units can act as effective “aspect” constructs with the ability to separate crosscutting concern code in a non-invasive and safe way. Unit linking provides a convenient way for programmers to explicitly control the inclusion and configuration of code that implements a concern, while separate compilation of units enhances the independent development and deployment of the concern. The expressiveness of concern separation is enhanced by units in two ways. First, classes can be made open to the addition of new behavior, fields, and methods after they are initially defined, which enables the direct modularization of concerns whose code crosscut object boundaries. Second, the signatures of methods and classes can also be made open to refinement, which permits more aggressive modularization by isolating the naming and calling requirements of a concern implementation.