why a def and not a val?