—Software reuse is an important key in developing software systems in a short time with low cost and fewer errors. Traits were introduced to provide fine-grained reusable elements so as to avoid the issues of various forms of inheritance. In spite of being powerful, traits are not used much in software development, mostly because of neither being available in general purpose programming languages nor at the modeling level. In addition, traits suffer from not having control over their clients, which result in a lack of reusability and incorrect usage respectively. In this paper, we propose applying traits to model driven software development. Traits are extended with modeling elements such as associations, state machines, and constraints for level of abstraction. In addition, template parameters are integrated with associations in order to increase genericity l of abstraction. Traits will be extended with required interfaces to enable structural control over their clients. These featu...