added IComponent interface