First pass at autogenerating ComponentEnums
ComponentFactory thing part 2
ComponentFactory part3