or perhaps a lazy val (and also transient)?