scheme: public or internal