more modularization and flexibility