refactored to use internal private var