Convert private to protected to facilitate custom extensions