add Component interface