Some methods in StructureComponent didn't need to be abstract, as a default implementation would suffice for most cases.