Because this is private[spark], I don't think users will be able to make a variable of this type. You guys need to rethink this design (unless I'm missing something). We *want* users to be able to create a SparkConf object, set properties on it, and pass it as one of the flags to SparkContext. If you want the object to be immutable, then the class itself should still be visible to user code, but it should have no setters. Personally I'd even be fine of the object was mutable; I think that's simpler. Also, if it helps to get rid of Typesafe Config, or only use it to read the defaults (and not to pass stuff around), that's fine. But the current API seems awkward for both our internal use and for users.