split definition of component from naming of component

This allows the creation of anonymous components.