Scala has a rich type system and Traits are a part of it which helps implement mixin behaviour. As their name reveals, Traits are usually used to represent a distinct feature or aspect that is normally orthogonal to the responsibility of a concrete type or at least of a certain instance.[22] For example, the ability to sing is modeled as such an orthogonal feature: it could be applied to Birds, Persons, etc.