make fields private and provide protected getters