change private members into protected to allow usage in extended class