Designing and maintaining a huge class model is a very complex task. When an object oriented software or model becomes bigger and bigger, duplicated elements start to appear, decreasing the readability and the maintainability of the software. In this paper, we present an approach, implemented in a tool and validated by a case study, that helps software architects designing and improving their class models. Since many different languages (UML, EMOF, Java, ...) allow to express class models, this approach has been made generic i.e. capable of dealing with any language described by a meta-model. Using this approach, software architects will be able to design and maintain more efficiently their class models.