change ComponentCollection to derive from HashSet; add MiscellaneousComponent