component interface