changed public properties to protected