make children protected instead of private