protected functions are listed separately