any reason why this is `def` and not a `val` ?