Modules implement groups of related ideas. This makes them simple to understand, easy to combine and reliable in use. Modules may be software applications or components, hardware, protocols or a hybrid.
Modules encapsulate the properties of a system into logical units without resorting to kludges.
Simple, well understood components are combined to provide positive emergent behaviour. In conventional design, modules are homogeneous. This creates design conflicts and scalability problems. Where modules are heterogeneous, conflicting design constraints are eliminated and modules work seemlessly. The use of open architecture container formats allows specialist codecs to interoperate while maintaining backward compatibility and forward compatability.