There is a need for decoupling of low level details of implementations from application logic, the only solution is to separate concerns. MDSD gives us the ability to define the level abstraction properly instead of relying on other to provide us with general purpose solutions.