module-based model