Just FYI, you can write something of the form:

    option.map(fn).getOrElse(thing)

as:

    option.fold(thing)(fn)

Which is quite nice and makes good sense if you're used to e.g. `List`'s fold.