put some members protected instead of private