refactor: public and private