change private to protected to enable subclassing
change to protected to enable subclassing
Merged