model-driven modules