Why `protected`? Seems like this is only ever used internally; could we get away with a `private` member instead?