changed from private to protected such that sub-classes can reuse methods and variables