improved componentset api