Made some private methods protected to allow customization in sub
classes