In this paper we consider the functionality that a rights expression language (REL) should provide within a digital rights management (DRM) environment. We begin by noting the dearth of applications that make use of RELs, despite the fact that they have now been available since the late 1990's. We posit that one of the main impediments to the use of RELs is the complexity associated with understanding and using them. This results from the fact that the functionality needed to handle a wide variety of possible DRM scenarios is typically built into a REL, and it is often difficult to cleanly partition out only those pieces needed by a particular DRM application. Basing DRM system design on a layered architecture provides one way of achieving a partitioning and points to the need for a simple REL that is exclusively responsible for the expression of rights, while pushing much of the functionality found in current RELs into higher system layers. In order to demonstrate the usefulness of this approach, we provide an example implementation dealing with DRM-based negotiations.