The quality of software systems heavily depends on their structure, which affects maintainability and readability. However, the ability of humans to cope with the complexity of large software systems is limited. To support reengineering large software systems, software clustering techniques that maximize module cohesion and minimize inter-modular coupling have been developed. The main drawback of these approaches is that they might pull apart elements that were thoughtfully placed together. This paper describes how strongly connected component analysis, dominance analysis, and intra-modular similarity clustering can be applied to identify and to preserve cohesive structures in order to improve the result of reengineering. The use of the proposed method allows a significant reduction of the number of component movements. As a result, the probability of false component movements is reduced. The proposed approach is illustrated by statistics and examples from 18 open source Java projects.