public functions before protected functions