The contribution of this work is to synthesize a collection of patterns and techniques that can be used to implement language components, using traits. Separate the syntactic concern from the construction of the abstract representation of the language. Separate the abstract representation of the language from the implementation of its semantics. Modularize the implementation of the semantics in distinct phases; decouple the abstract representation from the semantics of each phase, possibly expressing dependencies between phases. The benefit of representing language concepts through traits is an improved modularization, thereby simplifying code sharing across language implementations. Moreover, since traits in most languages can be written as separate code units, employing them in the modularization of a language make it possible to compile each language component separately and independently from the others, allowing them to be shared as binary assets, that, nevertheless, can be still combined together post-compilation. Scala׳s trait implementation has been used to demonstrate our contribution.