does it need to be a val? Can it be a def?