Also, in Spark we try not to use `protected[*]`, since it's not exactly clear what that does. I think these can just be `private`?