put everything in boost::signals namespace, restructure directories, make fused/unfused a template parameter, connection mechanism is more easily extensible and modular, all components can accept both fused and unfused signals, storage is implemented through a generic component, separate send signal from operator().