using protected instead of functions