directive & public