Data encapsulation, abstract data types and classes are terms associated with a concept not fully clarified or accepted. This paper presents a class concept that differs slightly from previous definitions by the associated dynamics. This allows us to interpret nested and recursive classes as well as class parameters. We will distinguish between types and classes and permit types as parameters in a way that allows simple implementation. A number of examples will be given to illustrate the class concept itself and its application to access control problems for concurrent programs. Synchronization primitives will be viewed as classes and the need for explicit high-level constructs like monitors is questioned. Keywords: Programming language, encapsulation, abstract data type, class, object, synchronization, monitor