TotEm is a completely user-expandable object-oriented approach to emulation design. It is meant as a replacement to monolithic emulators like M.A.M.E. or the like.
The design consists of a central core backbone, which loads in the modules necessary for the architecture you want to emulate. These modules (as well as the listing of the modules and ROM files needed) are determined at runtime. Some modules can have different versions available as well. For example, you might have a super fast CPU core for running on lightweight computers, as well as a more accurate but slower core, as well as another version with debugging capabilities.
It also contains a method for loading these modules from multiple locations, as well as retrieving them over the net if needed. This allows for the download to be very small, and only the needed cores are downloaded as you need them. It also allows for the emulator to be contained on a read-only storage device (CD-ROM), and perhaps have updated or different cores to be on a read/write secondary storage device.