maybe this is a lazy val, so it is never called twice.