The abstract core is like the main idea of a story. When a domain model becomes too complex, it’s hard to see the big picture. If different parts of the model interact a lot, we may end up with too many connections between them or the interactions become unclear.
To solve this, we need to identify the most important concepts in the model and separate them into their own group. This group represents the main interactions between significant components. We put this abstract model in its own module, while the detailed implementation classes are kept in separate modules based on their specific areas of focus. This way, we can see the overall picture more clearly and have a better organized system.