Modelling languages often lack explicit support for reuse, and there are very few libraries of reusable models available to developers. This is especially true for use cases, one of the most wide-spread modelling languages used to describe systems at a high level of abstraction during requirements elicitation. This paper proposes Concern-Oriented Use Cases (CoUC), a use case modelling language designed to support planned and opportunistic reuse. CoUC makes it possible to create libraries of generic recurring interaction scenarios, provides means to modularize crosscutting interaction patterns and supports feature-oriented scenario extensions. We provide a metamodel that defines the hierarchical structure and behavioural scenario descriptions for use cases. We further elaborate a use case composition algorithm capable of combining the reusing and reused use cases. To validate our approach, the CoUC language and composition algorithm have been implemented in the TouchCORE modelling tool, and applied to model three examples which showcase feature-oriented use case extension, reuse of a generic use case, as well as software product line development and evolution.