split definition of component from naming of component

This allows the creation of anonymous components.
Merge pull request #11 from tomconnors/master

split definition of component from naming of component