change the abstract class from private to protected