Add ComponentGroups, refactored Interaction, and some extra setters