maybe lazy val this so it only gets evaluated once.