I've proposed a slight alteration of this below:

Settings for a SparkContext derived from a supplied Typesafe config object. Required properties will be assigned to default values if they are not supplied in the passed-in config. Optional properties are defined as defs that return a [[scala.Option]] of the expected type.

Once a Settings object is created, all values are immutable including optional values.