Note that there exist different trait models. In the original trait model, Stateless Traits [1,2], traits only define methods, but not instance variables. Stateful Traits [3] extends this model and lets traits define state. Freezable Traits [4] extend stateless traits with a visibility mechanism.