Aspect-Oriented Programming enables developers to manage, in a more modular fashion, implementations of crosscutting concerns that might be scattered or tangled if aspect-oriented techniques were not utilized. Our interest in this paper is in considering techniques for specifying precise properties of aspects. In particular, we are interested in specifying reusable aspects; i.e., aspects that correspond to crosscutting concerns that occur in many systems. These abstract aspects can be reused in various systems where a particular concern is applicable. Although there has been work on issues related to reasoning about aspects and the behaviors of aspect-oriented systems, specifying reusable abstract aspects seems to have received little attention. We adopt the following approach to specifying reusable aspects and how they are specialized in individual systems. We specify a reusable aspect in terms of a contract; the contract is written in terms of abstraction concepts that will correspond to portions that are left abstract in the reusable aspect. This contract will be specialized by a subcontract corresponding to the subaspect that defines how the abstract aspect is specialized for use in a given system. While the aspect contract is applicable to all systems built using the reusable aspect, the contract plus the subcontract define the behavior corresponding to the given system. We illustrate the approach by applying it to a simple example.