This paper presents a canonical extension of object-oriented development for roles and context-dependent behavior. We syntactically distinguish between classes as natural types and roles as role types. Thereby a class contains roles and their dependencies. The visibility and the access to an object de- pend on its current role. We develop powerful facilities to organize the dependencies of roles: equality and functional dependencies between attributes, equality dependencies be- tween methods and complex dependencies called inheritance and class dependencies. Our approach supports information hiding as well as encapsulation.