not sure this needs to be private. protected?