We define an extension of a second-order type system with records
and operations on them, including record concatenation.
Our aim is to model the most important concepts in object-oriented languages
in a type system with subtyping. Such a model needs a form of record
concatenation.
The novelty in our approach is that intersection types are used for record
concatenation.
We give examples of how object-oriented concepts can be modelled and show how
the system can be translated to a type system without subtyping.