needed subcomponents