components should be able to only have a type