Inadequate documentation of software design has been known to be a barrier for developers. Interestingly, several relevant object-oriented systems have their design documented using key classes, which are meant to represent key concepts of the systems. In order to fill the gap of under-documented design, we present Keecle, an approach for detecting a predefined number of key classes in a semi-automatic way. The main challenge is to reduce the space of potentially thousands of classes to just a few representatives of the main concepts of a system, while maintaining high precision. The approach is evaluated with 13 systems in order to assess its correctness. The ground-truth is obtained either from the original documentation, or from third-party, or from the respective developers. The results were analyzed in terms of precision and recall, and have shown to be superior compared to the state-of-the-art approach. In order to evaluate if key classes are more critical from the design point of view, we evaluated whether they are associated with cohesion and coupling metrics. We found that although key classes, in general, are critical from the point of view of design, there are other classes that are also critical, suggesting that being aware of key classes encompass information not available in structural metrics, and could be useful as a additional facet for design assessment.