manage abstract component type