add methods to support properties to Component
refactor composites into immutable classes